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都是传值并且传的都是拷贝的话,类似的题大家都能迎刃而解了。

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

时间: 2024-08-30 01:12:44

JAVA面试常问知识总结(二)的相关文章

java面试常问的几个问题

1,作用域public,protected,private,以及不写时的区别 2,ArrayList和Vector的区别,HashMap和Hashtable的区别 3,char型变量能不能定义为一个中文?为什么? 4,多线程有几种表示方法,都是什么?同步有几种实现方法,都是什么? 5,继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么? 6,内部类的实现方式? 7,垃圾回收机制,如何优化程序? 8,float型float f=3.4是否正确? Jsp方面 1,jsp有哪些内置对象?作用

java面试常问问题及部分答案(2018)

一:java基础1.简述string对象,StringBuffer.StringBuilder区分string是final的,内部用一个final类型的char数组存储数据,它的拼接效率比较低,实际上是通过建立一个StringBuffer,让后台调用append(),最后再将StringBuffer toSting(),每次操作Sting 都会重新建立新的对象来保存新的值.这样原来的对象就没用了,就要被垃圾回收.这也是要影响性能的.StringBuffer也是final,线程安全的,中采用一个c

java 面试常问问题

1.  String 和StringBuffer的区别 JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据这个String类提供了数值不可改变字符串而这个StringBuffer类提供的字符串进行修改当你知道字符数据要改变的时候你就可以使用StringBuffer典型地,你可以使用StringBuffers来动态构造字符数据 2.  HashMap和Hashtable的区别 HashMap是Hashtable的轻量级实现(非线程安

面试常问问题:银行网上支付项目中怎么控制多线程高并发访问?

面试常问问题:银行网上支付项目中怎么控制多线程高并发访问? synchronized关键字主要解决多线程共享数据同步问题. ThreadLocal使用场合主要解决多线程中数据因并发产生不一致问题. ThreadLocal和Synchonized都用于解决多线程并发访问.但是ThreadLocal与synchronized有本质的区别: synchronized是利用锁的机制,使变量或代码块在某一时该只能被一个线程访问.而ThreadLocal为每一个线程都提供了变量的副本,使 得每个线程在某一时

计算机考研复试面试常问问题 计算机网络篇(下)

计算机考研复试面试常问问题 计算机网络篇(下) 在复习过程中,我用心查阅并整理了在考研复试面试中可能问到的大部分问题,并分点整理了答案,可以直接理解背诵并加上自己的语言润色!极力推荐打印下来看,效率更高!绝对良心之作! 此系列一共有8篇:编程语言篇|数据结构篇|操作系统篇|组成原理篇|计算机网络篇|数据库篇|软件工程篇|计算机专业英语篇(还未全部完成,敬请期待,你们的支持和关注是我最大的动力!) 个人整理,不可用于商业用途,转载请注明出处. 作者各个平台请搜索:程序员宝藏.快来探索属于你的宝藏吧

计算机考研复试面试常问问题 操作系统篇

计算机考研复试面试常问问题 操作系统篇 在复习过程中,我用心查阅并整理了在考研复试面试中可能问到的大部分问题,并分点整理了答案,可以直接理解背诵并加上自己的语言润色!极力推荐打印下来看,效率更高! 此系列一共有8篇:编程语言篇|数据结构篇|操作系统篇|组成原理篇|计算机网络篇|数据库篇|软件工程篇|计算机专业英语篇(还未全部完成,敬请期待,你们的支持和关注是我最大的动力!) 个人整理,不可用于商业用途,转载请注明出处. 作者各个平台请搜索:程序员宝藏.快来探索属于你的宝藏吧! 需要pdf直接打印

【Java基础】Java面试题目整理与解说(二)

1.Collection 和 Collections 的差别. Collection 是集合类的上级接口,继承于他的接口主要有 Set 和 List. Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索.排序.线程安全化等操作. 2.HashMap 和 Hashtable 的差别. HashMap 是 Hashtable 的轻量级实现(非线程安全的实现),他们都完毕了 Map 接口,HashMap是非线程安全,效率上可能高于 Hashtable.在多个线程

计算机考研复试面试常问问题 组成原理篇(下)

计算机考研复试面试常问问题 组成原理篇(下) 使用前需知(拒绝白嫖,从你我做起,你只需点个赞就行): 需要pdf直接打印版,可在公众号"程序员宝藏"回复复试上岸获取(会持续更新) 在复习过程中,我用心查阅并整理了在考研复试面试中可能问到的大部分问题,并分点整理了答案,可以直接理解背诵并加上自己的语言润色!极力推荐打印下来看,效率更高! 声明:一些边边角角的没有收集,毕竟是考研面试,不是笔试,这样也能减轻大家的负担! 有些点在(快速唤起记忆知识框架)里就有,所以没有加上! 此系列一共有8

Java面试常考到的东东

1.super与this的区别? super是我们在子类中想使用被子类隐藏的父类的成员变量或方法时,可以使用的关键字. this出现在类的实例方法中,代表使用该方法的当前对象.也可以出现在类的构造方法中,代表使用该构造方法所创建的对象. this()代表当前类对象,super()代表父类对象. 表示在子类访问父类的成员和行为,必须受到类继承规则的约束. 在子类的构造函数中,如果第一行没有写super(),编译器会自动插入.但是如果父类没有不带参数的构造函数,或这个构造函数被私有化了,此时必须加入