2021-07-16 尚硅谷_基本数据类型之间的运算规则

1、基本数据类型转换

前提:这里讨论的只是7种基本数据类型变量间的运算。不包含boolean类型的。

1.1、自动类型提升
  • 自动类型转换:容量小的类型自动转换为容量大的数据类型。数据类型按容量大小排序:
    charbyteshort——>int——>long——>float——>double
  • 有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后进行计算。
  • byteshortchar之间不会互相转换,他们三者在计算时首先转换为int类型。
byte b1 = 2;
int i1 = 129;
// 编译不通过
// byte i2 = b1 + i1;
int i2 = b1 + i1;
  • boolean类型不能与其他数据类型计算。
  • 当把任何基本数据类型的值和字符串(String)进行连接运算(+)时,基本数据类型的值将自动转换为字符串(String)类型。

2、强制类型转换

  • 强制类型转换:自动类型提升的逆运算。
  1. 需要使用强转符:()
  2. 注意点:强制类型转换,可能导致精度损失。
  • 通常,字符串不能直接转换为基本类型,但通过基本类型对应的包装类则可以实现把字符串转换成基本类型。
  • boolean不可以转换为其他的数据类型。
// 精度损失举例1
double d1 = 12.3;
int i1 = (int)d1; // 截断操作
System.out.println(i1); // 12

// 没有精度损失
long l1 = 123l;
short s2 = (short)l1;

// 精度损失举例2
int i2 = 128;
byte b = (byte)i2;
System.out.println(b); // -128

3、变量运算规则的两个特殊情况

3.1、
// 1.编码情况1:long型变量后面没加l,相当于变量提升 int --> long
long l1 = 123123;
System.out.println(l1);
// 编译失败:过大的整数,当成int类型存储
// long l2 = 3434324342342353452;
long l2 = 3434324342342353452l;

// 编译失败:float一定要加f
float f1 = 12.3;
3.2、
// 2.编码情况2:
// 整形常量,默认类型为int型
byte b = 12;
// 编译失败
// byte b1 = b + 1;

// 浮点型常量,默认类型为double型
// 编译失败
// float f1 = b + 12.3;

4、String类型变量的使用

  1. String属于引用数据类型,翻译为:字符串。
  2. 声明String类型的变量时,使用一对""
String s1 = "Hello World!";
System.out.println(s1);

String s2 = "a";
String s3 = "";

// 编译不通过
// char c = '';
  1. String可以和8种基本数据类型做运算,且运算只能是连接运算:+,运算的结果仍然是String类型。
int number = 1001;
String numberStr = "学号:";
String info = numberStr + number; // +:连接运算
System.out.pringln(info);

5、二进制转十进制

  • java整数常量默认是int类型,当用二进制定义整数时,其第32位(最高位,从左往右第一个数字)是符号位;当是long类型时,二进制默认占64位,第64位(最高位)是符号位。
  • 计算机以二进制的形式保存所有的整数。
    1.正数的原码、反码、补码都相同。
    2.负数的补码是其反码+1。
  • 二进制的整数有如下三种形式:
    1.原码:直接将一个数值换成二进制数。最高位是符号位。
    2.负数的反码:是对原码按位取反,只是最高位(符号位)确定为1。
    3.负数的补码:其反码加1。

注意:计算机底层都以补码的方式来存储数据!

6、二进制与八进制十六进制之间的转换

6.1、二进制转八进制
二进制转八进制
6.2、八进制转二进制

八进制数通过除2取余法,得到二进制数,对每个八进制为3个二进制,不足时在最左边补零。

6.3、二进制转十六进制
二进制转十六进制
6.4、十六进制转二进制

十六进制数通过除2取余法,得到二进制数,对每个十六进制为4个二进制,不足时在最左边补零。


十六进制转二进制

你可能感兴趣的:(2021-07-16 尚硅谷_基本数据类型之间的运算规则)