1. int和Integer有什么区别?
int是基础数据类型,字节长度为4,它的创建不会在堆内存中开辟空间,一般保存在栈内存中,可以用算术运算符加减乘除等操作。在参数传递的时候,直接传递它的值。
Integer是int的包装类,而本质是一个类,它的创建会在堆内存中开辟一个新的空间,它的含义也是表示一个整型的数据,但是,算术运算符不能操作它,在参数传递的时候,传递的是它所代表的一个引用
2. int的取值范围
int型数据采用4个字节进行存储,一共是32位。第一位用于表示正负号,因此,它的取值范围就是:-231~231-1
3. 如何用八进制和十六进制来表示整型数据?
Java中八进制字面量采用0开头,十六进制采用0x开头。
4. long的取值范围?
long型数据采用8字节存储,一共是64位。第一位用于表示正负号,因此,它的取值范围是-263~263-1。
5. float和double的取值范围各是多少?
float型,范围从3.4E+10-38~3.4E+1038
double型,范围从1.7E+10-308~1.7E+10308
6. 实型数据与整型数据的相互转换
整型和实型可以进行相互转换,其中整型转换为实型时,不存在精度的丢失,而实型转为整型时可能会有精度的丢失。转换过程可分为显式和隐式两种方式,前者是通过强制类型转换来进行,后者是在运算、传参情况下,由系统自动进行。
7. 如何用BigDecimal类进行精确运算?
使用BigDecimal类来进行精确的算术运算,也就是使用它所提供的一系列API,主要分为以下步骤:
(1)用float或double变量构建BigDecimal对象,通过构造方法或valueOf()方法。
(2)通过调用BigDecimal的加、减、乘、除等,相应的方法进行算术运算。
(3)把BigDecimal对象转换成float、doubole、int等类型,通过xxxValue()等方法进行转换。
8. Java可以用非0来代表true吗?
Java不能用非0代表true,也不能能用0来代表false,只能用布尔型的true和false来进行条件判断。
9. boolean和它的包装类的区别在哪里?
(1)boolean是基础数据类型,Boolean是类。
(2)boolean一般存于栈空间中,Boolean对象存于堆空间中。
(3)boolean有true和false两种值,Boolean除了true和false外,还有null.
(4)Jdk5以前,不能把Boolean用于条件语句,需要转换为boolean以后使用。
10. char的取值范围
Java中的char采用Unicode编码格式,用两个字节来表示一个字符,一共16位(bit)它所能代表的最大字符数量为216
11. char能否存储汉字?
char是可以存储汉字的,每个中文字符都有对应的Unicode编码。
12. 如何使用转义字符?
在Java中,使用反斜线“\”来表示转义,它与紧跟在它后面的字符一起组成了转义字符,从而达到了转义的目的。
13. 字符串字面量是否自动生成一个String对象?
答案是肯定的,字符串类具有一定的特殊性,JVM在执行双引号操作符的时候,会自动的创建一个String对象,并返回这个对象的引用。
14. 字符串对象池的作用是什么?
对象池的存在是为了避免频繁的创建和销毁对象而影响系统性能。当JVM在运行用双引号引起来一个字符串的代码时,会到String的对象池中去检查是否有一个字符序列相同的对象,若有,就取现成的对象,否则,就在对象池中创建一个对象,并返回。
15. StringBuffer和StringBuilder存在的作用是什么?
在Java程序中,如果有大量拼接字符串的需要的话,应该使用StringBuffer和StringBulider类,它们可以避免不必要的String对象的产生,以提高程序的性能,它们俩者的作用类似,只不过StringBulider线程是安全的。
16. 如何输出反转过后的字符串?
实现字符串的反转一般来说有两种手段,第一是利用字符串存储字符数据的原理,取出它的char数组,进行重写排列并保存;第二则是生成StringBuffer对象,直接使用StringBuffer的reverse()方法。
17. 如何使用指定的字符集创造String对象?
使用带有字符集编码的String的构造方法就可以用指定的字符集来重新创造字符串对象了,该方法的参数包括两个:一个是byte数组;另一个则是字符集编码的字符串形式,例如:UTF-8、GBK、ISO-8859-1等
如:
String a = “中文”;
String b = new String(a.getBytes(),”GBK”);