数据类型、数据类型转换

  1. 数据类型:java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不一样大小的内存空间。
  2. 数据类型分类:  基本数据类型、引用数据类型(类、接口、数值)。
  3. 基本数据类型:4类8种,整数默认int,小数默认double。
  • A:整数: byte(字节型)、short(短整型)、int(整型)、long(长整型)(后缀用L或者l标记。建议使用L。)
  • B:浮点数:float(单精度)(后缀用F或者f标记。建议使用F。)、double(双精度)
  • C:字符:char(能够存储一个中文汉字,java语言中一个字符占用两个字节)
  • D:布尔:boolean(True、False)

数据类型转换java

  1. boolean类型不参与转换
  2. 默认转换:A.从小到大    B.byte,short,char--int--long--float--double    C.byte,short,char之间不相互转换,直接转成int类型参与运算。byte,short在定义的时候,他们接收的实际上是一个int类型的值。 这个是本身作了一个数据检测的,若是再也不它们的范围内,就报错。long的范围比int大A:它们底层的存储结构不一样。B:float表示的数据范围比long的范围要大
  3. 强制转换:A.从大到小   B.可能会损失精度,通常不建议使用    C.格式:目标数据类型 变量名 = (目标数据类型) (被转换的数据);    int i = (int)(a+b);
  4. 变量运算:会首先看数据类型问题,最终把结果赋值的也会考虑数据类型问题。
  5. 常量运算:首先作运算,而后看结果是否在赋值的数据类型范围内,若是不是才报错。
  6.          byte b1 = 3;
             byte b2 = 4;
             byte b3 = b1 + b2;//b1,b2的类型提高转变为int类型
             byte b4 = 3 + 4;//3,4为常量,常量先把结果技术出来,而后看是否在byte范围内,若是在就不报错。
不一样数据类型数据参与运算图解

原码,反码,补码spa

/*

byte b = 130;有没有问题?若是我想让赋值正确,能够怎么作?结果是多少呢?

*/
class DataTypeDemo7 {
public static void main(String[] args) {
//由于byte的范围是:-128到127。
//而130不在此范围内,因此报错。
//byte b = 130; 

//咱们可使用强制类型转换
byte b = (byte) 130;

//结果是多少呢?
System.out.println(b);
}
}
/*
分析过程:
咱们要想知道结果是什么,就应该知道是如何进行计算的。
而咱们又知道计算机中数据的运算都是补码进行的。
而要获得补码,首先要计算出数据的二进制。

A:获取130这个数据的二进制。
00000000 00000000 00000000 10000010
这是130的原码,也是反码,仍是补码。
B:作截取操做,截成byte类型的了。
10000010 
这个结果是补码。
C:已知补码求原码。
符号位 数值位
补码: 1 0000010

反码: 1 0000001

原码: 1 1111110

*/code

byte b = (byte)300;
1.获取300的二进制
00000000 00000000 00000001 00101100
由于是正数,原码与反码补码相同
2.强制转换作截取操做,(操做补码)byte是1字节
00101100
3.已知补码求原码(负数补码为反码减1反码为原码0变1,1变0符号位不变)
符号位 数值位
补码    0 0101100
由于是正数,原码与反码补码相同
反码    0 0101100
原码    0 0101100
byte b = (byte)300;
System.out.println(b);//b=44blog

字符参与运算
字符参与运算,是查找ASCII里面的值
'a' 97
'A' 65
'0' 48

System.out.println('a');//输出结果是a

System.out.println('a' + 1);//输出结果是98接口

字符串参与运算,实际上是字符串的链接,(这里的+不是加法运算是字符串链接符)内存

                        System.out.println("hello"+'a'+1);//helloa1
System.out.println('a'+1+"hello");//98hello        (运算‘a’+1,第二个+是字符串链接符)
字符串

System.out.println("5+5="+5+5);//5+5=55        (“”内直接打印后面的两个+是拼接运算)class

               运算步骤:1."5+5="字符串直接打印,结果5+5=,2."5+5="+5,前面是字符串5=5=  ,后面+5中+为字符串链接符拼接运算,结果5+5=5  3.前面是字符串5+5=5,后面+5中+为字符串链接符拼接运算,结果5+5=55变量

System.out.println(5+5+"=5+5");//10=5+5        (运算5+5,结果是10,拼接“=5+5”)
数据类型