美文网首页
JavaSE之变量和运算符

JavaSE之变量和运算符

作者: 伍陆柒_ | 来源:发表于2019-02-25 16:58 被阅读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;有什么区别
        }
    }
    

    相关文章

      网友评论

          本文标题:JavaSE之变量和运算符

          本文链接:https://www.haomeiwen.com/subject/kivgyqtx.html