Java·第二章·运算符

运算符介绍

用来表示数据的运算、赋值和比较等。

算数运算符

运算符运算范例结果
+正号+77
-符号b = 11; -b-11
+9 +918
-10 - 82
*7 * 856
/9/91
%取模(取余)11 % 92
++
++
自增(前):先运算后取值
自增(后):先取值后运算
a = 2;b = ++a;
a = 2;b = a++;
a = 3; b = 3;
a = 3; b = 2;
- -
- -
自增(前):先运算后取值
自增(后):先取值后运算
a = 2;b = - -a;
a = 2;b = a- -;
a = 1; b = 1;
a = 1; b = 2;
+字符串相加“ysl” + “yywd”“ysl yywd”
//在 % 的本质 看一个公式 a % b = a - a / b * b
System.out.println(-10 % 3);//-1
//10 - 10 / (-3) * (-3)
System.out.println(10 % -3);//1
//-10 - (-10) / (-3) * (-3)
System.out.println(-10 % -3);//-1
  • 相关题目

//练习一
int i = 1;
i = i++;//规则使用临时变量:1)temp = i;2)i = i + 1;3)i = temp;
System.out.println(i);//1
//结果是多少?为什么?
//练习二
int i = 1;
i = ++i;//规则:1)i = i + 1;2)temp = i;3)i = temp
System.out.println(i);//2
//练习三
int i1 = 10;
int i2 = 20;
int i = i1++;
System.out.print("i=" + i);//10
System.out.println("i2=" + i2);//20
i = --i2;
System.out.print("i=" + i);//19
System.out.println("i2=" + i2);//19
//练习四
//假如还有59天房价,问:合XX个星期零XX天
int p = 59;
int week = p / 7;
int day = p % 7;
System.out.println("合" + week + "个星期零" + day +"天");
//合8个星期零3天
//练习五
//定义一个变量保存华氏温度,华氏温度转换摄氏温度的公式为:5/9*(华氏温度-100),
//请求出华氏温度对应的摄氏温度【234.5】
double h = 234.5;
double s = 5.0 / 9 * (h - 100);//注意是double类型
System.out.println("对应的摄氏温度是" + s);
//对应的摄氏温度是74.72222222222223

关系运算符【比较运算符】

运算符运算范例结果
==相等于8 == 7false
instanceof检查是否是类的对象“hsp” instanceof Stringtrue
  • 介绍

    1. 的结果都是boolean型,也就是要么true,要么false
    2. 关系表达式经常用在if结构的条件中或循环结构的条件中

逻辑运算符

aba&ba&&ba|ba||b!aa^b
truetruetruetruetruetruefalsefalse
truefalsefalsefalsetruetruefalsetrue
falsetruefalsefalsetruetruetruetrue
falsefalsefalsefalsefalsefalsetruefalse
  1. 短路与 &&,短路或 ||, 取反 !

  • &&和&基本规则

    名称语法特点
    短路与&&条件1&&条件2两个条件都为true,结果为true
    逻辑与&条件1&条件2两个条件都为true,结果为true
    • 案例
       		//&& 
      		int age = 50;
      		if(age > 20 && age < 90){
      			System.out.println("ok100");//ok100
      		}
      		//&
      		if(age > 20 & age < 90){
      			System.out.println("ok200");//ok200
      		}
      //区别
      		int a = 4;
      		int b = 9;
      		//第一个条件为false,第二个条件不会判断
      		if(a < 1 && ++b < 50){
      				System.out.println("okk300");
      		}
      		System.out.println("a=" + a + "b=" + b);//a=4b=9
      		//第一个条件为false,第二个条件也会判断
      		if(a < 1 & ++b < 50){
      				System.out.println("okk300");
      		}
      		System.out.println("a=" + a + "b=" + b);//a=4b=10
      
  • 使用区别
    1. &&短路与:如果第一个条件为false,则第二个条件不会判断,最终结果为false,效率高
    2. & 逻辑与:不管第一个条件是否为false,第二个条件都要判断,效率低

逻辑与 &,逻辑或 |,^逻辑异或

  • || 和 | 基本规则

    名称语法特点
    短路或 ||条件1 || 条件2两个条件只要有一个成立,结果为true
    逻辑或 |条件1 | 条件2只要有一个成立,结果为true
    • 案例
      //|| 和 |案例演示
      		int age = 50;
      		if(age > 20 || age < 30){
      			System.out.println("ok100");//ok100
      		}
      		if(age > 20 | age < 30){
      			System.out.println("ok200");//ok200
      		}
      		int a = 4;
      		int b = 9;
      		if(a > 1 || ++b > 4){
      			System.out.println("okk300");//okk300
      		}
      		System.out.println("a=" + a + "b=" + b);//a=4b=9
      
    • 使用区别
      1. || 短路或:如果第一个条件为true,则第二个条件不会判断,最终结果为true,效率高
      2. | 逻辑或:不管第一个条件是否为true,第二个条件都要判断,效率低

 !(取反)

操作是取反

 a ^ b

逻辑异或,当a和b不同时,结果时true,否则为false

