java运算符

1.1 赋值运算符(=)

规则与要求

  • 赋值运算符的左边只能写变量,不能写值、不能写表达式等。

  • 赋值运算符右边的值的类型 必须 <= 左边变量的类型,否则就得强制类型转换

  • 赋值运算符,只会把=右边的值给左边的变量,即为左边的变量赋值

public class AssignOperator1{//Assign赋值,委派,Operator运算符
    public static void main(String[] args){
        int a;
        a = 1; //左边a是int,右边1是int  int=int 可以
        //a = 1.0;//左边a是int,右边1.0是double  double>int 错误
        
        double d;
        d = 1;  //左边d是double,右边1是int  int<double OK
        
        byte b = 1;
        //如果=右边是常量值,那么只要常量值在byte范围内,这个常量值就是byte类型  byte=byte正确
        //byte b2 = 200; 
        //当=右边是常量值,如果常量值超过byte范围,那么整数常量值就是int类型  int>byte 错误
        
        int num = 1;
        //byte b3 = num;//num明确是int类型,int>byte  错误
        
        int x = 1;
        int y = 2;
        x = y;//把y的值放到x中,为x重新赋值
        System.out.println(x);//2
        System.out.println(y);//2
    }
}

练习题:交换两个变量的值

public class AssignOperator2{//Assign赋值,委派,Operator运算符
    public static void main(String[] args){
        int a = 1;
        int b = 2;
        
        //解决方法:通用方法
        //借助第三个同类型的变量
        int temp = a;
        a = b;
        b = temp;
        
        System.out.println("a=" + a);//a=2
        System.out.println("b=" + b);//b=1
    }
}

1.2 比较运算符

比较运算符又称为关系运算符,用于判断两个值的大小关系。

大于:>
小于:<
大于等于:>=
小于等于:<=
等于:==       注意区分单=与双==的差别
不等于:!=

所有比较运算符的计算==结果都是true 或 false==。通常比较表达式都是作为条件判断用的。

public class CompareOperator{//Compare比较,Operator运算符
    public static void main(String[] args){
        System.out.println(5 > 3);//true
        
        int a = 1;
        int b = 2;
        System.out.println(a + b == 3);//判断a+b的结果与3是否相等
        //System.out.println(a + b = 3);//报错,=表示赋值,左边必须是1个变量,不能是表达式
        System.out.println(a);//1
        System.out.println(b);//2
        
        System.out.println(a + b != 3);//false
        System.out.println(a + b >= 3);//true  a+b的结果满足大于或等于3吗
        
        boolean result = a + b == 3;
        /*
        先计算(1)a+b(2)用a+b的结果与3做比较(3)把比较的结果放到result中
        从这里也能看出 +(算术运算符)的优先级 > 比较运算符 > 赋值运算符
        */
        System.out.println(result);//true
    }
}

1.3 算术运算符

1.3.1 规则说明

加:+
    (1)如果+左右两边都是基本数据类型(boolean除外),是求和运算
    (2)如果+左右两边有一个是字符串(String,"xxx"),就是拼接,结果也是字符串
减:-
乘:*
除:/
    被除数/除数
    整数/整数,结果仍然是整数
    整数/整数时,除数为0会报错
    小数/小数,除数为0结果是Infinity,无穷
取模或取余:%
    被除数 % 除数 得到余数,余数的正负号与被除数相同
    整数 % 整数,除数为0会报错
    小数 % 小数,除数为0结果是NaN,非数字
​
自增:++
    自增变量自己+1
自减:--
    自增变量自己-1
    
    要求:++和--必须是变量才能使用,不能是常量值,或表达式自增或自减。
    以自增为例,
    (1)当自增表达式是独立的语句时,++在前在后都一样
    (2)当自增表达式不是独立的语句,和其他运算符一起,
        ++在前,表示先自增1,再取自增变量的值做运算
        ++在后,先取自增变量的值放一边,然后自增变量加1,然后用之前取出来的值做其他运算

1.3.2 运算演示

