Java中的数据类型,记录笔记5

Java中的数据类型

/**
*   Java中的数据类型:
*       程序当中有很多的数据,每一个数据拥有与之相关的类型。
*
*
*       1. 数据类型的作用:
*           不同类型的数据占用的空间大小不同,数据类型的作用在与指导JVM在运行程序时该给分配多大的内存空间
*
*
*       2. Java数据类型分类
*           - 基本数据类型【四大类八小种】
*               第一类:整数型
*                   byte,short,int,long
*               第二类:浮点型
*                   float,double
*               第三类:布尔型
*                   boolean
*               第四类:字符型
*                   char
*
*           - 引用数据类型【暂略】
*               - 类
*               - 接口
*               - 数组
*               ......
*
*
*       3. 基本数据类型占用空间大小
*
*           基本数据类型            占用空间大小【字节】            取值
*           --------------------------------------------------------------------------
*           byte                    1                               -128~127
*           short                   2                               -32768~32767
*           int                     4                               -2147483648~2147483647
*           long                    8                               -2^63~2^63-1
*           float                   4                               
*           double                  8
*           boolean                 1                               true/false
*           char                    2                               0~65535
*
*
*       3. 基本数据类型默认值
*               整数型  byte,short,int,long
*                   默认值:0
*               浮点型  float,double
*                   默认值:0.0
*               布尔型  boolean
*                   默认值:false
*               字符型  char
*                   默认值:\u0000
*
*
*       4. 转义字符 \
*           出现在特殊字符前将其转换成普通字符
*
*           常见的转义字符:
*               - \n    换行符
*               - \t    制表符
*               - \'    一个单引号
*               - \\    普通的反斜杠
*               - \"    普通的双引号
*
*
*       5. 中文字符转换unicode编码,JDK中自带的native2ascii.exe命令
*
*
*       6. Java中"整数型字面值"被默认当作int类型
*          如果想"整数型字面值"被当作long类型处理,需要其后添加l/L,建议使用大写L
*          字面值超过2147483648后应该使用long类型处理2147483648L
*
*               - 整数型字面值三种表示:
*                   十进制【默认】
*                   八进制【以0开头】
*                   十六进制【以0x开头】
*
*               - 小容量可以自动转换大容量
*               - 大容量不能直接赋值给小容量,可以强制类型转换【不建议】通过编译但会损失精度
*                   - 强制类型转换:小容量类型 标识符 = (小容量类型)大容量数据
*
*               - byte 在赋值时字面值int在byte范围内,允许大容量(int)直接赋值给小容量(byte)
*
*
*       7. Java中的浮点型:
*           - float     单精度  4字节   字面值需要后面加F/f
*           - double    双精度  8字节   字面值默认
*
*           double的精度太低【相对而言】,不适合做财务软件
*           SUN在基础的SE类库提供一种引入数据:java.math.BigDecimal
*
*
*       8. 关于布尔数据类型
*           - 只有true、false,不像C语言可以用0,1
*
*
*       9. 基础数据转换
*           - 八种基础数据除布尔之外都可以互相转换
*           - 自动转换等级:
*               byte < short/char < int < long < float < double
*           - 字面值不超出byte,short,char的范围,可以直接赋值
*           - byte,short,char混合运算,各自先转换成int再运算
*           - 多种数据混合运算,先转换成容量最大的类型再做运算
*/


public class DataTypeTest {

    static int k = 100;

    static int f;   // 成员变量,未赋值
    // 成员变量会在未赋值时,系统会有默认赋值

    public static void main(String[] args) {

        System.out.println(k);

        System.out.println(f);  // 此次未赋值,可以正常执行
        // 因为使用了成员变量,


        // 定义一个char类型
        char c1 = 'a';   // 命名为 c1,字面值为 'a',注意是半角单引号

        System.out.println(c1);

        char c2 = '\n';  // 转义字符,\n表换行符

        /*  
            验证 \n
            System.out.print()          不会换行
            System.out.println()        会换行
        */

        System.out.print('A');
        System.out.print(c2);   // 对比有无此行的区别
        System.out.println('B');


        // unicode编码
        char n = '\u4e2d';  // '\u4e2d' 表示 '中',可以使用native2ascii工具验证
        System.out.println(n);


        System.out.println("----------整数类型----------");

        // 整数类型
        int num1 = 10;   // 十进制
        int num2 = 012;  // 八进制
        int num3 = 0xa;  // 十六进制

        System.out.println(num1);
        System.out.println(num2);
        System.out.println(num3);

        // long类型
        long numL1 = 1000;   // 存在类型转换 100 是 int ,赋值会转换
        long numL2 = 100L;  // 直接赋值

        int num4 = (int)numL1;  // 强制转换
        System.out.println(num4);

        byte num5 = (byte)num4; // num4 = 1000,byte范围-128~127,精度丢失
        System.out.println(num5);
    }
}