5. String,StringBuilder 和 StringBuffer 区别
(1)String 是不可变的,即只读的,意味着 String 引用的字符串内容是不能被改变的。
String str=”hello,accp”; str=”wecome”;
str 是一个引用,它指向字符串对象”hello,accp”,当执行 str=”welcome”时,它已经指向另
外一个字符串对象了。
(2)StringBuffer 是可变的字符串,可以直接修改。所有的方法都有同步关键字 synchroized
修饰,因此在多线程环境下是数据安全的。但是效率低。适合于多线程环境下操作字符串缓
冲区的大量数据。
(3)StringBuilder 是可变字符串,在 JDK1.5 之后引入的,方法和 StringBuffer 相同,适
合于单线程环境,运行效率更高。没有同步关键字,因此在多线程环境中无法确保数据安全。
6. Java 中的包装类
在 java 中主要的数据类型分为基本数据类型和引用类型。基本数据类型只存储数据,操作
效率高。但有时候需要涉及到将基本类型转换为字符串,或者默写情况下不能提供基本数据
类型的初值,只能是 null。
Java 为基本数据类型提供了相应的包装类,将基本类型包装为引用类型,并且提供了一系
列的方法实现数据类型转换以及空值的处理。
iint a=3;
Integer b=a; //自动装箱, 将基本类型转换为引用类型
int c=b; //自动拆箱,将引用类型转换为基本类型,相当于 int c=b.intValue();
7. JDK、JRE、JVM 和 JIT 的概念和关系
JDK(Java Development Kit) 是 Java 开发的核心,即开发工具包。包含 Java 运行环境,
Java 编译工具以及基础类库。
JRE(Java Runtime Environment)是 Java 程序的运行环境,主要包括 Java 基础类库
和 JVM 的标准实现。
JVM(Java Virtual Machine) Java 虚拟机,主要实现将 class 文件转换为最终机器对应的
二进制。也是 java 实现跨平台的核心,不同的操作系统有不同的 JVM 实现。
JIT(Just In Time Compilation)代表即时编译,当代码执行的次数超过一定的阈值时,会
将 Java 字节码转换为本地代码。例如:主要的热点代码会被准换为本地代码,这样有利大
幅度提高 Java 应用的性能