JAVA面试题总结(SE部分)
1. Person p = new Person(); 创建一个对象都在内存中做了什么事情? 1 : 先将硬盘上指定位置的Person.class文件加载进内存。 2 : 执行main方法时,在栈内存中开辟了main方法的空间(压栈-进栈),然后在main方法的栈区分配了一个变量p。 3 : 在堆内存中开辟一个实体空间,分配了一个内存首地址值。 4 : 在该实体空间中进行属性的空间分配,并进行了默认初始化。 5 : 对空间中的属性进行显示初始化。 6 : 进行实体的构造代码块初始化。 7 : 调用该实体对应的构造函数,进行构造函数初始化。() 8 : 将首地址赋值给p ,p变量就引用了该实体。(指向了该对象) 2 、 String 与 StringBuffer 的区别。 答: String 的长度是不可变的, StringBuffer 的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用 StringBuffer ,如果最后需要 String ,那么使用 StringBuffer 的 toString() 方法 3. 运行时异常与一般异常有何异同? 异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。 java 编译器要求方法必须声明抛出可能发生的非运行时异常