`
fatasy3
  • 浏览: 2773 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

一个java面试题(关于传参)

    博客分类:
  • java
阅读更多
这个大家自己想一下然后再试运行一下,没准结果会令你大吃一惊。
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面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    面试题包含了不同技术层面的面试问题,同时也能对一些没有面试开发经验的小白给予不可估量的包装, 让你的薪水绝对翻倍, 本人亲试有效.Java面试题84集、java面试专属及面试必问课程,所有的面试题有视屏讲解, 解答方案....

    Java 面试题 Java 面试题

    Java 面试题 Java 面试题 Java 面试题 Java 面试题 Java 面试题 Java 面试题 Java 面试题 Java 面试题 Java 面试题 Java 面试题

    10万字总结java面试题和答案(八股文之一)Java面试题指南

    JavaOOP面试题 Java集合/泛型面试题 Java异常面试题 Java中的IO与NIO面试题 Java反射面试题 Java序列化面试题 Java注解面试题 多线程&并发面试题 JVM面试题 Mysql面试题 Redis面试题 Memcached面试题 MongoDB面试题 ...

    2023java最新阿里巴巴面试题,2023java最新阿里巴巴面试题

    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面试题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...

    java面试题,J2EE面试题 笔试题

    最全的j2EE面试题,题量大、经典,是我面试的整理试题 1、java笔试题大集合 2、各个公司面试题 3、J2EE初学者面试题 4、J2EE面试题(打码查错题) 5、java_华为笔试题 ...15、张孝祥整理Java就业面试题大全

    Java面试题以及答案整理.pdf

    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面试题20道java面试题20道java...

    java面试题大汇总(非常重要)

    java面试题大汇总(非常重要)java面试题大汇总(非常重要)java面试题大汇总(非常重要)java面试题大汇总(非常重要)java面试题大汇总(非常重要)java面试题大汇总(非常重要)java面试题大汇总(非常重要)java面试题大汇总...

    Java面试题2022

    Java面试题

    最新各大公司企业真实面试题-Java面试题

    最新各大公司企业真实面试题-Java面试题最新各大公司企业真实面试题-Java面试题

    JAVA面试题2019

    JAVA面试题2019

    java面试题总结资料

    java面试题总结资料

    Java面试题Java面试题Java面试题Java面试题

    Java面试题Java面试题Java面试题Java面试题Java面试题Java面试题Java面试题Java面试题

    java面试题整理

    java面试题整理java面试题整理java面试题整理java面试题整理java面试题整理java面试题整理java面试题整理java面试题整理

Global site tag (gtag.js) - Google Analytics