Java基础面试上
1. JDK 是 Java Development Kit(Java开发工具包) ;JRE 是 Java 运行时环境;Java 虚拟机(JVM)是运行 Java 字节码的虚拟机。 JVM在JRE中 ,JRE在JDK中。
2.在 Java 中,JVM 可以理解的代码就叫做字节码(.class)。特点:不面向特定的机器;保留可移植性,Java程序可在多种不同操作系统计算机上运行。
3.Java语言编译与解释并存,Java程序需要先编译生成.class文件再解释执行的步骤。
4.Java与c++区别在于:Java不提供指针访问内存;Java类单继承,c++可以多继承,但是Java类可以继承多个接口;Java具有自动内存管理垃圾回收机制;Java只有方法重载,c++还多一个操作符重载。
5.标识符相当于名字,关键字是特殊的标识符。true,false,null是字面量不能作为标识符。
6.成员变量通过static修饰属于类,不然属于实例;局部变量是在代码块或方法中定义的变量或是方法的参数,static不能修饰局部变量;成员变量未初始化也有初值。
7.字符常量占两个字节;字符常量相当于整型值,字符串常量是字符串在内存中存放的位置地址。
8.静态方法不能调用非静态变量,原因在于静态方法属于类,在加载类的时候分配内存;非静态变量属于对象,在创建对象后分配内存。在静态方法中调用未在内存中存在的变量属于非法。
9.实例方法不受访问限制,静态方法只能访问静态方法和静态变量。
10.重写:继承父类方法,如果需要修改方法则覆盖父类方法。重载:相同方法名但是形参个数、顺序、类型不同。
11.包装类型的缓存机制:浮点类型的包装类Float,Double并没有实现缓存机制。Byte、Short、Integer、Long超出缓存范围会另外创建对象。在缓存范围中的比较可以用==。整型包装类对象值的比较还是建议使用equals方法。
12.浮点数运算丢失精度问题由于计算机在表示数字的时候宽度有限,无限循环的小数存储需要计算机截断导致小数精度缺失。可以使用BigDecimal类解决。