JavaSE之变量和运算符

2019-02-25  本文已影响0人  伍陆柒_

关键字,保留字,标识符

        // 关键字:编程语言把一些单词赋予了特殊含义
        // 保留字:以前是关键字,因功能或某些特殊原因现在不提倡使用的关键字
        // 标识符 : 一切需要程序员自己起名的东西
        //          必须以字母、下划线(_)或美元符号($)开头;
        //          余下的字符可以是下划线、美元符号或任何的字母或数字,长度不限
        //          标识符中不能有空格;
        //          不能使用Java中的关键字或者保留字做为标识符
        //      类 : 每个单词首字母大写,其余字母小写,如 HelloWorld,Demo,GetMaxAge,DBUtils
        //      包:  所有单词小写
        //      变量和方法:首个单词小写,其余单词首字母大写,其余小写 (main,getAge,getMaxAge)
        //      常量:全大写(PI,MAX_VALUE)

Java中数据类型分两大类型

public class Demo2 {
    public static void main(String[] args) {
        // 数据类型
        //  一、基本数据类型 (4类8种):
        //      ①整型(byte,short,int[默认类型],long),他们之间取值范围不同
        //      ②浮点型(float,double[默认类型]),他们之间取值范围不同
        //      ③字符型(char)
        //      ④布尔型(boolean)
        //  二、引用数据类型,从数组开始接触
//      System.out.println(100); // int[默认类型]
//      System.out.println(100.99);// double[默认类型]
        // 变量 :程序运行过程中可变的量
        // Java是一种强类型语言 : 1.变量必须要声明(创建);2.必须指定类型;3.必须指定名称
        // 语法 :类型 名称 [= 值]
        byte num1 = 127;
        short num2 = 200;
        int num3 = 100;
        // long数据,末尾加大小写l均可,表示数字的取值范围是long的范围,不是默认的int范围
        long num4 = 9999999999L;
        
        double num5 = 9.001;
        float num6 = 100.99f;
//      使用一个变量时,必须经过初始化(被赋过值),否则无法编译
        System.out.println(num1);
        System.out.println(num2);
        System.out.println(num3);
        System.out.println(num4);
        System.out.println(num5);
        System.out.println(num6);
        
//      字符型 : 单引号,只能表示一个字符,包括中文,说明char占2字节
        char c1 = '中';
//      字符在磁盘中是以数字形式保存的
        System.out.println(c1+1);
//      布尔型 : 只可以赋 true or false
        boolean b1 = true;
    }
}

常见进制,字符,转义符

public class Demo2 {
    public static void main(String[] args) {
        // 1.进制(二进制,八进制,十六进制)
//      int num1 = 010;
//      int num2 = 0x1F;
//      System.out.println(num1);
//      System.out.println(num2);
        // 2.字符的另一种表示方式unicode,次要
//      char c1 = '\u4e2d';
//      System.out.println(c1);
        // 3.转义符,次要
        char c1 = '\t';
        System.out.print(c1);
        System.out.println(1);
//      System.out.print(1);
//      System.out.println(2);
    }
}

同一个块内,不能声明同名变量
变量的作用域:变量的有效范围,从声明它的位置开始,到它所在的块结束

算术运算符

//      算术运算符: +、﹣、*、/、%、++、 --
//      + : 如果+两侧是数值表达式,做的就是加法;如果+有一侧有字符串,加号就是连接符号
//      System.out.println(5+6+7);// 18
//      System.out.println(5+"6"+7);// 567
//      System.out.println(5+6+"7");// 117
//      System.out.println(5+6+'7');// 66
//      System.out.println(5+","+6);// 5,6
        
//      int num1 = 1011;
//      int num2 = 1;
//      num1+num2=1012
//      System.out.println("num1+num2="+(num1+num2));
//      1011+1=1012
//      System.out.println(num1+"+"+num2+"="+(num1+num2));
        
        // / : 整型与整型相除,结果还是整型(取整,不是四舍五入)
//      System.out.println(11/3); // 3
//      System.out.println(11.0/3);// 3.6666666666666665
//      System.out.println(11/3.0);// 3.6666666666666665
        
//      % 取余数(模运算):结果的正负,只与被除数有关
//      System.out.println(5%2);//      1
//      System.out.println(-5%2);//     -1
//      System.out.println(5%-2);//     1
//      System.out.println(-5%-2);//    -1
//      System.out.println(4%5);//4

自增,自减

public class Demo4 {
    public static void main(String[] args) {
        // ++自增 , --自减
//      i++;// i = i + 1; i+=1;
//      ++i;// i = i + 1; i+=1;
//      int i = 1;
//      int j = 0;
//      j = i++;// ++在后,先运算,再自增
//      System.out.println(i);//2
//      System.out.println(j);//1
//      System.out.println(++i);
//      System.out.println(i);
        int i = 1;
//      i++;
//      System.out.println(i++);// 2
//      System.out.println(i++);// 3
//      System.out.println(i);//4
        int j = 11110;
        j = ++i;
        System.out.println(i);// 2
        System.out.println(j);// 2
    }   
}
public class Demo5 {
    public static void main(String[] args) {
        int num1 = 20;
        int num2 = 30;
        System.out.println((num1++)+num2);// 50
        System.out.println(num1+","+num2);// 21,30
        System.out.println((num1++)+num2++);// 51
        System.out.println(num1+","+num2);// 22,31 
        System.out.println((num1++)+(++num2));// 54
        System.out.println(num1+","+num2);// 23,32
    }
}
public class Demo6 {

    public static void main(String[] args) {
        int num1 = 20;
        int num2 = 30;
        System.out.println((num1++)+num2+","+((++num1)+(++num2)));// 50,53
        System.out.println(num1+","+num2);// 22,31
    }

}

