Java-2 基本数据类型 基本数据类型转换 运算符

整数类型: byte(1字节) short( 2字节) int(默认类型 4字节) long(8字节)
1字节 = 8位 1byte = 8bit

    //byte :  取值范围-128~127
    byte b = 127;
    //byte b1 = 128;//溢出

    //short
    short s = 1234;

    //int
    int i = 1234567;

    //long:需要在末尾加上小写L或者小写l
    long l = 1238737443874L; //0-9  十进制,不能以0开头
    long l1 = 0XA223B3L;    //0-9 A-F(代表10-15) 十六进制 ,以0x或0X开头
    long l2 = 01734L;        //0-7 八进制,以0开头

浮点型: float(4字节) double(默认类型 8字节)

    //float  单精度
    float f = 1234.56f;//末尾加上大写L或者小写l修饰

    //double 双精度(默认类型)
    double d = 12345.56;

字符类型:char(2字节)
单引号”括起来,字符串String用双引号”“括起来

    char c = 'a';
    char c1 = '3';
    char c2 = '中';
    char c3 = 97;   //a  ascii码   a-z:97-122  A-Z:65-90
    char c4 ='\n';      //换行 转义字符
    char c5 ='\u1330' ; //j  unicode编码  

    System.out.println(c);
    System.out.println(c1);
    System.out.println(c2);
    System.out.println(c3);
    System.out.println(c4);
    System.out.println(c5);

    System.out.println("'happy \\ \n \"birthday\" '");

布尔类型:true false

    boolean b1 = true;
    boolean b2 = false;

数据类型隐式转换(自动转换):
小 -> 大
特殊:long -> float
注意:byte short char类型之间不互相转换,计算时,默认转换为int类型做计算

    //int -> float
    int num = 1234;
    float fnum = num;//int类型隐式转换为float

    System.out.println("num:" + num);  //1234
    System.out.println("fnum:" + fnum);//1234.0

    //long->float
    long l = 1234l;
    float f = l;


    //byte类型计算
    byte b = 123;
    byte c = 12;

    int sum = b + c;       //byte默认转换为int类型之后做计算
    byte sum2 = (byte)(b+c);//强制转换

数据类型强制转换(手动转换):
转换风险:1. 数字溢出 2.失去精度

    //long -> short
    long l1 = 1234567890123456L; //long
    short s = (short)l1;         //short

    System.out.println("long:" + l1);//1234567890123456L
    System.out.println("short:" + s + "  " + Short.MAX_VALUE + "  " + Short.MIN_VALUE  );//-17728

    // + 算数运算    与   字符串拼接
    int num = 1;
    int num2 = 2;
    System.out.println(num + num2);//3
    System.out.println(num + num2 + "AB");//3AB
    System.out.println("AB" + num+ num2);//AB12

    // / 除法运算: 若是两个整数相除,只保留整数部分;
    int num3 = 10;
    int num4 = 3;
    int result = num3/num4;
    System.out.println(result);// 3

    float f = 10;
    float f2 = 3;
    float result2 = f/f2;
    System.out.println(result2);// 3.3333333

    //% 取余(取模):被模数为正数结果都为正,被模数为负数结果都为负
    System.out.println(5%2);   //1
    System.out.println(5%-2);  //1
    System.out.println(-5%2);  //-1
    System.out.println(-5%-2); //-1

    // ++ 自增 : ++num ,先加1,再计算       num++,先计算,再加1
    int num5 = 4;
    System.out.println(num5++);//4
    System.out.println(num5);  //5

    // -- 自减 : --num ,先减1,再计算       num--,先计算,再减1
    int num6 = 4;
    System.out.println(--num6);//3
    System.out.println(num6);  //3

    /**
     * 赋值运算符
     */
    int x = 10;
    int y = 20;

    x += y; //等同于 x = x + y
    System.out.println(x); //30

    x -=y;  //等同于 x = x - y
    System.out.println(x); //10

    x *= y; //等同于 x = x * y
    System.out.println(x); //200

    x /= y; //等同于 x = x / y
    System.out.println(x); //10

    /**
     * 关系运算符: "=="不要写成"="
     *          "!=" 不要写成"<>"
     */
    // == 判断是否相等,返回boolean值
    int num7 = 10;
    int num8 = 20;
    System.out.println(num7 = num8); //20
    System.out.println(num7 == num8);//true

    // != 判断是否不等,返回boolean值
    System.out.println( 5 != 3);//true
