数据类型 Data Type

基本数据类型
字节型 byte
. 1个字节
. 取值范围:[-128, 127]
class ByteType {
    public static void main(String[] args) {
        byte byteMin = Byte.MIN_VALUE;
        byte byteMax = Byte.MAX_VALUE;
        System.out.println(byteMin);
        System.out.println(byteMax);
    }
}
字符型 char
. 2个字节;可以存放中文;单引号''括住的单个字符;注意:String不是类型关键字,而是一个类
. 取值范围:[0, 35535]
public class CharType {
    public static void main(String[] args) {
        char charMin = Character.MIN_VALUE;
        char charMax = Character.MAX_VALUE;
        System.out.println((int) charMin);
        System.out.println((int) charMax);
    }
}
短整型 short
. 2个字节;使用较少
. 取值范围:[-32768, 32767]
class ShortType {
    public static void main(String[] args) {
        short shortMin = Short.MIN_VALUE;
        short shortMax = Short.MAX_VALUE;
        System.out.println(shortMin);
        System.out.println(shortMax);
    }
}
整型 int
. 4个字节
. 取值范围:[-2147483648, 2147483647]
public class IntChange {
    public static void main(String[] args) {
        int intMin = Integer.MIN_VALUE;
        int intMax = Integer.MAX_VALUE;
        System.out.println(intMin);
        System.out.println(intMax);
    }
}
长整型 long
. 8个字节,需带上后缀L[大写避免被视为1]
浮点型 float
. 4个字节,需带上后缀F[大写],表示单精度,否则会被看作双精度
. 取值范围:[4E-45, 3.4028235E38]
class FloatType {
    public static void main(String[] args) {
        Float floatMin = Float.MIN_VALUE;
        Float floatMax = Float.MAX_VALUE;
        System.out.println(floatMin);
        System.out.println(floatMax);
    }
}
双精度 double
. 8个字节,双精度
布尔型 boolean
. only取值:true或false
变量 Variable
变量名表示一块内存空间;变量值是存放在内存空间的数据
三要素:数据类型、变量名、变量值
可以定义的时候同时赋值;也可以先声明,等到使用的时候再赋值
同一个作用域scope[通常指{}]内不可以重名
可以定义/声明多个变量,以,分隔
. 数据类型 变量名=变量值; 如:int a = 10;
. 数据类型 变量名; 如:float f;
. 数据类型 变量名, 变量名, 变量名; 如:float a, b, c;
常量 Final
程序执行过程不改变,否则:Cannot assign a value to final variable 'age'
使用关键字final修饰常量
必须声明的时候同时赋值:final 数据类型 常量名 = 常量值; 如:final int = 40;
字面常量
字符常量:'c'
字符串常量:"hi,there"
整数常量:18
浮点数常量:3.14
布尔常量:true, false
空常量:null;基本数据类型不可以赋值为null;引用数据类型可以,如 String str=null;
数据类型转换
自动类型转换
规则1:byte → short → int → long → float → double
规则2:char → int → long → float → double
char和short不能转换
char:0-65535
short:-32768-32767
强制类型转换
. 使用强转符()
. 大空间数值类型转换为小空间数值类型
. 如long型转为int:(int)100L
. 如非必须,尽量不要使用强制转换;建议从优化代码角度入手解决需求
. 布尔类型不能和其它7种数据类型转换
. 精度可能损失
class Precious {
    public static void main(String[] args) {
        byte a = 10;
        byte b = 20;
        byte res = (byte)(a + b);
        System.out.println(res);
    }
}
. 数据溢出
class Loss {
    public static void main(String[] args) {
        int num = 128;
        byte b = (byte) num;
        System.out.println(num);
        System.out.println(b);//-128
    }
}
. 算术运算时,byte、short、char首先提升为int再运算;相反的,对这些数据类型的赋值,也是直接将int类型转换为对应的数据类型,如 byte=10;而不需要 byte = (byte)10
class ToInt {
public static void main(String[] args) {
    byte b = 10;
    char c = 46;
    short s = 100;
    int res = b + c + s;//如果res为其它类型就报错
    System.out.println(res);
}
}
[] 原码、反码、补码
引用数据类型 DaReferenced Type
数组
接口
...