欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java面试总结--基础编

程序员文章站 2022-06-21 12:26:56
...

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:接口和抽象类的区别

	其实