Java基础面试题

1. Java语言有哪些特点

	A、简单易学,有丰富的类库
	B、面向对象(低耦合、高内聚)
	C、与平台无关性
	D、安全可靠
	E、支持多线程

2. 面向对象和面向过程的区别

	A、面向对象:是把构成问题的事务分解成各个对象,为了描述某个事物在解决整个问题的过程中所发生的行为;面向对象有继承、多态、封装的特性,易维护、易复用、易扩展;从性能上来说,比面向过程要低。
	B、面向过程:是分析解决问题的步骤,用函数把这些步骤一步一步地实现,在使用的时候一一调用即可;性能较高,适合单片机、嵌入式开发。

3. 八种基本数据类型的大小以及对应的封装类

基本类型 大小(字节) 默认值 封装类
byte 1 (byte)0 Byte
short 2 (short)0 Short
int 4 0 Integer
long 8 0L Long
float 4 0.0f Float
double 8 0.0d Double
boolean - false Boolean
char 2 \u0000(null) Character

	注:
		int是基本数据类型,Integer是int的封装类,是引用类型,int默认值是0,而Integer默认值是null,所以Integer能区分出0和null的情况,一旦java看到null,就知道这个引用还没指向某个对象,再任何引用使用前,必须为其指定一个对象,否则会报错。
		基本数据类型在声明时系统会自动给它分配空间,而引用类型声明时只是分配了引用空间,必须通过实例化开辟数据空间之后才可以赋值,数据对象也是一个引用对象,将一个数组赋值给另一个数组时只是复制了一个引用,所以通过某一个数组所做的修改在另一个数组中也看的见。

4. instanceof关键字的作用

	instanceof严格来说是java中的一个双目运算符,用来测试一个对象是否为一个类的实例,用法如下:
boolean result = obj instanceof Class
	其中obj为一个对象,Class表示一个类或者一个接口,当obj为Class的对象,或者是其直接或间接子类,或者是其接口的实现类,结果result都返回true,否则返回false。
	注意:编译器会检查obj是否能转换成右边的class类型,如果不能转换则直接报错,如果不能确定类型,则通过编译,具体看运行时定。
int i = 0;
System.out.println(i instanceof Integer); //编译不通过 i必须是引用类型,不能是基本类型
System.out.println(i instanceof Object); //编译不通过
Integer integer = new Integer(1);
System.out.println(integer instanceof Integer); //true
System.out.println(null instanceof Object);//false 如果obj为null,那么将返回false

5. Java自动装箱与拆箱

	装箱就是自动将基本数据类型转换为包装器类型(int->Integer);调用方法:Integer的valueOf(int)方法
	拆箱就是自动将包装器类型转换为基本数据类型(Integer->int);调用方法:Integer的intValue方法
public class Main {
 public static void main(String[] args) {
 
 Integer i1 = 100;
 Integer i2 = 100;
 Integer i3 = 200;
 Integer i4 = 200;
 
 System.out.println(i1==i2);
 System.out.println(i3==i4);
 }
}

运行结果:
true
false

输出结果表明i1和i2指向的是同一个对象,而i3和i4指向的是不同的对象

你可能感兴趣的:(Java,学习,java,开发语言)