本帖最后由 jishujiandu 于 2015-8-10 16:11 编辑
1、(面试题) Java语言中的字符char可以存储一个中文汉字吗?为什么呢?
答、可以。因为Java语言采用的是Unicode编码。
Unicode编码中的每个字符占用两个字节。所以,Java中的字符可以存储一个中文汉字
2、(面试题)静态变量和成员变量的区别
答、所属不同
静态变量属于类,所以也称为为类变量
成员变量属于对象,所以也称为实例变量(对象变量)
内存中位置不同
静态变量存储于方法区的静态区
成员变量存储于堆内存
内存出现时间不同
静态变量随着类的加载而加载,随着类的消失而消失
成员变量随着对象的创建而存在,随着对象的消失而消失
调用不同
静态变量可以通过类名调用,也可以通过对象调用
成员变量只能通过对象名调用
3、(面试题)this和super的区别
答、 this 代表本类对应的引用
super代表父类存储空间的标识(可以理解为父类引用)
用法(this和super均可如下使用)
访问成员变量
this.成员变量 super.成员变量
访问构造方法(子父类的构造方法问题讲)
this(…) super(…)
访问成员方法(子父类的成员方法问题讲)
this.成员方法() super.成员方法()
4、(面试题)局部内部类访问局部变量
必须被final修饰?
为什么呢?
答、 因为局部变量会随着方法的调用完毕而消失,
这个时候,局部对象并没有立马从堆内存中消失,还要使用那个变量。
为了让数据还能继续被使用,就用fianl修饰,
这样,在堆内存里面存储的其实是一个常量值。
通过反编译工具可以看一下
5、面试题:
HashMap和Hashtable的区别?
答、HashMap
线程不同步-- 不安全--效率高
可以使用null键 null值
Hashtable
线程同步 -- 安全 -- 效率低
不能使用null键 null值
6、(面试题)final\ finally \ finalize 三者的区别?
答、final: 最终的意思
它修饰的类, 最终类,不能被其他类所继承
它修饰的方法,最终方法, 子类不能重写该方法
它修饰的变量,为常量, 值不能改变
finally: try..catch..finally异常处理语句中的一部分
用来释放资源, 如文件的关闭,对象设置为null等操作
finalize: Object类中方法
当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法
7、(面试题)throw 与 throws 的区别?
答、throws
用在方法声明后面,跟的是异常类名
可以跟多个异常类名,用逗号隔开
表示抛出异常,由该方法的调用者来处理
throws表示出现异常的一种可能性,并不一定会发生这些异常
throw
用在方法体内,跟的是异常对象
只能抛出一个异常对象
表示抛出异常,由方法体内的语句处理
throw则是抛出了异常,执行throw则一定抛出了某种异常?
8、(面试题)生命周期图(已上传)
|
|