逻辑运算符练习题

  • //练习一
    int x = 5;
    int y = 5;
    if(x++ == 6 & ++y ==6){ //x++先比较再自增
    		x = 11;
    }
    System.out.println("x=" + x + ",y=" + y);//x=6,y=6
    
    //练习二
    int x = 5,y = 5;
    if(x++ == 6 && ++y == 6){
    		x = 11;
    }
    System.out.println("x=" + x + ",y=" + y);//x=6,y=5
    
    //练习三
    int x = 5,y = 5;
    if(x++ == 5 | ++y == 5){
    		x = 11;
    }
    System.out.println("x=" + x + ",y=" + y);//x=11,y=6
    
    //练习四
    int x = 5,y = 5;
    if(x++ == 5 || ++y == 5){
    		x = 11;
    }
    System.out.println("x=" + x + ",y=" + y);//x=11,y=5
    
    //练习五
    boolean x = true;
    boolean y = false;
    short z = 46;
    if((z++ == 46) && (y = true)){
    		z++;
    }
    if((x = false) || ++z == 49){
    		z++;
    }
    System.out.println("z="+z);//z=50
    

赋值运算符

  1. 基本赋值运算符 = :int a = 10;

  2. 符合赋值运算符 +=,-=,*=,/=,%=等。

    a += b;等价于 a = a + b;

  • 特点

    1. 运算顺序从右往左 int num = a + b + c;

    2. 赋值运算符的左边 只能是变量,右边可以是变量、表达式、常量值

      int num = 20; int num2 = 78 * 9; int num3 = a;

    3. 复合赋值运算符等价于下面的效果

      a += 3;等价于 a = a + 3;

    4. 复合赋值运算符会进行类型转换

      byte b = 2;b += 3;//等价于b = (byte)(b+2) b++;//b = (byte)(b+1)

三元运算符

  1. 基本语法:

    1. 条件表达式 ?表达式1 : 表达式2;
    2. 运算规则

      1. 如果条件表达式为true,运算后的结果是表达式1;
      2. 如果条件表达式为false,运算后的结果是表达式2;
  2. 案例演示

    int a = 10;
    int b = 99;
    int result = a > b ? a++ : b--;
    System.out.println(result);//b-- 先返回b的值,再b-1;99
    
  3. 使用细节

    1. 表达式1和表达式2要为可以赋给接收变量的类型(或可以自动转换

      int a = 3;
      int b = 8;
      int c = a > b ? a : b; 
      System.out.println(c);
      
    2. 三元运算符可以转程if—else语句

      int res = a > b ? a++ : - -b;
      //等价于
      if(a > b){
      		a++;
      }else{
      		--b;
      }
      
  • 练习题

//案例:实现三个数的最大值
int n1 = 55;
int n2 = 33;
int n3 = 123;
int max = n1 > n2) ? n1 : n2;
int max2 = max > n3 ? max :n3; 
System.out.println(max2);//123 

运算符优先级

. ( ) { } ; ,
R → L++ -- ~ !(data type)
L → R* / %
L → R+ -
L → R<< >> >>> 位移
L → R< > <= >= instanceof
L → R== !=
L → R&
L → R^
L → R|
L → R&&
L → R||
L → R? :
R → L= *= /= %=
+= -= <<= >>=
>>>= &= ^= |=
  1. 说明

    1. 上一行运算符总优先于下一行
    2. 只有单目运算符、赋值运算符是从右往左的
  2. 梳理总结

    1. () {}等
    2. 单目运算 ++ —
    3. 算数运算符
    4. 位移运算符
    5. 比较运算符
    6. 逻辑运算符
    7. 三元运算符
    8. 赋值运算符
  • 标识符的命名规则和规范

    • 标识符的概念
      1. Java对各种变量、方法和类等命名时使用的字符序列成为标识符
      2. 凡是自己可以起名字的地方都叫标识符 int num1 = 90;
    • 命名规则
      1. 由26个英文字母大小写,0-9,_或$组成
      2. 数字不可以开头。
      3. 不可以使用关键字和保留字,但能包含关键字和保留字。
      4. Java中严格区分大小写,长度无限制。int totalNum = 10; int n = 90;
      5. 标识符不能包含空格。
    • 命名规范
      1. 包名:多单词组成时所有字母都小写:aaa.bbb.ccc //比如:com.ysl.crm

      2. 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz 【大驼峰】//比如:TankShotGame

      3. 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz 【小驼峰,简称驼峰法】//比如:tankShotGame

      4. 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ

        比如:定义一个所得税 TAX_RATE

  • 关键字

    关键字中所有字母都为小写。

  • 保留字

  • 键盘输入语句

    • 介绍

      需要一个 扫描器(对象),就是Scanner

    • 步骤
      1. 导入该类的所在包,java.util.*
      2. 创建该类对象(声明变量)
      3. 调用里面的功能
    • 举例
      import java.util.Scanner;//表示把java.util下的Scanner类导入
      public class Homework01{
      	public static void main(String[] args){
      		//myScanner就是Scanner类的对象
      		Scanner myScanner = new Scanner(System.in);
      		System.out.println("请输入名字:");
      		//接收用户的输入
      		String name = myScanner.next();
      		System.out.println("请输入年龄:");
      		int age = myScanner.nextInt();
      		System.out.println("请输入薪水:");
      		double sal = myScanner.nextDouble();
      		System.out.println("名字=" + name + " 年龄="
      			+ age + " 薪水=" +sal);
      		/*请输入名字:
      		halcyon
      		请输入年龄:
      		21
      		请输入薪水:
      		600000
      		名字=halcyon 年龄=21 薪水=600000.0*/
      	}
      }
      
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Annabelle.02

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值