Java基础----数据类型总结----含思维导图

一、数据类型

1、数据类型分类

   1.1、基本数据类型
   1.2、引用数据类型

2、基本数据类型

  2.1、数值类型
    (1)byte:1个字节8位
      ①byte b = (byte)128; System.out.println(b);输出结果为:-128;因为最大为127 即01111111;128=01111111+00000001=1111111;即-128第一位0表示正数;1表示负数;byte b = 128; System.out.println(b);会报错
      ②两个byte类型的整数相加,结果是int类型。
      ③依次定义相同数据类型的变量:byte a=1,b=2,c=3;
    (2)short:2个字节16位
    (3)int:4个字节32位
    (4)long:8个字节64位
      ①使用时应该在后尾+L;
      ②八进制:以0开头的数值;例:int a = 012;
      ③十六进制:1 2 3 4 5 6 7 8 9 a b c d e f ;以0x开头数值;例:int a =0x10;long a = 0x12abL;
  2.2、浮点类型
    (1)float:4个字节32位
    (2)double:8个字节64位
    (3)其他补充
      ① Java中默认的浮点类型为double;所以不能直接将带小数点的数值赋值给float类型。
      ② Float f1 = 12.34;会报错。正确写法:float f1 = 12.34f;
      ③ Double d1 = 12.34;此句不会报错,因为默认类型就是double类型。
  2.3、字符类型
    (1)char:2个字节16位
    (2)char 类型的值必须写在‘ ’内,并且只有一个字符,例:char a = ‘A’;
    (3)其他补充
      ① Java中默认的浮点类型为double;所以不能直接将带小数点的数值赋值给float类型。
      ② Float f1 =12.34;会报错。正确写法:float f1 = 12.34f;
      ③ Double d1 = 12.34;此句不会报错,因为默认类型就是double类型。
  2.4、布尔类型
     boolean:1个字节8位、只有true与false两种类型。
  2.5、八种基本数据类型对应的封装类

基本类型 byte short int long float double char boolean
封装类 Byte Short Integer Long Float Double Character Boolean
3、引用数据类型

  3.1、类(class)
    (1)byte:1个字节8位
    (2)short:2个字节16位
    (3)int:4个字节32位
    (4)long:8个字节64位
  3.2、接口(interface)
    (1)float:4个字节32位
    (2)double:8个字节64位
  3.3、数组
    (1)一维数组的声明方式
      ① int[] arr = {3,1,2,5,6}
      ② int[] arr = new int[]{3,1,2,5,6}
      ③ int[] arr = new int[5];//此时会赋默认的值
      ④ int arr[] = new int[5]; //不推荐
    (2)二维数组的声明方式
      ① int[][] arr1 = { { 3, 2, 7 }, { 1, 5 }, { 6 } };
      ② int[][] arr2 = new int[3][4]; // 3行4列的规则数组
      ③ int[][] arr3 = new int[2][];
      ④ int arr[] = new int[5]; //不推荐
      注意:当数组里面的值为空时,去查找这个值时会出现空指针。如下举例:int[] arr1 = null;arr[0] = ; // 数组是引用类型,值为null时使用数组将抛出NullPointerException异常

4、String类型

  4.1、对字符串正确赋初值的三种方式
      ① String str;
      ② String str = “good!”;在字符串常量池中
      ③ String str = new String(“good!”);在字符串常量池和堆中都创建对象。

二、数据类型转换