案例一
public class ArithmeticOperator1{//Arithmetic算术,计算,Operator运算符
    public static void main(String[] args){
        int x = 1;
        int y = 2;
        int result = x / y;
        System.out.println(result);//0   int/int结果仍然是int
        
        y = 0;
        //result = x / y;
        //编译正常,符号Java语法,但是不符合计算的逻辑
        //运行时发生了java.lang.ArithmeticException: / by zero
        
        double a = 1.0;
        double b = 0.0;
        double c = a/b;//Infinity,无穷,无限
        System.out.println(c);
    }
}
案例二
public class ArithmeticOperator2{//Arithmetic算术,计算,Operator运算符
    public static void main(String[] args){
        System.out.println(5 % 2);//5模2,或者5除以2的余数,结果是1
        System.out.println(-5 % 2);//-1  
        System.out.println(-5 % -2);//-1
        System.out.println(5 % -2);//1
        //余数的正负号与被除数相同
        //被除数 ÷ 除数 = 商 ... 余数
        //被除数 = 除数 * 商 + 余数
        
        System.out.println("===========");
        //System.out.println(5 % 0);//报错java.lang.ArithmeticException: / by zero
        System.out.println(5.0 % 0.0);//NaN,Not a Number,不是一个数字
    }
}
案例三
public class ArithmeticOperator3{//Arithmetic算术,计算,Operator运算符
    public static void main(String[] args){
        System.out.println(1 + 'a' + 5.6);//求和  103.6
        System.out.println(1 + "a" + 5.6);//拼接  1a5.6
        
        System.out.println("==================");
        System.out.println('a' + 'b' + "c");//195c
        /*
        从左往右算
        'a' + 'b'  char+char,编码值相加  97+98=195
        195 + "c"  int + String字符串,拼接  195c
        */
        System.out.println("a" + 'b' + 'c');//abc
        /*
        从左往右算
        "a" + 'b'  String+char,拼接  "ab"
        "ab" + 'c'  String + char  拼接  "abc"
        */
        System.out.println('a' + "b" + 'c');//abc
        /*
        从左往右算
        'a' + "b"  char+String  拼接"ab"
        "ab" + 'c'  String + char  拼接  "abc"
        */
    }
}
案例四
public class ArithmeticOperator4{//Arithmetic算术,计算,Operator运算符
    public static void main(String[] args){
        int a = 1;
        a++;
        //1++;//错误
        int b = 2;
        //(a + b)++;//错误
    }
}
案例五
public class ArithmeticOperator5{//Arithmetic算术,计算,Operator运算符
    public static void main(String[] args){
        int a = 1;
        a++;//a变量自增1
        System.out.println(a);//2
        ++a;//a变量再次自增1
        System.out.println(a);//3
    }
}
案例六
public class ArithmeticOperator6{//Arithmetic算术,计算,Operator运算符
    public static void main(String[] args){
        int a = 1;
        System.out.println(a++);//输出结果是1
        /*
        (1)先取a的值放一边,取出来的是1
        (2)紧接着a自增1,a=2
        (3)输出刚刚取出来的值1
        */
        System.out.println(a);//a=2
        
        System.out.println("===========");
        int x = 1;
        int y = x++;
        /*
        (1)先取x的值放一边,取出来的是1
        (2)紧接着x自增1,x=2
        (3)把刚刚取出来的值1赋值给y
        */
        System.out.println(x);//x=2
        System.out.println(y);//y=1
        
        System.out.println("===========");
        int i = 1;
        i = i++;
        /*
        (1)先取i的值放一边,取出来的是1
        (2)紧接着i自增1,i=2
        (3)把刚刚取出来的值1赋值给i,刚刚的2被覆盖了
        */
        System.out.println(i);
        
    }
}
案例七
public class ArithmeticOperator7{//Arithmetic算术,计算,Operator运算符
    public static void main(String[] args){
        int a = 1;
        System.out.println(++a);//输出结果是2
        /*
        (1)a先自增,a=2
        (2)然后取a的值,2
        (3)输出刚刚取出来的值2
        */
        System.out.println(a);//a=2
        
        System.out.println("===========");
        int x = 1;
        int y = ++x;
        /*
        (1)先对x自增,x=2
        (2)取x的值2
        (3)把刚刚取出来的值2赋值给y
        */
        System.out.println(x);//x=2
        System.out.println(y);//y=2
        
        System.out.println("===========");
        int i = 1;
        i = ++i;
        /*
        (1)先对i自增,i=2
        (2)取i的值2,
        (3)把刚刚取出来的值2赋值给i
        */
        System.out.println(i);//2
        
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值