JAVA的8种基本数据类型(面试题)

基本数据类型(8个)

一.整数类型(4个)

字节个数	取值范围
byte(字节)	    1(8位)   	   -2^7~2^7-1
short(短整型)	2(16位)	   -2^15~2^15-1
int(整形)	    4(32位)	   -2^31~2^31-1
long(长整形)	8(64位)	   -2^63~2^63-1

二.(1.1) 浮点类型(2个)

名称				字节					精度问题
float		单精度浮点类型	4		保留8位小数点
double		双精度浮点类型	8		保留16位小数

(2.1) float与double精度丢失问题(解决方法)

    float与double运算时将十进制转为二进制,
    整数永远可以用二进制精确的表示,但小数就不一定,
    小数的二进制有时候是不可能准确的,有时候会无限算下去,
    所以在银行里不能使用float与double。(解决精度丢失问题(BigDecimal))

三.布尔类型(1个)

      boolean的值只有两个 true 和 false,
      在8种简单类型中除了boolean类型,
      其他的数据类型可以自动转换成其他类型,例:
      
      自动类型转换 (小 -> 大)
      byte -> int          char -> int   

      强制类型转换 (大 -> 小)
      int -> char          double -> long

四.下面有鄙人珍藏多年的几道数据类型面试题(☆)

   1、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 +=1;有什么错?

    答: 前面表达式有错误,s1+1中1是int类型,右边的结果为int int赋值给s1,s1为short,需要强制类型转换 s1 = (short)(s1+1); 后面的表达式没有错误,因为+=这种扩展赋值运算符会自动类型转换。

   2、char类型变量能不能储存一个中文的汉子,为什么?

    答: char是2个字节16位,所以可以使用unicode编码表示 只要是在unicode编码中文范围的汉字都可以存储4E00-9FA5 但是也有特殊情况生僻字不能存储。

   3、Integer和int的区别

    答: int 基本数据类型,只能用于算术运算,位运算 Integer引用数据类型,类提供很多方法去便捷操作一些int值 例如:10进制数转2进制数的方法。

  4、能否在不进行强制转换的情况下将一个 double 值赋值给 long 类型的变量?

    答:不可以,虽然double 和 long 都是8个字节(64位),但是底层的存储 结构不一样,double表示的范围 > long表示的范围 所以把double值赋值给long需要强制类型转换。

  5、java 中 3*0.1 == 0.3 将会返回什么?true 还是 false?

    答:java中float和double,在做运算的时候,会有精度丢失 所以这个表达式的值为false。

  6、java 中 float f = 3.4; 是否正确?

    答:3.4默认为double类型,若需要强制将3.4赋值给float需要强制类型转换 也有其他解决方案: 
    解决方案1: 3.4后面添加小f或者大F float f = 3.4F; 
    解决方案2: 变量f的数据类型,改为 double double f=  3.4; 
	解决方案3: 使用造型符号,强制类型转换 float f = (float) 3.4。

在这里插入图片描述

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页