数据类型

/*
    关于java的数据类型:
        1、数据类型的作用:
            是指导JVM在运行程序的时候给
            该数据分配多大的内存空间

        2、java数据类型分为两类:
            * 基本数据类型
            * 引用数据类型
        
        3、关于基本数据类型:
            * 基本数据类型分为四大类八小种:
                第一类:整数型
                    byte,short,int,long
                第二类:浮点型
                    float,double
                第三类:布尔型
                    boolean
                第四类:字符型
                    char
        
        4、字符串"abc"不属于基本数据类型,
            属于“引用数据类型”
            * 字符串使用双引号 "abc"
            * 字符使用单引号   'a'

        5、字节(Byte):
            1 Byte = 8 bit 【1个字节 = 8个比特位】
            1个比特位表示一个二进制位:1/0
            1 KB = 1024 Byte
            数字都是有正负之分的,
            在数字的二进制位的最左边称为“符号位”,
            0表示正数,1表示负数

        6、八个基本数据类型各自占用空间大小:
            
            基本数据类型   占用空间大小【单位:字节】
            -------------------------------------------
            byte                   1
            short                  2
            int                    4
            long                   8
            float                  4
            double                 8
            boolean                1
            char                   2

        7、八种基本数据类型的默认值

        数据类型                默认值
        -------------------------------
        byte,short,int,long      0
        float,double             0.0
        boolean                  false
        char                     \u0000

        8、八种数据类型的取值范围

        类型                     取值范围
        ----------------------------------
        byte                     [-128~127]
        short                    [-32768~32767]
        int                      [-2147483648~2147483647]
        long
        float
        double
        boolean                  [true,false]
        char                     [0~65535]
*/

public class DateType
{
    static int k = 1000;

    //成员赋值没有手动赋值系统会默认赋值【局部变量不会】
    static int f;

    public static void main (String[] args){
        System.out.println(k);
        System.out.println(f);

        //定义一个char类型的变量,起名c,同时赋值字符'a'
        char c = 'a';
        System.out.println(c);

        //一个中文占用2个字节,char正好是2个字节
        //所以java总的char类型变量可以存储一个中文字符
        char x = '国';
        System.out.println(x);

        //ab是字符串不能使用单引号括起来
        //char y = 'ab'; 错误

        //"a"是字符串类型,k变量是char类型,编译错误
        //char k = "a"

    }
}
/*
    System.out.println()与System.out.print()区别:
        println输出之后换行,print表示输出但是不换行

    java当中的char类型:
        转义字符 \
        \n 换行符
        \t 制表符
        \' 普通单引号
        \\ 普通反斜杠
        \" 普通双引号
        \u 后面的数字是某个文字的unicode编码

    JDK中自带的native2ascii.exe命令,
        可以将文字转换为unicode编码形式
    在命令行输入native2ascii.exe,回车,
        再输入中文即可得到unicode的值
*/
public class DateTypeTest01
{
    public static void main(String[] args){
        //下面属于“换行符”,属于char类型的数据
        char c2 = '\n';

        System.out.print('A');
        System.out.print(c2);
        System.out.println('B');
        
        char n = '\u4e2d';
        System.out.println(n);
    }
}

/*
关于java语言当中的整数型:
    1、java语言当中的“整数型字面值”被默认当作int类型处理
        要让“整数型字面值”被当做long类型来处理的话,
        需在“整数型字面值”后面添加l/L,建议使用大写的L

    2、java语言当中的整数型字面值有三种表示方法
        第一种方式:
            十进制【是一种缺省默认的方式】
        第二种方式:
            八进制
            【在编写八进制整数型字面值时需以0开始】
        第三种方式:
            十六进制
            【在编写十六进制整数型字面值时需以0x开始】
*/

