1、JVM、JRE和JDK的区别?
JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性。 java语言是跨平台,jvm不是跨平台的。
JRE(Java Runtime Environment):java的运行环境,包括jvm+java的核心类库。
JDK(Java Development Kit):java的开发工具,包括jre+开发工具
2、环境变量path和classpath的作用是什么?
path是配置Windows可执行文件的搜索路径,即扩展名为.exe的程序文件所在的目录,
用于指定DOS窗口命令的路径。
Classpath是配置class文件所在的目录,用于指定类搜索路径,JVM就是通过它来寻找该类的class类文件的。
3、Java语言的特性?
跨平台性、面向对象、安全性、多线程、简单易用。
4、变量有什么用?为什么要定义变量?什么时候用?
变量的作用:用来存储数据。
为什么要定义变量:用来不断的存放同一类型的常量,并可以重复使用
5、& 和 && 的区别?
&运算符有两种用法: (1)按位与; (2)逻辑与。
&&运算符是短路与运算。
&&会出现短路,如果可以通过第一个表达式判断出整个表达式的结果,则不继续后面表达式的运算;只能操作boolean类型数据
详细介绍:折叠
&&之所以称为短路运算是因为,如果&&左边的表达式的值是 false,右边的表达式会被直接短路掉,不会进行运算。
很多时候我们可能都需要用&&而不是&,例如在验证用户登录时判定用户名不是 null 而且不是空字符串,应当写为 username != null &&!username.equals(""),二者的顺序不能交换,更不能用&运算符,因为第一个条件如果不成立,根本不能进行字符串的 equals 比较,否则会产生 NullPointerException 异常。
注意:逻辑或运算符(|)和短路或运算符(||)的差别也是如此。
6、数据类型
(1)基本数据类型(4类8种)(字节数){数据表示范围}
整数类型:byte(1)、short(2)、int(4)、long(8)
字符类型:char(2)
布尔类型:boolean(1)(ture false)
浮点数类型:float(4)、double(8)
(2)引用数据类型:类、接口、数组
(3)数据类型表
7、类型转换
(1)精度从高到低 double float long int short(char) byte
自动类型转换 将一个低精度 → 高精度
强制类型转换 将一个高精度 → 低精度(精度会下降)
8、String是最基本的数据类型吗?
基本数据类型包括byte、int、char、long、float、double、boolean和short。取值范围是 -2^(字节数8-1) ~ -2^(字节数8-1) - 1,但Boolean是4个字节,而boolean数组1个字节,这是因为虚拟机用int来代替boolean,保证高效存取。而java.lang.String类是final类型的,因此不能继承也不能修改String类。String还重写了hashCode和equals方法。
9、数组和String有length()方法吗?
数组没有length()这个方法,有getLength()方法,但有length的属性。String有length()方法
10、是否可以继承String?
String 类是 final 类,不可以被继承。
继承 String 本身就是一个错误的行为,对 String 类型最好的重用方式是关联关系(Has-A)和依赖关系(UseA)而不是继承关系(Is-A)
11、new一个字符串“xyz”创建了几个对象?
两个或一个,new一个字符串会产生两个对象,一个在堆上,一个在常量池中,堆上的数据每new一次产生一个新的对象,如果常量池中有需要的对象,就不会创建新的对象,直接拿来用,所以一共创建了一个对象,若常量池中没有要用的对象,则会创建一个,所