package test;
/**
*
* @author KingSlayer
*/
public class Main {
/**
* @param args the command line arguments
* java分两种数据类型
* 1. 基本类型:char、byte、short、int、long、float、double、boolean
* 2. 引用类型:类、接口、数组 (基本类型数组和对象数组)。 可以当做指针了解。
*
*
*
* 1. 对于基本类型,在方法体内对方法参数进行重新赋值,并不会改变原有变量的值。
* 2. 对于引用类型,在方法体内对方法参数进行重新赋予引用,并不会改变原有变量所持有的引用。
* 就像两个指针指向一个地址,你对所指向的类型进行修改时可以的,
* 但是直接赋值就相当于直接给予了一个新的地址,源地址的东西没有改变。
* (String类型没有能直接改变自己属性的方法)
* 3. 方法体内对参数进行运算,不影响原有变量的值。
* 4. 方法体内对参数所指向对象的属性进行运算,将改变原有变量所指向对象的属性值。
*/
public Main(int i){
attr = i;
}
public static void swapInt(int i1, int i2){
System.out.println("Java没有指针和引用,所以int型的肯定是值传递了,这个应该没有争议");
}
public static void changeString(String str){
str="new String";
}
public static void addDivider(){
System.out.println("-------------华丽的分割线----------------");
}
public static void changeStringBuffer(StringBuffer strB1, StringBuffer strB2){
strB1.append(" has been changed!");
strB2 = strB1;
}
public static void changeClass(Main a){
a.attr=1;
}
public static void swapClass(Main a, Main b){
Main c = a;
a = b;
b = c;
}
public static void main(String[] args) {
// TODO code application logic here
int i1 = 0, i2 = 0;
swapInt(i1,i2);
addDivider();
String str = "String str";
changeString(str);
System.out.println(str);
addDivider();
StringBuffer strB1 = new StringBuffer("StringBuffer strB");
StringBuffer strB2 = new StringBuffer("StringBuffer strB");
changeStringBuffer(strB1,strB2);
System.out.println(strB1);
System.out.println(strB2);
Main a = new Main(0);
System.out.print("修改属性是可以的:begin:" + a.attr);
changeClass(a);
System.out.println(" end:" + a.attr);
Main b = new Main(0);
addDivider();
System.out.print("原来a"+a.attr+" b"+b.attr+"的值 ");
swapClass(a, b);
System.out.print("现在a"+a.attr+" b"+b.attr+"的值");
}
private int attr = 0;
}
结果:
run:
Java没有指针和引用,所以int型的肯定是值传递了,这个应该没有争议
-------------华丽的分割线----------------
String str
-------------华丽的分割线----------------
StringBuffer strB has been changed!
StringBuffer strB
修改属性是可以的:begin:0 end:1
-------------华丽的分割线----------------
原来a1 b0的值 现在a1 b0的值成功生成(总时间:0 秒)
//所以修改链表里面的指针是可以传递的
//修改数组里面的元素也是可以的
{
int[] a = {1, 2};
swap(a);
//result a[0]=2; a[1]=1;
}
public static void swap(int[] a){
int i = a[0];
a[0] = a[1];
a[1] = i;
}
分享到:
相关推荐
11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java...
13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递....
58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递...
Java 参数传递机制详解 Java 中的参数传递机制是一个经久不息的讨论话题,究竟是“传值”还是“传引用”,双方各执一词,互不相让。本文将通过详细的分析和实例,揭开 Java 参数传递机制的奥秘。 基本类型作为参数...
Java参数传递机制是编程中的重要概念,尤其是在Java中,它对于理解如何在方法间操作数据至关重要。本PPT深入探讨了这一主题,旨在帮助学习者彻底理解Java中的参数传递方式。 首先,我们要回顾面向对象的基本概念。...
Java参数传递机制是编程中非常重要的概念,它涉及到基本类型和引用类型的差异。在Java中,参数传递主要有两种方式:值传递(Value Passing)和引用传递(Reference Passing)。虽然Java官方文档并未明确提及引用传递...
这里详细的说明了,java参数传递的过程,引用传递,值传递
Java 参数传递机制是编程中的重要概念,尤其是在Java中,它涉及到“值传递”和“引用传递”的理解。这里我们将深入探讨这两个概念,并结合给定的示例代码进行解析。 首先,我们看“值传递”。在Java中,基本类型...
Java参数传递机制是一个常见的面试问题,它涉及到Java语言的基础特性。Java中参数传递的方式有两种理解:值传递和引用传递,但这两种说法实际上是对同一种机制的不同角度的描述。下面将详细解释这两种理解方式。 ...
### JNI中C和Java参数传递详解 #### 一、引言 Java Native Interface (JNI) 是Java平台标准的一部分,用于让Java代码与其他语言写的代码进行交互。本文将深入探讨在JNI环境中,C/C++和Java之间如何进行参数传递,...
Java参数传递机制是一个经常引起讨论的话题,尤其是在初学者和经验丰富的开发者之间。Java中参数传递的基本原则可以总结为:对于所有类型的参数,Java总是进行值传递。然而,对于基本类型和对象引用,"值传递"的概念...
java的参数传递对比,体现了值传递和引用传递的区别,是我在java入门是写的学习demo
Java中的参数传递机制是一个经常引起讨论的话题,尤其是在面试和学习过程中。Java的参数传递方式实际上是一种特殊的"值传递",通常被称为"按引用传递对象的引用",这与C++等语言中的引用传递有所不同。以下是对这个...
#### 一、Java参数传递的基本概念 在Java中,方法(或称为函数)可以通过参数来接收外部的数据,并且能够返回处理后的结果。参数的传递方式主要有两种:值传递(Pass-by-value)和引用传递(Pass-by-reference)。...
JAVA 参数传递方式实例浅析【按值传递与引用传递区别】 JAVA 参数传递方式实例浅析【按值传递与引用传递区别】是 JAVA 编程语言中的一种基本概念,对于 JAVA 开发者来说是非常重要的。本文将通过实例形式分析 JAVA ...
Java参数传递及值传递实现原理详解 Java语言中,参数传递是方法调用过程中的一种机制,讲述了Java参数传递及值传递实现原理详解。参数传递有两种方式:按值传递和按引用传递。 1. 按值传递(Call by Value) 按值...
java