赋值运算符:=、+=、﹣=、*=、/=、%=

        int num = 10;
//      System.out.println(num);//10
//      num = 100;
//      System.out.println(num);//100
//      num += 10;// 与num = num + 10;等效
//      System.out.println(num);//110
//      num -= 10;// 与num = num - 10;等效
//      System.out.println(num);//100
//      num *= 10;// 与num = num * 10;等效
//      System.out.println(num);//1000
//      num /= 3;
//      System.out.println(num);
//      num %= 3;
//      System.out.println(num);

比较运算符

public class Demo8 {
    public static void main(String[] args) {
        // 比较运算符:>、<、>=、 <=、==、!=
        int age = 22;
        if(age > 18) {
            System.out.println("成年人");
        }
        if(age == 18) {
            System.out.println("正好18");
        }
        if(age != 18) {
            System.out.println("不是18");
        }
        if(age < 18) {
            System.out.println("未成年人");
        }
    }
}

逻辑运算符

public class Demo9 {
    public static void main(String[] args) {
        // 逻辑运算符:!非、&&与、||或
        int age = 12;
        double height = 1.99;
//      &&与
//      if(age > 18 && height > 1.8) {
//          System.out.println("你真棒,又高又高");
//      }
        
//      ||或
//      if(age > 18 || height > 1.8) {
//          System.out.println("你真棒,又高又高");
//      }
        
//      !只能对boolean值取反,true取反false,false取反true
        boolean b = height > 1.8;
        if(!b) {
            System.out.println(111);
        }
    }
}

位运算符(次要)

public class Demo10 {
    public static void main(String[] args) {
        // 位运算符: &、|、^ 、 ~、>>、<<、>>>(pass)
        // 自己定义一个整数,代表年份
//      int year = 2020;
        //  闰年判断依据:能被4整除且不能被100整除,或者能被400整除
//      if(year%400 == 0 | (year%4 == 0 & year%100 != 0)) {
//          System.out.println("闰年");
//      }
        
//      按位与&,按位或| 和 逻辑与&&,逻辑或|| 都能进行逻辑判断
//      按位与&,按位或|能够参与位运算(位运算:针对的是二进制整数)
//      & :只有参加运算的两位都为1,&运算的结果才为1,否则为0
        /*
         *  101     5
            110     6
            ----------
            100     4
         */
//      System.out.println(5&6);
//      System.out.println(3&5);
//      | :只有参加运算的两位都为0,|运算的结果才为0,否则为1
        /*
         *  101     5
            110     6
            ----------
            111     7
         */
//      System.out.println(5|6);
//      ^:只有参加运算的两位不同,^运算的结果才为1,否则为0
        /*
         *  101     5
            110     6
            ---------
            011     3
         */
//      System.out.println(5^6);
        
//      << :a<<b,将a的二进制数据左移b位,右边移空的部分补0  1100 12    
        // 3*2^2 = 12 
        // 5*2^3 = 40 
        // 4*2^4=64 
        // a<<b等效于a*2^b
//      System.out.println(4<<4);
        
//      >> : a>>b 64/(2^2) 128/(2^3)
        // a>>b等效于a/(2^b)
//      System.out.println(128>>3);
        
//      int num = 2;以效率最高的形式变成8
//      int num = 2;
//      num = num<<2;
//      System.out.println(num);
    }
}

&,|和&&,||有什么异同
1.都能参与逻辑运算
2.&,|还能参与位运算,&&,||不能
3.&&,||有短路性,&,|没有

三元运算符

public class Demo12 {
    public static void main(String[] args) {
        // 条件运算符(三元运算符): ?:
        // 表达式1? 表达式2: 表达式3
        // 当表达式1是true时,返回表达式2,否则返回表达式3  
//      int num = 1451 > 999 ? 0 : 1;
//      System.out.println(num);
        
//      year%400 == 0 || (year%4 == 0 && year%100 != 0
        int year = 1600;
        System.out.println(year%400 == 0 || (year%4 == 0 && year%100 != 0) ? "闰年" : "平年");
    }
}

类型转换

public class Demo2 {
    public static void main(String[] args) {
        // 类型转换
        // 1.自动类型转换 :两种类型彼此兼容的,目标类型取值范围大于原类型
//      byte num1 = 12;
//      short num2 = num1;
//      int num3 = num2;
//      long num4 = num3;
        // 2.强制类型转换:两种类型彼此不兼容的,目标类型取值范围小于原类型
        long num1 = 128;
        int num2 = (int)num1;
//      short num3 = (short)num2;
//      byte num4 = (byte)num3;
//      System.out.println(num2);
//      System.out.println(num3);
//      System.out.println(num4);
        char c1 = 'A';
        char c2 = (char)(c1 + 32);
//      System.out.println(c2);
    }
}

运算时有兼容方向

public class Demo3 {
    public static void main(String[] args) {
        // 运算时的兼容
        // 向范围大的方向兼容
//      long num1 = 10;
//      int num2 = 20;
//      int num3 = (int)(num1 + num2);
//      System.out.println(num3);
        
        // byte short char int ->int
        
//      byte num1 = 9;
//      short num2 = 10;
//      short num3 = (short)(num1 + num2);
//      int num3 = num1 + num2;
        
        short num1 = 99;
//      num1+2计算结果为int类型,需要强转才能赋值给short
        num1 = (short)(num1 + 2);
//      +=有自动转换,无需强转
        num1 += 2;
//      short num1 = 99; num1 = num1 + 2;与num1 += 2;有什么区别
    }
}
上一篇 下一篇

猜你喜欢

热点阅读