Java学习笔记5 运算符

213 阅读6分钟

Java基础语法

运算符与表达式

  1. 从功能角度分,Java中的运算符可以分为算术、关系、位、逻辑运算符四类;

    • 运算符既可以对变量进行运算,也可以对常量进行运算,被运算的数据称作操作数;

    • 多数运算符的操作数只能是基本数据类型,只有++====!=!=例外,其中+不仅能对基本数据类型进行加运算,还能将字符串进行连接;====!=!=除了可以比较基本数据类型的二进制值外,还能比较基本数据类型的地址;

  2. 算术运算符用来对操作数进行数学运算;+比较特殊,除了能做加运算外,还能对两个字符串进行连接;

    注意:++在前,先自加1,后进行赋值。++在后,先进行赋值运算,再自加1。

    运算符运算规则范例结果
    +正号+3131
    +2+3243
    +连接字符串“浙江”+“大学”浙江大学
    -负号int a=43;-a-43
    -3-12
    *2*36
    /15/27
    %取模15/21
    ++自增int a=1;a++/++a2
    --自减int b=3;a--/--a2
    public class  Test1 {
        /*
        *运算符
         */
        public static void main(String[] args) {
            int num1=12;
            int num2=5;
    
            int i=1;
            int a=1;
            int j=++i; //先自加,再赋值
            int x=a++; //先赋值,再自加
    
            System.out.println("num1+num2="+(num1+num2));	//17
            System.out.println("num1-num2="+(num1-num2));	//7
            System.out.println("num1*num2="+(num1*num2));	//60
            System.out.println("num1/num2="+(num1/num2)); 	//结果是商的整数部分,2
            System.out.println("num1%num2="+(num1%num2)); 	//2
            System.out.println("i="+i);		//2
            System.out.println("j="+j);		//2
            System.out.println("a="+a);		//2
            System.out.println("x="+x);		//1
    
        }
    }
    
  3. 关系运算符又叫比较运算符,用来运算两个操作数的大小关系,返回值是true或false;

    • ==以及!=也可以对引用类型进行运算,比较是否是同一个对象,其实比较的是引用类型的地址;

    注意:=表示赋值, ==表示的比较

    运算符运算规则范例结果
    ==相等于14==13false
    !=不等于14!=13true
    <小于14<13false
    大于14>13true
    <=小于等于14<=13false
    >=大于等于14>=13true
  4. 位运算符针对操作数的二进制位进行运算;

    15的二进制是00001111,6的二进制是00000110

    运算符运算规则范例结果
    &位与15&66
    |位或15|615
    异或15^69
    ~取反~6-16
    <<左移位8<<232
    >>右移位8>>22
    >>>无符号右移位8>>>22
  5. 逻辑运算符示例如下:

    注意:&和&&区别 &&有短路现象

    • 如果存在T1&T2,当T1为false时,返回值已经确定为false,但是依然还会运算T2表达式;所以称为非短路;

    • 如果存在T1&&T2,当T1为false时,返回值已经确定为false,就不会运算T2表达式;所以称为短路;

    |和||区别 ||有短路现象

    运算符运算规则范例结果
    &false&truefalse
    |false|truetrue
    异或false^truetrue
    !!trueflase
    &&双与false&&truefalse
    ||双或false||truetrue
    public class Test2 {
        /*
        &&和||有短路现象
        如果存在T1&T2,当T1为false时,返回值已经确定为false,但是依然还会运算T2表达式;所以称为非短路;
        如果存在T1&&T2,当T1为false时,返回值已经确定为false,就不会运算T2表达式;所以称为短路;
         */
        public static void main(String[] args) {
            int i=10;
            int j=20;
            int x=10;
            int y=20;
    
            if (i==11&++j==21){
                System.out.println("符合条件");
            }
            System.out.println("i="+i);
            System.out.println("j="+j);
    
            if (x==11 && ++y==21){
                System.out.println("符合条件");
            }
            System.out.println("x="+x);
            System.out.println("y="+y);
        }
    }
    
  6. 条件运算符是唯一的一个三元运算符,它有三个表达式操作数(不是典型的两个操作数),使用下面的格式:

    表达式1?表达式2:表达式3

    在这个语句中,表达式1必须产生一个布尔值。如果表达式1的值为true,那么表达式2被计算。如果表达式值为false,那么表达式3被计算,并且整个表达式的值是有条件的。三元操作符与典型的if语句部分相似。

    public class Test3 {
        public static void main(String[] args) {
            int num1 = 2;
            int num2 = 5;
            int max;
    
            //方式1
            if (num1 > num2) {
                max = num1;
            } else {
                max = num2;
            }
            System.out.println("最大值:"+max); //5
    
            //方式2:三目运算符
            max=(num1>num2?num1:num2);
    
            System.out.println("最大值:"+max); //5
        }
    }
    
  7. Java中的赋值可以使用普通的=进行赋值;也可以=与其他运算符一起进行复合赋值,即运算后赋值,复合赋值运算符。

    运算符运算规则范例结果
    =赋值int a=77
    +=加后赋值int a=7,a+=29
    -=减后赋值int a=7,a-=25
    *=乘后赋值int a=7,a*=214
    /=整除后赋值int a=7,a/=23
    %=取模后赋值int a=7,a%=21
  8. 运算符的优先级:算术运算符优先级较高,关系和逻辑运算符优先级较低。

  9. Java注释:

    • // 单行注释,简单的解释语句含义.

    • /* 多行注释,用来说明更多的内容,包括算法等.

      ​ ……

      */

    • /** Java文档注释,可以通过javadoc生

      ​ 成类和接口的HTML格式的帮助文档。

      ​ 这种注释有其特殊的格式(参见相关文档)

      */

  10. 标识符的命名法规则

    字母、数字、下划线和$符号组成。但是不能以数字开头。避开关键字或者保留字。

    • 保留字:具有专门的意义和用途,不能当作一般的标识符使用,这些标识符称为保留字(reserved word);
    • 注意:全部都是小写

    abstract break byte boolean catch case class char continue default double do else extends false final float for finally if import implements int interface instanceof long length native new null package private protected public final return switch synchronized short static super try true this throw throws transient void while

    注意:run不是。goto是。C/C++中,goto常被用于跳出多重循环。但goto 语句的使用往往会使程序的可读性降低,所以 Java 不允许 goto 跳转。Java中依然保留了goto这个关键字留作备用,但这个关键字没有任何作用,只是为了将来可能的扩展,防止使用goto作为程序中的标识符。

  11. 变量:程序中的基本存储单元,其定义包括变量名、变量类型和作用域几个部分

  12. 作用域(Scope):决定了变量可使用的范围

    a) 全局变量(Global variables):变量可以在整个类中被访问;

    b) 局部变量( Local variables ):变量只能在定义其的代码段中被访问。

    作用域规则:在一个代码段中定义的变量只能在该代码段或者该代码段的子代码段中可见。

    使用局部变量比使用全局变量更安全。

  13. 常量就是特殊的变量,不能修改值的变量。

    //常量定义格式:
    //一般用大写单词命名。
    final int NUM_F = 1; 
    System.out.println("num="+NUM_F);     
    NUM_F = 100;   //会报错,无法赋值    
    System.out.println("num="+NUM_F);