JAVA面试常问知识总结

Posted king-brook

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA面试常问知识总结相关的知识,希望对你有一定的参考价值。

  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面试常问知识总结的主要内容,如果未能解决你的问题,请参考以下文章

JAVA面试常问知识总结——Maven

搞定 Java 并发面试面试最常问的 Java 并发基础常见面试题总结!

Java 面试总结 —— 面试常问的关键字总结

2022-Java常问面试题总结2

2022-Java常问面试题总结3(Spring框架)

升职加薪必看!那些年Java面试官常问的知识点