1.JAVA 中的几种基本数据类型是什么,各自占用多少字节
Java中数据类型包括了八个基本类型即:int 、short、long、byte、float、double、char、boolean
基础类型 | 字节数 | 取值范围 | 对应引用类型 |
---|---|---|---|
int | 4 | -231~231-1 | Integer |
short | 2 | -215~215-1 | Short |
long | 8 | -263~263-1 | Long |
byte | 1 | -27~27-1 | Byte |
float | 4 | -2128~2128 | Float |
double | 8 | -21024~21024 | Double |
char | 2 | -0~216-1 | Character |
boolean | 1 | false/true | Boolean |
2、java中自动拆装箱
Java中对基础类型—》引用类型的转变称为装箱,对引用类型------》基础类型转变称为拆箱
以int 与integer为例
自动装箱:
Integer inte = 12;
//java内部会自动执行为 Integer inte = Integer.valueOf(12);
自动拆箱
Integer inte = 12;
int i = inte; //Java内部会自动进行执行为 int i= inte.intValue();
观察方法源码
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
可得自动封箱过程中会对传入数据进行判断 当数据在IntegerCache(low=-128,high=127)内的数据直接从IntegerCache中取出数据,如果超出则返回一个新的Inerger对象。
3.String 类能被继承吗,为什么。
通过Sting类定义 public final class String
可得String类为final修饰类 无法被继承。
4、final 的用途。
final修饰符可以修饰类、变量和方法
-
final修饰属性和变量
- 使用final修饰属性和变量后,该属性或变量就成为一个常量值不可改变(程序运行过程中不可修改)
- java规定常量属性必须有初始值
- java中常量的名字要求全部大写
-
final修饰类
- final修饰类后该类就成为一个最终类,最终类不能被继承(即不存在子类)
- fial修饰方法
- fial修饰方法后,该方法成为最终方法,最终方法无法被子类重写
4、String,Stringbuffer,StringBuilder 的区别。
String 不可变字符序列
StringBuffer 线程安全的可变字符序列
StringBuilder 非线程安全的可变字符序列
- StringBuffer与String的可变性问题
StringBuffer与String类中数据存储都在数组value变量中,但是由于 String类 value变量被final修饰符修饰为常量仅可被赋值一次。而StringBuffer中value数组是一个普通数组,可通过append()方法对数组内容和大小进行改变 - StringBuffer与StringBuilder线程安全问题
StringBuffer与StringBuilder两个类及其相似,但在安全性方面由于StringBuffer的很多方法都被关键字synchronized修饰了,所以StringBuffer支持多线程进行字符操作。而StringBuilder无synchronized修饰不支持多线程进行字符操作
注:由于String是不可变的,仅可获取不可修改故线程安全。