JavaOO基础IIOO基础基础II-----2个基础
问题总结
主讲:主讲:曲美霞
2个基础问题个基础问题:个基础问题
1Java中参数传递中参数传递2Java引用相等和对象相等引用相等和对象相等
1Java方法中参数传递方法中参数传递
?Java方法中定义的参数可以是什么类方法中定义的参数可以是什么类型?
补充:Java中数据类型中数据类型补充
基本数据类型(primitive)
浮点类型布尔数据类型(boolean)字符类型(char)字符类型整数类型2字节字节(16bit)字节2字节字节(16bit)字节
byteshortintlongfl
oat
1字节字节(8bit)字节2字节字节(16bit)字节4字节字节(32bit)字节8字节字节(64bit)字节4字节字节(32bit)字节
字节(64bit)字节double8字节
引用数据类型(reference)
类(class)接口(interface)接口数组(array)数组
(1)Primitivetype
问题:问题passby?
publicclassPassByValuePrimitive{publicvoidtestPassInt(inti){i=123;}publicstaticvoidmain(String[]args){inti=12;PassByValuePrimitivebpv=newPassByValuePrimitive();bpv.testPassInt(i);System.out.println(i);}}
结论1:
Java对于基本数据类型传递的是值.对于基本数据类型传递的是值基本数据类型传递的是即passbyvalue注明:可以理解在方法传递参数值时,传递给注明可以理解在方法传递参数值时传递给
方法的是原始值的副本.(copy)方法的是原始值的副本
(2)Referencetype
问题:问题passby?
publicclassPassByValueReference1{publicvoidtestPassRef(Pointp){p=null;System.out.println("callingin...pis"+p);}publicstaticvoidmain(String[]args){PassByValueReference1bpv=newPassByValueReference1();Pointp=newPoint();System.out.println("beforecallingthemethod..pis"+p);System.out.println("callingthetestpassRefmethod");bpv.testPassRef(p);System.out.println("returnedfromthetestpassRefmethod");System.out.println("pis"+p);}}classPoint{intx;inty;}
结论2:
Java对于引用数据类型传递的是值.对于引用数据类型传递的是值引用数据类型传递的是即passbyvalue注明:可以理解在方法传递参数值时,传递给注明可以理解在方法传递参数值时传递给
引用值的副本方法的是引用值的副本.(copy)方法的是引用值的副本
PPointX:0
P
Y:0
publicclassPassByValueReference2{publicvoidtestPassRe(Pointp){p.x=12;p.y=13;}publicstaticvoidmain(String[]args){PassByValueReference2bpv=newPassByValueReference2();Pointp=newPoint();p.x=11;p.y=11;System.out.println("beforecallingp.xis"+p.x);System.out.println("beforecallingp.yis"+p.y);bpv.testPassRe(p);System.out.println("aftercallingp.xis"+p.x);System.out.println("aftercallingp.yis"+p.y);}}classPoint{intx;inty;}
总结:
Java中任何类型的数据当作为参数传递中任何类型的数据当作为参数传递给一个方法时按值传递的即passbyvalue