码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA面试常问知识总结(二)

时间:2018-11-07 14:39:04      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:opera   div   等于   font   笔试题   问题   main   col   引用   

  1. JAVA中的参数传递总结
    先看两道笔试题:
     1 public class Test2 { 
     2 
     3    public static void main (String [] args)  { 
     4          StringBuffer a = new StringBuffer ("A"); 
     5          StringBuffer b = new StringBuffer ("B"); 
     6          operate (a,b); 
     7          System.out.println(a+","+b); 
     8    }
     9 
    10    static void operate(StringBuffer x, StringBuffer y){ 
    11          x.append(y); 
    12          y = x; 
    13    }
    14 }

    该题会输出什么?

     1 public class Test2 { 
     2 
     3      public static void add3 (Integer i){ 
     4           int val=i.intValue();
     5           val += 3; 
     6           i = new Integer (val); 
     7       } 
     8 
     9      public static void main (String args [ ] )  { 
    10           Integer  i = new Integer (0); 
    11           add3 (i); 
    12           System.out.println (i.intValue ( )); 
    13      } 
    14 }

    这个又会输出什么?
    答案是: 1:AB,B       2:0
    首先我们应该明白JAVA中的参数传递全是以值传递的。是基本类型,就拷贝一个基本类型传进方法;是引用,就拷贝一个引用变量传进去方法,理解了这两点就能理解方法操作对象的相关问题了。最好能画出引用指向对象的图出来,就能完全理解了。

    第1题,调用operate方法时,传入了两个引用a,b的拷贝x,y,这两个x,y都指向原a,b引用所指向的对象。x.append(y)对它指向的对象(即a指向的对象)进行了操作。而x=y,只是两个拷贝变量在赋值,并没有影响到原b所指向的对象。所以b所指向的对象仍然为B。

    第2题,i=new Integer(val)  这里等于重新把i的引用指向别的对象了,所以原有对象的数没改,而原来的i仍然是指向对象new Integer(0)的。

    把握住了JAVA都是传值并且传的都是拷贝的话,类似的题大家都能迎刃而解了。

JAVA面试常问知识总结(二)

标签:opera   div   等于   font   笔试题   问题   main   col   引用   

原文地址:https://www.cnblogs.com/king-brook/p/9922272.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!