2022年2022年理解String参数传递 .pdf
-
资源ID:39711337
资源大小:45.28KB
全文页数:3页
- 资源格式: PDF
下载积分:4.3金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
2022年2022年理解String参数传递 .pdf
对于 JAVA 来说,基本数据类型的参数传递是值传递,在方法里面修改对外部没影响。而对于对象类型的参数传递是传引用,也就是说是传地址。但对于 Strnig,Integer等类型来说就有不同了,看以下代码。Java 代码1.publicclassParameter2.publicstaticvoidmain(Stringargs)3.Stringa=newString(4);4.Stringa1=a;5.checekParameter1(a1);6.System.out.println(a);7.8.9.publicstaticvoidchecekParameter1(Stringa2)10.a2=5;11.12.它的输出依然是4,方法不会改变它的值。按我的理解是String a=new String(4);它会先在常量池创建一个对象,然后把它复制后在堆里也创建了一个对象。String a1=a;这句话来说,是把a 在常量池的地址赋给a1,当它传递给 a2 时,依然是把a 在常量池的地址赋给a2。a2=5 这句它会先在常量池找有没5这个字符串,没的话就会创建一个新的对象。所以a2 的地址发生了变化,但 a 的地址没发生改变,所以输出的依然是4。按我的理解:String a1=a;这句代码传给a1 的是 new String(4)的地址,不过当调用那个方法的时候,会新建一个a2 的变量指向 new String(4)的地址,所以当你改变a2 的时候并不会改变a 和 a1 的值,只是将a2 的地址指向了“5”。按我的理解:String a1=a;这句代码传给a1 的是 new String(4)的地址,不过当调用那个方法的时候,会新建一个a2 的变量指向 new String(4)的地址,所以当你改变a2 的时候并不会改变a 和 a1 的值,只是将a2 的地址指向了“5”。对的.可以通过改造下代码来验证哦.Java 代码1.publicclassParameter2.publicstaticvoidmain(Stringargs)3.Stringa=newString(4);4.checekParameter1(a);5.System.out.println(a);6.7.8.publicstaticvoidchecekParameter1(Stringa2)9.System.out.println(a2=4);名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 3 页 -10.a2=5;11.12.我认为 a2 指向的地址应该是常量池中a 的地址,而不是堆中的Java 代码1.StrungBuffers=new StringBuffer(hello);2.t1(s);3.System.out.println(s);4.5.t2(s);6.System.out.println(s);7.8.9.privatevoidt1(StringBuffers)10.s=newStringBuffer(olleh);11.12.13.privatevoidt2(StringBuffers)14.s.append(world!);15.java 中 super()与 this()的区别This():当前类的对象,super 父类对象,所有的资源都可以访问。Super():在子类访问父类的成员和行为,必须受类继承规则的约束,在构造函数中,如果第一行没有写super(),编译器会自动插入.但是如果父类没有不带参数的构造函数,或这个函数被私有化了(用 private 修饰).此时你必须加入对父类的实例化构造.而名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 3 页 -this 就没有这个要求,因为它本身就进行实例化的构造。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 3 页 -