Java程序员面试题----整型数据、实型数据、布尔型数据、字符型数据、String型数据

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”);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值