Java面试总结--基础编

1:String,StringBuffer,StringBuilder

注意:关于这个问题查看源码都足以说明下方的观点
回答思路: 从产生背景;从线程安全问题; 从内存消耗上;从时间上;来综合说明
回答示例:先来说说String(字符串常量),String的在内部中是用 final char[] value 来存放数据的
因此String有一个缺点,也就是当频繁的对字符串进行写(修改)操作的时候,就
不易使用String,因此后来在jdk1.0中StringBuffer就产生了,StringBuffer是字符串
变量,StringBuffer中的内部实现使用的 char[] value 也就是说是可变的,同时我们
可以看到StringBuffer在append的时候是线程安全的,同时也就会产生一个问题,
就是说速度会有所影响,于是乎在jdk5.0的时候StringBuilder诞生了,StringBuilder
针对写的速度问题进行了优化,单同时线程安全问题也得不到了保证。
最后总结:
	在对字符串进行频繁的写操作的时候,不易使用String,如果考虑线程安全问题的
	话应使用StringBuffer,不考虑安全性问题的话,使用StringBuilder即可
	在对字符串进行频繁的读操作的时候使用String即可

2 :区分值传递和引用传递

在这里首先给出值传递和引用传递的定义(非常重要哈)
	一个方法可以修改传递引用做对应的变量值
	而不能修改值传递调用所对应的变量值。
如果明白了这个,其实值传递和引用传递也就搞明白了,如果此时你是懵逼的,别着急,别
心慌,继续向下看
	再给出一个不接受反驳的事实: 在java中只有值传递,没有引用传递。(java中规定的)
这一点和上方那个定义,都先记住,接下来拿着这两个定义,接着向下看
	对于java来说,有两种常见的方法传递形式 functionName(int a)基本数据类型形式的
functionName(Object b)引用形式传递形式的(并不是引用传递)
   对于基本数据类型的,我相信应该不需要再说了,肯定是值传递。下面主要介绍引用形式的
 在这里我以前一直没有搞明白的一个概念就是引用传递的含义,在这块,再次说一下引用传递
 含义:引用传递可以修改引用所对应的变量值。接着咱看一下在java中的引用传递中变量值是
 否发生了改变,如果没有发生改变那么就是值传递,如果发生了改变那么就是引用传递。
 通过本人的代码测试证明,确实没有发生改变,所以此时是值传递,并不是引用传递,(在
 这里只是给出了理解思路,代码我感觉还是自己去写,理解的才够透彻)。然后此时你应该有
 个疑问,为什么对象中的内容改变了呢:其实很简单,只是把一个对象的引用复制了一份,然
 后指向了相同的对象,所以会改变,看这里的引用的对象复制了一份,也可以说明是值传递,
 因为对象的地址并没有发生改变。
 注 : 其实以前一直没懂的原因是 没有搞明白值传递,引用传递的根本含义。

3:接口和抽象类的区别

	其实

猜你喜欢

转载自blog.csdn.net/qq_24067089/article/details/88633826