java 基本--数据类型转换--001

小可转大,大转小可能会损失精度(编译出错,需要强制转换)
A: byte,short,char -> int -> long -> float ->double
B: byte,short,char相互之间不转换,他们参与运算首先转换成int
C: int 和float都是4个字节,指的是分配的存储空间一样,但是存储格式不一样
int:普通计数法
float:科学记数法(float型的二进制位里面有一部分表示幂数,科学计数法总是能用更少的文字表示更大的范围,多一个零只需要增加一次幂就可以了)

可以粗略的理解为:int和float整数部分范围一样
D:
int i,int j;//NG
byte b1 = 3, b2 = 4, b3;
b3 = b1 + b2; //NG
b3 = (byte)(b1 + b2); //OK 类型提升
b3 = 3 + 4;
//OK 常量,先把结果计算出来,然后看是否在byte范围内,在就不报错
E: 不要随意强制转换,因为隐含精度问题

F:
double d = 3.123; //默认为double类型
folat f = 3.123f;
float f = (float) 3.123;
float f = 3.123 //NG

G: a:97,A:65,0:48
System.out.println('a' + 1) //98

H:
System.out.println('a' + 1 + "hello") //98hello
System.out.println("hello" + 'a' + 1) //helloa1

System.out.println("5+5=" +5 +5) // 5+5=55
System.out.pringln(5+ 5+ "=5+5") // 10=5+5

I: float能表示的数据范围比long大,因为底层结构不同
long:2^63 -1
float:3.4*10^38 >2*10^38 >2*8^38 >2*2^3^38 > 2*2^114

J:Java语言中的字符char可以存储中文汉字吗?为什么?
可以,因为java语言中char占两个字符
java语言采用unicode编码

K: byte -128 ~ 127
byte b1 = 127; //127
byte b2 = 128; //-128
byte b3 = 129; //-127
byte b4 = 130; //-126

L:
int y = 10; y +=20; System.out.println(y) //30
M:
short s = 1;
s = s + 1; // NG 损失精度
Sysout.out.println(s)

short s = 1;
s += 1; // OK 扩展的赋值运算符其实隐含了强制类型转换 == s = (s的类型)(s + 1)
Sytem.out.println(s)


/**
*八种基本数据类型***/ 一个字节1byte==8位==256个数== -128~127 byte: 字节型 1byte char: 字符型 2byte short: 短整型 2byte int: 整形 4byte float: 浮点型(单精度) 4byte double: 浮点型(双精度)8byte long: 长整形 8byte boolean: 布尔型 1byte //存储的是0或1 占1个字节 但实际用时只会用一个字节的一位,后面的7位不会用到 // 按照ANSI编码标准,标点符号、数字、大小写字母都占一个字节,汉字占2个字节。按照UNICODE标准所有字符都占2个字节
原文地址:https://www.cnblogs.com/ysloong/p/6407378.html