JAVA 学习笔记 数据类型

public class TestOne {
    //main()方法为程序执行入口
    public static void main(String[] args) {
        //java中的常量分类为  整数常量、小数常量、布尔型常量、字符常量、字符串常量、null常量、
        //字符串常量
        System.out.println("javastring");
        //字符常量   字符常量用单引号,单引号里面只能是一个字符,不能是字符串,如果是字符串会报错
        //System.out.println('hello');
        System.out.println('A');
        System.out.println('b');
        //整数常量
        System.out.println(1);
        //小数常量
        System.out.println(1.09);
        //布尔型常量 true, false
        System.out.println(true);
        System.out.println(false);
        //null常量
        System.out.println();


        //基本数据类型  1个字节8位
        // 数据类型         点位(字节)      数据范围                                  默认值
        // byte             1       8位     -128~127 最大存储数据量255                     0
        // short            2       16位     -32768~32767 最大存储数据量 65535              0
        // int              4       32位     [-2^31,2^31-1]                                 0
        // long             8       64位     [-2^63,2^63-1]                                 0L
        // char             2       16位    [0,2^16-1]                                    '\u0000'
        //float             4       32位     [-2^31,2^31-1]                                0.0F
        //double            8       64位     [-2^63,2^63-1]                                0.0D
        //boolean          1位       1位    true 或者false                                false

        //以上8种基本数据类型
        // 5种引用数据类型
        // 类、接口、数组、枚举、标注  使用new关键字创建出来的类型都是引用类型




        // byte,short,char,int,long 都可以存整数类型,
        // java语言整数默认为int类型
        // float
        byte f = 127;
        System.out.println(String.format("byte类型最大存储值: %s",f));
        int a;
        a=10;
        System.out.println(a);
        long c;
        c=68978L;
        System.out.println(c);

        System.out.println(100); //默认为int类型

        float x = 10.001f;
        System.out.println(x);

        double y = 1.000000000000001D;
        System.out.println(y);

        //char 类型的值为数据,对应的打印结果为ASCII值对应的字符打印
        char s = 97;  // a 对应的ASCII码值为97
        System.out.println(s);  //打印结果为 a

        //boolean 类型判断真假
        boolean isTrue = false;
        if (isTrue){
            System.out.println("真");
        }
        else{
            System.out.println("假");
        }
        // 数据运算的时候,必须要是数据类型一致才能进行,boolean类型不参与计算
        //
        short j = 10;  //2个字节
        int i = 20;   //4个字节
        // 自动数据类型转换 可以把小的数据类型复制给大的数据类型
        i = j; // j=i;是不可以的。
        System.out.println(i);
        //强制类型转换,会发生数据丢失,数据溢出,一般不用;
        j =(short) i;  // 强制转换数据类型      (强制转换符)大数据类型
        System.out.println(String.format("强制类型转换 %s",j));


        //自动类型提升,当一个算术表达式包含过个数据类型值时,最终数据类型提升为最高的数据存储类型;小的数据类型自动提升为大的数据类型
        int z = 20+ (int) 30.5; //强制转换数据类型后计算
        System.out.println(String.format("强制转换数据类型后,精度丢失 %s",z ));

        short u = 4;
        int v = 5;
        int fs= v+u;
        System.out.println(String.format("自动提升数据类型,小的变到最大的 %s",fs));
        //获取数据变量类型
        System.out.println(String.format("自动提升数据类型,小的变到最大的 %s",getType(fs)));
        Object fh = v+u;  //object  接收到是什么对象就是什么对象
        System.out.println(fh);
        System.out.println(getType(fh));
        System.out.println(new TestOne().equals(fh));
        //算术运算
        //两个整数相除得到的是小数的时候,小数部分忽略,结果为整数
        System.out.println(String.format("两个整数相除 15/4=%s",15/4));
        // 如果想要两个整数相除得到要的小数,需要把其中个数转为浮点数,自动提升数据存储类型大小到浮点型
        System.out.println(String.format("两个数相除得到小数:15/4=%s",15/(float)4));
        //百分号取模运算
        System.out.println(String.format("%%取模运算,求余 15%%4= %s",15%4));//字符中的第一个百分号用来进行转义
        //取模运算的方向正负,看符号的左边
        System.out.println(String.format("取模运算的正负号  -3%%2= %s",-3%2));
        System.out.println(String.format("取模运算的正负号  3%%-2= %s",3%-2));

        //自增和自减,符号写在前面的时候与后面的时候区别在于,参与运算时符号在前面需要自增1后的值参与运算,符号在后面时其值不自增1参与运营,
        int ss = 10;
        ss++;
        System.out.println(String.format("自增%s",ss));

        int yy = 10;
        ++yy;
        System.out.println(String.format("自增%s",yy));

        int xx = 10;
        int cc = (xx++)+1;
        System.out.println(String.format("a++符号在右边先做运算后值其值再加1   (xx++)+1 =%s ",cc));
        System.out.println(String.format("此时xx的值为   %s ",xx));

        int zz = 10;
        int bb = (++zz)+1;
        System.out.println(String.format("++a符号在左边先自增加1后的值参与做运算   (++zz)+1 =%s ",bb));
        System.out.println(String.format("此时zz的值为   %s ",zz));


        //自增++ 和--
        int dd = 1;
        int r =(++dd)+(dd++);
        System.out.println(String.format("自增++ 和-- ,例如 dd=1,  (++dd)+(dd++) =%s ",r));
        System.out.println(String.format("自增++ 和-- ,例如 dd=1,  (++dd)+(dd++) =%s  此时的dd= %s",r,dd));

        //赋值运算以及其运算符号
        //赋值运算符号  =, += ,-=,*= ,/=, %=
        int e = 2 ;
        e += 1;//e=e+1
        System.out.println(e);

        short g = 3;
        g += 3; // 如果是写成 g = g+3  这里涉及到数据类型自动提升,3是int类型, g+=3做了自动类型强制转换  g = (short) (g+3)  本身g+3提升为int类型 再强制转换为short类型
        System.out.println(getType(3));
        System.out.println(String.format("此时的g的值为%s,其类型为%s",g,getType(g)));

        // java运算里面的比较运算和逻辑运算
        // 与 &   逻辑表达式1 & 逻辑表达式2   ,两个表达式为真结果为true,其中一个为假 结果为false
        System.out.println(true & false); // false
        System.out.println(true & true); //true
        System.out.println(false & false); //false

        // 或 |  逻辑表达式1 | 逻辑表达式2   两个表达式其中一个我真,结果为true,两个都为假,结果为false
        System.out.println(false | false); //false
        System.out.println(true | false ); //true
        System.out.println(true | true ); //true


        //非 !  对一个布尔类型取反操作
        System.out.println(!false); //true

        // 异或   ^   表达式1 ^ 表达式2   两个表达式结果相同时为false,不同时为true
        int va = 1;
        int vb = 2;
        System.out.println(true ^ true); //false
        System.out.println(va==1 ^ vb==2); //false
        System.out.println(true ^ false); //true
        System.out.println(va==1 ^ vb ==3); //true
        System.out.println(false ^ false ); //false
        System.out.println(va==2 ^ vb==3); //false
        System.out.println(false ^ true); //true

        //与 &  只要一个为假,结果为假,无论前面表达式是真是假,后面一个表达式都会执行
        //短路与  && 在执行时,只要发现为假时,就不继续往后后执行,直接判定结果为false
//        System.out.println(va!=1 & 1==1/0); // 第二个表示式执行时报错
        System.out.println(va!=1 && 1==1/0); //false //第一个表示为假,结果都为假,不执行第二个表达式

        // 或 | 只要一个为真,结果就为真
        //短路或  ||
        System.out.println(va==1 || vb == 1/0); //true // 只要一个表达式为真结果为真,不执行第二个表示式




    }
    public static String getType(Object o){ //获取变量类型方法
//        return o.getClass().getName();
        return o.getClass().toString(); //使用int类型的getClass()方法
    }


    @Override
    public boolean equals(Object obj) {
        return super.equals(obj);
    }
}

猜你喜欢

转载自blog.csdn.net/dance117/article/details/108133099
今日推荐