四、运算符和表达式

在这里插入图片描述

4.1 算术运算

4.1.1 使用%运算符

Java中的运算符除了加减乘除外,还有取余(%)运算以及自增(++)自减(–) 取余(取模),取余数,可用于整数、char和浮点型。

//1.取余
int n = 255;
char n2 = 'A';
double n3 = 16.8;
System.out.println(n3%8);//0.8000000000000007

4.1.2 自增和自减运算

前置自增自减:先自增自减后运算
后置自增自减:先运算后自增自减

int a = 10,b=20;
int c1 = a ++;
int c2 = ++ b;
System.out.println("a=" + a + ",b= "+b+",c1=" + c1 + ",c2=" + c2);    //11 21 10 21

结论: 变量无论前置还是后置运算其结果一定为:+1
只在使用它的时候考虑其前置或后置规则

4.2 关系运算符

包括>、<、==、>=、<=、!=

int max = 10;
int num = 9;
boolean b1 = max > 15;//false
boolean b2 = num%2 == 1;//true

4.3 逻辑运算符

4.3.1 逻辑运算:&&逻辑与(且)、||逻辑或、!逻辑非

在这里插入图片描述

结论:
与运算一假必假;
或运算一真必真。

4.3.2 逻辑运算符的使用

//4.逻辑运算符
//与
int score = 80;
boolean res1 = score >= 60 && score <=90;//true
//或
boolean flag = true;
int i = 200;
boolean res2 = flag || (i>=0 && i <10);//true
//非
res2 = !flag || (i>=0 && i <10);//false

4.3.3 短路逻辑

与运算: 一假必假 指:当第一个表达式为假时后面的表达式就不会参与运算了
或运算: 一真必真 指:当第一表达式为真时后面的表示式不参与运算了

int i = 100, j = 200;
boolean b1 = (i > j) && (i++ > 100);     //第一个条件不满足,第二个条件直接不参与
                                         //第一个条件满足,第二个条件才参与判断
System.out.println(b1); // f
System.out.println(i); // 100
boolean b2 = i > 0 || j++ > 200;         //第一个条件满足,第二个条件直接不参与
                                         //第一个条件不满足,第二个条件才参与判断
System.out.println(b2); // t
//以第一个判断为主要的,
System.out.println(j); // 200

4.4 赋值运算

4.4.1 使用“=”进行赋值运算

赋值运算符一定要从右边表达式看向左边。
int i;
i=1;    //表示将1赋值给i

//赋值运算符
int x,y,c;
x = y = c = 100;
//将100赋值给c -->  = (c = 100)

4.4.2 使用扩展赋值表达式

在这里插入图片描述

4.5 字符串的拼接

“+”可以实现字符串的拼接 也可实现字符串与其他类型相连接。

//字符串连接符
int in = 100;
String msg = "in = " + in;
System.out.println(msg);//in = 100
msg = "" + 100 + 200;
//String s = "" + 100;   ==   //String s="100";
//s + 200; // String s = 100200
System.out.println(msg);//100200 拼接
msg = 100 + "" + 200;
System.out.println(msg);//100200 拼接
msg = 100 + 200 + "";
System.out.println(msg);//300 int类型先运算后拼接
msg = 100 + 200 + "" + (300 + 400);//300700 先运算两边再拼接
System.out.println(msg);

结论:
1、主要看字符串的位置,字符串与其他类型或字符串类型,那么“+”一定为拼接
2、如果是同类型先相加,那么“+”为运算符,再去拼接其他字符串

4.6 三目运算符(重点–源码里能见到)

4.6.1 使用三目运算符

三目运算符(条件运算符):boolean表达式?表达式1:表达式2;
解释:boolean表达式为true,则执行表达式1,否则执行表达式2.

  • 结构:(条件表达式)?表达式1:表达式2;
  • 当条件表达式为true:执行表达式1;
  • 当条件表达式为false:执行表达式2;
两个数的比较:
String s = 65 > 60 ? "及格" : "不及格";//及格
三个数的比较:
int a = 12;
int b = 15;
int c = 21;
//方法一:
int min = (a<b)?((a>c)?c:a):((b>c)?c:b); //12
//方法二(尽量以此方法为主):
int min1 = (a>b)?b:a;
int min2 = (min1>c)?c:min1; //12

4.6.2 三目的嵌套

三目运算符可以嵌套使用,表达式1和表达式2的结果可以为嵌套三目的boolean表达式

int a = -3;
String r = a > 0 ? "正数" : (a == 0 ? "0" : "负数");//负数

4.6.3 案例(输入年份,判断是否为闰年)

案例一:接受用户输入年份,判断是否为闰年。
1.年份能被4整除,且不能被100整除的是闰年
2.年份能被400整除的是闰年。

//方法一:
//1.接收年份
System.out.print("请输入年份:");
Scanner scan = new Scanner(System.in);
//2.获取年份
int year = scan.nextInt();
//3.判断条件
String result = (year % 4 == 0 && year % 100 != 0) ||
year % 400 == 0 ? "闰年" : "平年";
//4.输出结果
System.out.println(result);
//方法二:
System.out.print("请输入年份:");
		Scanner scanner = new Scanner(System.in);
		int year = scanner.nextInt();
		if((year%4==0&&year%100!=0)||year%400==0) {
			System.out.println(year+"是闰年");
		}else {
			System.out.println(year+"是平年");
		}

4.7 位运算

4.7.1 ^(异或)

package cn.aku.Chapter5_2;

/**
 * 数值的交换
 */
public class My1Exchange {
    int num1 = 12;
    int num2 = 21;
    public void show(){
        System.out.println("num1 = "+num1+",num2 = "+num2);

        //方法一
        int temp = num1;
        num1 = num2;
        num2 = temp;
        System.out.println("num1 = "+num1+",num2 = "+num2);

        //方法二
            //优点:不用设置临时变量
            //缺点:两数相加会超出数值类型的范围
            //     除法时,被除数不能为0
            //     局限性(只能是数值类型)
        num1+=num2;
        num2=num1-num2;
        num1=num1-num2;
        System.out.println("num1 = "+num1+",num2 = "+num2);

        //方法三:位运算符(^:异或)
            //与方法二基本相同但是没有超出数值类型的范围这一条
        num1=num1^num2;
        num2=num1^num2;
        num1=num1^num2;
        System.out.println("num1 = "+num1+",num2 = "+num2);
    }
}

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值