Java 基础数据类型

Java最小计算单位为【byte=字节】,1字节=8位(bit), 常见单位如下

  • 1KB = 1024byte
  • 1MB = 1024KB
  • 1GB = 1024MB
  • 1TB = 1024GB

Java 八大基本数据类型

  • 整形

  • byte, 长度为1字节8bit,取值10000000(-128)到 01111111(127),变量初始化默认值为0,包装类Byte

  • short, 长度为2字节16bit,取值10000000 00000000(-32768)到 01111111 11111111(32767),变量初始化默认值为0,包装类Short

  • int, 长度为4字节32bit,取值-2^31 (-2,147,483,648)到 2^31-1(2,147,483,647),变量初始化默认值为0,包装类Integer

  • long, 长度为8字节64bit,取值-2^63 (-9,223,372,036,854,775,808‬)到 2^63-1(9,223,372,036,854,775,8087),变量初始化默认值为0或0L,包装类Long

  • 浮点型

  • float, 别名为单精度浮点型, 长度为4字节32bit,变量初始化默认值0.0f,包装类Float

  • double, 别名为双精度浮点型,长度为8字节64bit,变量初始化默认值0.0d,包装类Double

  • 布尔型

  • boolean, 值只有[true | false], 意思为【 是=(yes) | 不是=(no) 】

  • 字符型

  • char 可以赋值单字符以及整型数值, 变量初始化无默认值,包装类Character。

    • ASCII 占用一个字节
    • unicode 占用两个字节(如UTF-8或UTF-16等编码)

注意:

这里的包装类指的是把基础类型包装起来, 因为Java是面向对象语言,基础类型是无法new,包装类型是可以new;

二者相互转换 (JDK1.5 之后体提供了自动拆装箱)

public class TestConvert{

  public static void main(String[] args)
  {
    int a = 1;
    Integer b = 2;
    Integer c = a; // 把int 转成 Integer
    //
    Integer d = new Integer(5);
    int d1 = d; // 把 Integer 转成 int

    System.out.println("a = " + a);
    System.out.println("b = " + b);
    System.out.println("c = " + c);
    System.out.println("d = " + d);
    System.out.println("d1 = " + d1);
  }
}

输出结果如下:

a = 1
b = 2
c = 1
d = 5
d1 = 5

Java 基础运算

只能是同种类型运算, 这里以int 类型为例,如下:

public class TestBasicDataTypes {

  public static void main(String[] args)
  {
    // 定义一个变量a, 值为1,
    int a = 1;
    // 定义一个变量b, 值为2,
    int b = 2;
    // 定义一个变量a, 运算结果为(a + b) = 3,
    int c = a + b;
    // 在控制台输出结果为 :  a + b = 3
    System.out.println("a + b = " + c);
  }
}

注意:System.out.println 表示系统提供的一个输出函数

Java 不同种数据类型运算

前提:7种基本数据类型变量间的运算, 不包含boolean类型

  • 自动类型提升: (byte | short | char) --> int --> long --> float --> double
  • 强制类型转化:自动类型提升运算的逆运算
    • 需要使用强转符:()
    • 强制类型转换可能导致精度损失

注意:

  • 当byte、char、short三种类型的变量做运算时,结果为int型
public class TestBasicDataTypes {

  public static void main(String[] args)
  {
    // 定义一个变量a, 赋值为 'a', 注意是单引号的
    byte x = 'a';
    // 定义一个变量b, 赋值为2,
    int y = 1;
    // 定义一个变量a, 运算结果为(x + y) = 3,
    int c = x + y;
    // 在控制台输出结果为 :  x + y = 98
    System.out.println("x + y = " + c);
  }
}

这里 byte a = 'a', 其中 'a' 表示取 a 的ASCII值, 而a的ASCII值为97, b的ASCII值为98

public class TestASCII {

	public static void main(String[] args) {
		for(int i=0;i<255;i++)
    {
			char a = (char) i;
			System.out.println(a + " = " + i);
		}
	}
}