java 分析数据类型_JAVA的8种基本数据类型分析

基本数据类型(8个)

1.整数类型(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

2.浮点类型(2个)

名称

字节

精度问题

float

单精度浮点类型

4

保留8位小数点

double

双精度浮点类型

8

保留16位小数

2.1float与double精度丢失问题

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

(解决精度丢失问题(BigDecimal))

3.布尔类型(1个)

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

byte -> int          char -> int

强制类型转换 (大 -> 小)

int -> char          double -> long

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

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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值