前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java基本数据类型

java基本数据类型

作者头像
我是李超人
发布2022-05-11 09:49:45
3040
发布2022-05-11 09:49:45
举报

Java有八种基本数据类型,分别是byte、short、int、long、float、double、char、boolean

整型 第一位表示符号位,1为正0为负 byte 占用1个字节,取值范围为-128~127(-2^7~2^7-1) short占用2个字节,取值范围为-32768~32767(-2^15~2^15-1) int占用4个字节,取值范围为-2147483648~2147483647,(-2^31~2^31-1) Long 占用8个字节取值范围-2^63~2^63-1

浮点型 float 单精度 占用4个字节3.402823e+38 ~ 1.401298e-45 double 双精度占用8个字节1.797693e+308~ 4.9000000e-324 通常的浮点型的数据在不声明的情况下都是double型的,如果要表示一个数据是float型的,需要再数值后面加上f。对于浮点型要记住一点,浮点型的数据是不能完全精确的。

布尔型 这个类型只有两个值,true和false(真和非真)

字符型 用于存放字符的数据类型,占用2个字节,采用unicode编码。Char的表示方式要用单引号,例如 Char c = ‘A’。因为char类型采用的是Unicode编码,Unicode字符集中收录了汉字,所以char类型也能用来表示汉字,比如char c = ‘中’; ,但是有些生僻的汉字可能没有收录到Unicode字符集中,所以char并不能够存储所有的汉字。

不同基本类型之间可以相互转换 隐式转换 例如int型可以直接赋值给long型,实际上是进行了隐式转换。 int x1 = 8; long x2 = x1; 表示范围小的可以隐式转换为表示范围大的。 byte,short,char –>int –>long –>float –>double (long型占8个字节,float型占四个字节,但是由于float浮点型的存储方式比较奇特,float的表示范围要比long的大。)

强制转换 表示范围大的也可以通过强制转换转换成表示范围小的,例如: long x2 = 8; int x1 = (int)x2;

面试小技巧:

下面的两种写法是否有问题?

代码语言:javascript
复制
short s1 = 1;
s1 = s1+1; // 1
short s2 = 1;
s2 +=1; // 2

第一种写法有问题,1默认是int型,s1+1的结果是int型(int型的表示范围比short型要大,所以结果会自动转换成int型,这样可以防止精度丢失),将int型赋值给short型,编译会出错。第二种写法是正确的,+=是java语法规定的运算符,编译器会对它进行特殊的转换操作(应该是强制转换),所以编译不会出错。

问: float f = 6.6; 这种写法是否正确? 不正确,6.6默认是双精度数,将双精度型赋值给单精度会造成精度损失,编译器会报错,需要强制类型转换 float f = (float)3.4; 或者写成 float f = 3.4F;

问:对于1和2,输出结果是什么?

代码语言:javascript
复制
System.out.println(0.3==0.3);  //1
System.out.println(3*0.1==0.3);  //2

1:true,2:false,可以尝试将2的结果打印出来,你会觉得很神奇,这里面水很深,相关文章https://www.zhihu.com/question/56545018

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-01-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档