//System.out.println( 5 <> 3);//语法错误  SQL语法中的比较运算符

    //逻辑与  && :所有表达式均满足条件,返回true,否则返回false
    System.out.println(true && true);//true
    System.out.println(false && true);//false 短路运算
    System.out.println(true && false);//false
    System.out.println(false && false);//false 短路运算
    System.out.println(true && true && false && true);//false  短路运算

    //短路运算
    int num9 = 8;
    boolean result3 = ((num9 == 10) && (++num9 > 8));
    System.out.println(result3);//false
    System.out.println(num9);   //8

    //逻辑或  || :任意表达式返回true,结果即为true,如果所有表达式返回false,结果才为false
    System.out.println(true || true);//true
    System.out.println(false || true);//true
    System.out.println(true || false);//true
    System.out.println(false || false);//false

    //逻辑非  !:对现有的结果取反
    System.out.println(!true);//false
    System.out.println(!false);//true

    /**
     * 位运算符:只对byte、short、char、int、long有效
     */
    //按位与  & :所有表达式均满足条件,返回true,否则返回false
    System.out.println(true & true);  //true
    System.out.println(false & true); //false  非短路运算
    System.out.println(true & false); //false  非短路运算
    System.out.println(false & false);//false 非短路运算

    //1代表true  0 代表false
    System.out.println(1 & 1);//true 1
    System.out.println(0 & 1);//false 0  非短路运算
    System.out.println(1 & 0);//false 0  非短路运算
    System.out.println(0 & 0);//false 0 非短路运算

    //非短路运算
    int num10 = 8;
    boolean result4 = ((num10 == 10) & (++num10 > 8));// false true
    System.out.println(result4); //false
    System.out.println(num10);   //9

    //按位或  | :只要任意一个表达式满足条件,返回true,如果所有表达式均不满足条件,返回false
    System.out.println(true | true);  //true
    System.out.println(false | true); //true  非短路运算
    System.out.println(true | false); //true  非短路运算
    System.out.println(false | false);//false 非短路运算

    //1代表true  0 代表false
    System.out.println(1 | 1);// 1
    System.out.println(0 | 1);// 1  非短路运算
    System.out.println(1 | 0);// 1  非短路运算
    System.out.println(0 | 0);// 0 非短路运算

    //异或 ^ :两者不一致返回true,否则返回false
    System.out.println( true ^ true);   //false
    System.out.println( true ^ false);  //true
    System.out.println( false ^ true);  //true
    System.out.println( false ^ false); //false

    //1代表true  0 代表false
    System.out.println( 1 ^ 1); //false 0
    System.out.println( 1 ^ 0); //true 1
    System.out.println( 0 ^ 1); //true 1
    System.out.println( 0 ^ 0); //false 0

    /*
     * 位运算
     */
    System.out.println( 4 & 3); //0
    System.out.println( 4 | 3); //7
    System.out.println( 4 ^ 3); //7
    //4  0100
    //3  0011
    //&  0000   |  0111    ^ 0111

注意:
逻辑运算符 与 位运算符的区别:
相同点:都可以做逻辑运算
不同点:
① 逻辑运算符用两个字符表示,例如 && 、||
位运算符用一个字符表示,例如&、|
② 逻辑运算符做短路运算,效率较高
位运算符做非短路运算
③ 位运算符可以做按位运算,逻辑运算不可


    // << 左移 (以二进制值进行移位操作) : 左边移除部分直接丢弃,右边空出位置补0
    int num11 = 3;
    System.out.println(Integer.toBinaryString(num11));//0011
    System.out.println(num11 << 1); //6
    //3   00000011
    //6   00000110

    // >> 右移 :右边移除部分直接丢弃,左边空出位置,最高位如果为0(0代表正数),则补0,若果为1(1代表负数),则补1
    int num12 = 6;
    System.out.println(Integer.toBinaryString(num12));//0110
    System.out.println(num12 >> 2);//1
    //6 00000110
    //1 00000001

    // >>> 无符号右移
    int num14 = -8;
    System.out.println(Integer.toBinaryString(num14));//11111111111111111111111111111000
    System.out.println(num13 >>> 3);//536870911

    /**
     * 三元运算符(包含三个表达式):
     *      表达式1 ?表达式2 :表达式3
     */
    int num15 = 3;
    System.out.println((num15 >= 10) ? "是" : "否");//否

    //二元运算符(包含二个表达式)
    int z = x+y;

    //一元运算符(包含一个表达式)
    ++num15;

猜你喜欢

转载自blog.csdn.net/qq_36090002/article/details/81570001