这个大家自己想一下然后再试运行一下,没准结果会令你大吃一惊。
public static void main(String[] args) {
final String s="aaa";
final String t="bbb";
copyString(s,t);
System.out.println("s:"+s);
System.out.println("t:"+t);
final char[] sc=s.toCharArray();
final char[] tc=t.toCharArray();
copyChar(sc,tc);
System.out.println("s1:"+s);
System.out.println("t1:"+t);
}
private static void copyString(String s,String t){
t=s;
}
private static void copyChar(char[] sc, char[] tc){
for(int i=0;i<sc.length;i++)
tc[i]=sc[i];
}
答案是s:aaa
t:bbb
s1:aaa
t1:bbb
这就意味这两个方法都没起到应有的作用;第一个copyString(String s,String t)方法没变的原因是因为String为final对象,t=s实际是将复制的s对象交给t,等于将新new出的对象交给t引用,对于传入对象没有任何修改;第二个copyChar(char[] sc, char[] tc)方法实际上改变的是char[] tc对象,而没有改变s对象。
下面说一下参数传递
还是有些人问java到底什么情况是值传递什么情况是引用传递,这个问题本身就是错误的,java本身只有值传递,无论是基本类型还是对象。从编译原理的角度讲,所有那些无法通过形参来修改实参本身的传递机制都是“值传递”,在JAVA中,你只能通过在形参上调用方法来修改实参所引用的那个对象,却修改不了实参本身(不能使它引用到另个对象);
基本类型复制值:
int a=10;
int b=12;
copyInt(a,b);
System.out.println("a:"+a);
System.out.println("b:"+b);
private static void copyInt(int s,int t){
t=s;
}
输出仍是a:10 b:12
对象类型复制引用:
char[] sc=s.toCharArray();
char[] tc=t.toCharArray();
copyChar(sc,tc);
for(char s1:sc){
System.out.println("s1:"+s1);
}
for(char t1:tc){
System.out.println("t1:"+t1);
}
private static void copyChar(final char[] sc, char[] tc){
for(int i=0;i<sc.length;i++)
tc[i]=sc[i];
}
输出
s1:a
s1:a
s1:a
t1:a
t1:a
t1:a
至于String对象以及Integer 等包装类,它们本身都是final类型,所以每次给它们赋值都是重新new出对象,不过这一切都在java内部运行而已。明白这个后,第一个例子看起来也就不那么难以理解了
分享到:
相关推荐
java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题...
JAVA面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题
面试题包含了不同技术层面的面试问题,同时也能对一些没有面试开发经验的小白给予不可估量的包装, 让你的薪水绝对翻倍, 本人亲试有效.Java面试题84集、java面试专属及面试必问课程,所有的面试题有视屏讲解, 解答方案....
Java 面试题 Java 面试题 Java 面试题 Java 面试题 Java 面试题 Java 面试题 Java 面试题 Java 面试题 Java 面试题 Java 面试题
JavaOOP面试题 Java集合/泛型面试题 Java异常面试题 Java中的IO与NIO面试题 Java反射面试题 Java序列化面试题 Java注解面试题 多线程&并发面试题 JVM面试题 Mysql面试题 Redis面试题 Memcached面试题 MongoDB面试题 ...
2023java最新阿里巴巴面试题2023java最新阿里巴巴面试题2023java最新阿里巴巴面试题2023java最新阿里巴巴面试题2023java最新阿里巴巴面试题2023java最新阿里巴巴面试题2023java最新阿里巴巴面试题2023java最新阿里...
北大青鸟JAVA面试题北大青鸟JAVA面试题北大青鸟JAVA面试题北大青鸟JAVA面试题北大青鸟JAVA面试题北大青鸟JAVA面试题北大青鸟JAVA面试题北大青鸟JAVA面试题北大青鸟JAVA面试题北大青鸟JAVA面试题北大青鸟JAVA面试题...
java面试题java面试题18道java面试题18道java面试题18道java面试题java面试题18道java面试题18道java面试题18道java面试题java面试题18道java面试题18道java面试题18道java面试题java面试题18道java面试题18道java...
最全的j2EE面试题,题量大、经典,是我面试的整理试题 1、java笔试题大集合 2、各个公司面试题 3、J2EE初学者面试题 4、J2EE面试题(打码查错题) 5、java_华为笔试题 ...15、张孝祥整理Java就业面试题大全
Java面试题以及答案整理
java面试题20道java面试题20道java面试题20道java面试题20道java面试题20道java面试题20道java面试题20道java面试题20道java面试题20道java面试题20道java面试题20道java面试题20道java面试题20道java面试题20道java...
java面试题大汇总(非常重要)java面试题大汇总(非常重要)java面试题大汇总(非常重要)java面试题大汇总(非常重要)java面试题大汇总(非常重要)java面试题大汇总(非常重要)java面试题大汇总(非常重要)java面试题大汇总...
Java面试题
最新各大公司企业真实面试题-Java面试题最新各大公司企业真实面试题-Java面试题
JAVA面试题2019
java面试题总结资料
Java面试题Java面试题Java面试题Java面试题Java面试题Java面试题Java面试题Java面试题
java面试题整理java面试题整理java面试题整理java面试题整理java面试题整理java面试题整理java面试题整理java面试题整理