1、自动类型转换(也叫隐式类型转换)

  (1)、将小类型直接赋值给大类型的变量,不需要进行声明式的转换。将精度低的类型直接赋值给精度高的类型
  (2)、将int类型转byte类型 、将int类型转short类型, 如果int类型的数据值没有超过byte类型、short类型取值范围的最大值,则会自动类型转换;例如:byte a = 35;无需写成byte a = (int)35;除了int、byte、short这三个类型之外的大类型转小类型,都需要强制转换。
  (3)、这样写,就不会再进行隐式类型转换了:int f=35; byte s=f;会报错;需要改为byte s=(int)f;还有下面这种情况:byte i=1;byte a=i+10;这句就会报错,因为只要右边不是单纯的数字相加,含有变量,就不会再进行自动类型转换了,此时需要强制类型转换:byte a= (byte)(i+10);
  (4)、一旦char类型的变量进行了数学运算,那么字符就会按照一定的规则翻译成一个数字。
  (5)、 byte+byte会自动提升为int+int;然后再进行运算,所以两个byte类型的变量进行运算的时候,要用int类型的变量进行接收;例如:byte a=1;byte b=2;int c = a+b
  注意:a+=b和a=a+b的区别
      ① a+=b是自动转化类型,a = a+b则不会自动转化,需要手动进行强制类型转化。
      ② b1+=b2;不需要强制转换,会直接将结果转为目标类型,不会报错。
      ③ byte b,b1=2,b2=5;b=(byte)(b1+b2);需要强制转换,不然会报错。如果是:byte b; b=1+1;此句不会报错,因为1+1优先级比=高,所以先是运算1+1;然后直接将2赋值给了b,所以不会报错,是正确的表达。
      ④ a+=b是自动转化类型,a = a+b则不会自动转化,需要手动进行强制类型转化。
  总结:+=、-=、*=、/=、%=:可以直接将结果转为目标类型,不需要强制类型转换。
  其它补充: 如果被转换变量的值超过目标类型的最大值,超出部分从目标类型的最小值进行累加。例:int i = 129; byte b = (byte)i;System.out.println(b);输出结果为-127;因为byte类型最小值为-128,129超出最大值127两位数,即2;则从最小值往前数2位:-128、-127;所以输出为-127;

2、强制类型转换(也叫显式类型转换)

  (1)、将大类型转小类型 、将精度高的类型转精度低的类型,指基本数据类型之间的转换,在某种情况下会丢失精度.

3、数据类型自动提升

  (1)、小类型和大类型进行操作结果是大类型
  (2)、精度低的类型与精度高的类型进行操作结果是精度高的类型
  (3)、分析System.out.println(a+ 1+"")与System.out.println(“”+a+ 1);例如:int a =300;System.out.println(a+ 1+""); System.out.println(“”+a+ 1); System.out.println(“”+a+ 1);输出结果分别为:301;3001
  注意:double类型、float类型转int类型的时候,并不会对数据四舍五入,而是会把小数部分全部舍弃掉,只保留整数部分数值。

4、基本数据类型转换为String类型三种方式

  (1)、“” + 基本数据类型
  (2)、String.valueOf(参数);参数可以为基本数据类型。
  (3)、将基本数据类型转为封装类对象,通过封装类对象toString0;(不推荐) 。例如:Integer inte = i; String str2 = inte. toString();

5、String类型转换为其他八种基本数据类型方式

  5.1、第一种方式(直接)
    (1)String类型转换为byte类型:Byte封装类中的parseByte()方法
    (2)String类型转换为byte类型数组:String字符串.getBytes();
    (3)String类型转换为short类型:Short封装类中的parseShort()方法
    (4)String类型转换为int类型:Integer封装类中的parseInt()方法
    (5)String类型转换为long类型:Long封装类中的parseLong()方法
    (6)String类型转换为float类型:Float封装类中的parseFloat()方法
    (7)String类型转换为double类型:Double封装类中的parseDouble()方法
    (8)String类型转换为char类型:不能直接转换,要将字符串转化为char类型的数组的ToCharArray()方法
    (9)String类型转换为boolean类型:Boolean封装类中的parseBoolean方法,只有字符串的值是true时(不区分大小写),结果才是true,否则都是false
  5.2、第二种方式(间接)
    (1)通过封装类,先将字符串转为封装类对象。然后通过拆箱操作或者封装类对象.xxxValue();

6、补充

  6.1、a+=b和a=a+b的区别
    (1)a+=b是自动转化类型,a = a+b则不会自动转化,需要手动进行强制类型转化。
    (2)总结:+=、-=、*=、/=、%=:可以直接将结果转为目标类型,不需要强制类型转换。
    (3)二者举例对比
      ① b1+=b2;不需要强制转换,会直接将结果转为目标类型,不会报错。
      ② byte b,b1=2,b2=5;b=(byte)(b1+b2);需要强制转换,不然会报错。
      ③ 如果是:byte b; b=1+1;此句不会报错,因为1+1优先级比=高,所以先是运算1+1;然后直接将2赋值给了b,所以不会报错,是正确的表达。

  6.2、其他补充
    (1)如果被转换变量的值超过目标类型的最大值,超出部分从目标类型的最小值进行累加。例:int i = 129; byte b = (byte)i;System.out.println(b);输出结果为-127;因为byte类型最小值为-128,129超出最大值127两位数,即2;则从最小值往前数2位:-128、-127;所以输出为-127;

三、思维导图

Java基础----数据类型总结----含思维导图_第1张图片

你可能感兴趣的:(Java学习历程)