1:基本数据类型(String不是基本类型默认值是null)
A:整数、byte(1个字节,8位 -128~127)、short(2个字节)、int(4个字节)、long(8个字节)默认值是0
B:浮点数 float(4字节)、double(8字节)默认值是0.0
C:字符 char(2字节)默认值是\u0000
D:布尔型 1字节 默认值是false
Byte类型的数据:10000000这里的1既是符号位也是数值位,值为-128.
整数默认int浮点数默认double
Long类型需要用L来标记下,比如long j=10000000000L正确;
long j=10000000000 错误
Float类型需要用F来标记下,比如float j=1.234F正确;
float j=1.234错误
2、运算中一般要求数据类型一致。
A、布尔类型不能随便转换
B、默认转换(从小数据到大数据)
Byte,short、char、int、long、float、double
C、Byte,short、char相互之间不转换,他们都是先转换为int类型,转换顺序为int-long-float-double。
17.625 10001.101 1.00011012^4 二进制存储为01000001 10001101 00000000 00000000
float存储的数据比long范围大 float 最大3.410^38 ,long最大2^(63-1)
3、强制类型转换:从大的数据类型到小的数据类型(不要随意使用,可能会丢失精度)
目标的数据类型 变量=(目标的数据类型)(被转换的数据)
A、byte c=(byte)(a+b)
B、float f1=12.345F
float f2=(float)12.345
都没问题,但常用F1这种表示方法,因为f2中12.345实际为double类型(小数默认为double类型),通过强制类型转换转成了float类型
C、byte a=1,b=2,c;
c=a+b;//会报错,因为变量相加运算时自动将A、B的类型变为int计算,计算之后变为byte类型损失精度。
C+=a不会报错,因为其中已经加了一个强制数据转换。C=byte(c+a)
C=1+2;//正确,常量计算时先计算a+b结果,之后判断结果是否在c类型中,在的话即没问题
4:byte=130//报错因为byte类型是 -128~127,130不在此范围之内,因此我们可以 使用强制类型转换。
byte b=130;
System.out.println(b);
分析结果:
A:获取130数据的二进制(int类型)
00000000_00000000_00000000_10000010 130的原码
B:做截取操作,变为byte类型
10000010 此结果为补码
C:已知补码求原码
补码:10000010
反码:10000001
原码:11111110
5、字符和数相加是字符的ASCII码和数值相加
A 65 ‘a’+1 输出66
a 97
0 48
6、字符串数据和其他数据做加法运算,结果是字符串类型
这里的+不是加法运算,而是字符串连接符;
System.out.println(“hello”+1+’a’) 输出结果为hello1a
’a‘+1+“hello” 输出为98hello
“5+5=”+5+5 输出为5+5=55
“5+5=”+5*5 输出为5+5=25 此处的✖不是连接符,具有实际意义
5+5+“=5+5“ 输出为10=5+5
7、java语言中字符char占用两个字节,所以可以存储一个中文汉字。
Java语言采用Unicode编码
---------------------
【转载】
作者:zfliu96
原文:https://blog.csdn.net/zfliu96/article/details/83240432
|
|