public class DateTypeTest02
{
    public static void main(String[] args){
        
        int a = 10;
        int b = 010;
        int c = 0x10;

        System.out.println(a); //10
        System.out.println(b); //8
        System.out.println(c); //16

        //2147483647字面值是int类型,占用4个字节
        //y是long类型,占用8个字节,自动转换类型
        long y = 2147483647;
        System.out.println(y);

        //编译错误:过大的整数
        //2147483648被当做int类型,但字面值超出int类型范围
        //long z = 2147483648;
        //错误解决
        long z = 2147483648L;
        System.out.println(z);
    }
}
/*
    1、类型转换
        当一个整数字面值没有超出byte,short,char的取值范围,
        这个字面值可以直接赋值给byte,short,char类型的变量  

    2、计算机二进制有三种表示形式
        原码、反码、补码
        计算机任何情况下底层表示和存储数据时使用补码形式
        正数的补码:
            和原码相同
        负数的补码:
            负数的绝对值对应的二进制码
            所有的二进制取反,再加1

        补码:10000000
            * -128
            * 10000000 - 1 --> 01111111 --> 128
*/
public class DateTypeTest03
{
    public static void main (String args[]){
        //100L是long类型字面值,可以直接赋值
        long x = 100L;

        //x变量是long类型,8个字节
        //y变量是int类型,4个字节
        //以下编译错误,大容量不能直接赋值给小容量
        //int y = x;

        //大容量转换为小容量,
        //需进行强制类型转换,需加“强制类型转换符”
        //但是运行阶段可以损失精度,所以谨慎使用
        //强转原理:把八位二进制强制砍掉左边四位
        int y = (int)x;

        //注意:在java语言中,
        //当一个整数型字面值没有超过byte类型的取值范围,
        //该字面值可以直接赋值给byte类型的变量
        byte b = 127; //可以
    
        //byte c = 128 //编译错误
        //使用强制类型转换符
        byte c1 = (byte)128; //-128
        System.out.println(c1);
    }
}
/*
    关于浮点型数据类型:
        float 单精度【4个字节】
        double 双精度【8个字节,精度较高】
    在java语言当中,所有的浮点型字面值,
        默认被当作double类型来处理。
    要想该字面值当作float类型来处理,
        需要在字面值后面添加F/f。

    注意:
        double和float在计算机内部二进制存储
        的时候存储的都是近似值,例如3.333...
*/
public class DateTypeTest04
{
    public static void main(String[] args){
        //3.0是double类型的字面值,
        //d是double类型的变量,不存在类型转换
        double d = 3.0;
        System.out.println(d);

        //5.1是double类型的字面值,
        //f是float类型的变量,以下程序编译错误
        //float f = 5.1;

        //解决方案
        //第一种:
        //float f = (float)5.1;
        //第二种:
        float f = 5.1f;

    }
}
/*
    关于布尔型数据类型:boolean
    在java语言当中boolean类型只有两个值:true、false
*/
public class DateTypeTest05
{
    public static void main(String[] args){
        
        //编译错误:不兼容的类型
        //boolean flag = 1;

        boolean loginSuccess = true;

        //if语句
        if(loginSuccess){
            System.out.println("恭喜你,登陆成功");
        }else{
            System.out.println("对不起,密码错误");
        }
    }
}
/*
    关于基本数据类型的相互转换的转换规则:

        1、八种基本数据类型当中除了布尔类型之外
            剩下七种类型之间都可以相互转换

        2、小容量向大容量转换,称为自动类型转换,
            容量从小到大排序:
            byte < short < int < long < float < double
                    char  <
        注:
            任何浮点型不管占用多少字节,都比整数型容量大。
            char和short可表示的种类数量相同,
            但char可以取更大的正整数。

        3、大容量转换成小容量,叫做强制类型转换,
            需加强制类型转换符,但可能会损失精度

        4、当整数字面值没有超出byte,short,char的取值范围,
            可直接赋值

        5、byte,short,char混合运算的时候,
            各自先转换为int类型再运算

        6、多种数据类型混合运算,
            先转换成容量大的那种类型再做运算

        注意:
            byte b = 3; 可以编译通过
            
            int i
            byte b = i / 3; 编译错误,编译器只检查语法,
            i/3是int类型,不能赋值给byte
*/

 

 

 

posted @ 2020-08-09 22:09  Lerresino  阅读(163)  评论(0)    收藏  举报