在java中方法参数传递中,基本类型传值,对象类型传地址。
java中的基本类型包括:
byte、char、short、int、boolean、long、float、double。
基本类型 | 包装类 | 字节长度 | 默认值 |
byte | Byte | 1 | 0 |
char | Char | 2 | u0000 |
short | Short | 2 | 0 |
int | Integer | 4 | 0 |
long | Long | 8 | 0l或0L |
float | Float | 4 | 0.0f或0.0F |
double | Double | 8 | 0.0 |
boolean | Boolean | 1 | false |
代码演示
public class MyTest01 {
public static void main(String[] args) {
int a = 100;
changeBaseType( a );
System.out.println("a="+ a);
MyObject myObject = new MyObject();
myObject.a=100;
changeObject( myObject);
System.out.println("myObject.a = " + myObject.a );
}
public static void changeBaseType(int n){
n++;
}
public static void changeObject( MyObject mo ){
mo.a++;
}
static class MyObject {
int a;
}
}
运行程序输出结果如下:
解释说明:
在main主函数中定义了一个变量a,并且给a赋值为100。接下来调用changeBaseType()函数,并将a的值传递给n,方法执行完成后,n的值加一,此时n=11,但是a的值仍然是10。所以输出的结果a=10;
之后创建了一个MyObject对象,并给对象中的属性a赋值为100.接下来调用changeObject()函数,将实参myObject传递给mo形参。要注意的是myObject是一个引用,保存的是一个对象的地址,因此进行传递时,传递给 mo的值就是一个对象的地址。这样实参 myObject引用和形参 mo 引用中保存的内存地址相同,也就是说,这两个引用指向同一个对象。
示意图如下:
如果此文章能让你豁然开朗,我倍感荣幸。知识需要积累,需要在和别人不断交流,碰撞沉淀下来的知识自己才理解的更加深刻。