一.算术运算符
package chapter02;
public class Operator {
public static void main(String[] args) {
//++,--自加自减
int a=10;
int b=20;
int sum=a+(++b);
System.out.println("sum="+sum);
System.out.println("b="+b);
//除法:如果除数和被除数都为整数,那么结果也为整数;如果操作数中有小数,那么结果就是一个小数
System.out.println(10.0/3);
//取模运算 %,结果的正负只取决于被除数
System.out.println(10%3);
System.out.println(10%3);//1
System.out.println(10%-3);//1
System.out.println(-10%3);//-1
int a=10;
int b=a++;
int c=10;
int d=++c;
System.out.println(a);//11
System.out.println(b);//10
System.out.println(c);//11
System.out.println(d);//11
}
}
package chap3;
public class ArithmeticOperatorExercise02 {
public static void main(String[] args) {
int days=59;
int weeks=days/7;
int day=days%7;
System.out.print("一共"+weeks+"个星期");
System.out.println("零"+day+"天");
}
}
易错易忘:
package chap1;
public class ArithmeticOperatorExercise01 {
public static void main(String[] args) {
int i = 1;
i=i++;
System.out.println(i);//1
}
}
package chap1;
public class ArithmeticOperatorExercise01 {
public static void main(String[] args) {
int i = 1;
i=++i;
System.out.println(i);//2
}
}
二.逻辑运算符
·介绍:
用于连接多个条件(多个关系表达式),最终的结果也是一个boolean值
·逻辑运算符一览
√分为两组学习
1)短路与 &&,短路或||,取反 !
2)逻辑与&,逻辑或 | ,^逻辑异或
√说明逻辑运算规则:
1.a&b:&叫逻辑与:规则:当a和b同时为true,则结果为true,否则为false
2.a&&b:&& 叫做短路与:规则:当a和b同时为true,则结果为true,否则为false
3.a | b: | 叫逻辑或, 规则:当a和b,有一个为true,则结果为true,否则为false
4.a || b:|| 叫短路或,规则: 当 a 和b,有一个为true,则结果为true,否则为false
5.!a:叫做取反,或者非运算。当a为true,则结果为false,当a为false时,结果为true
6.a^b:叫逻辑异或,当a和b不同时,则结果为true,否则为false
·短路与逻辑与
·&&和&基本规则
名称 | 语法 | 特点 |
短路与&& | 条件1&&条件2 | 两个条件都为true,结果为true |
逻辑与& | 条件1&条件2 | 两个条件都为true,结果为true |
·&&和&使用区别
1.&&短路与:如果第一个条件为false,则第二个条件不会判断,最终结果为false,效率高
2.&逻辑与:不管第一个条件是否为false,第二个条件都要判断,效率低
3.开发中,我们使用的基本是短路与&&,效率高
·短路或与逻辑或
·|| 和 | 基本规则
名称 | 语法 | 特点 |
短路或|| | 条件1 || 条件2 | 两个条件只要有一个成立,结果为true |
逻辑或| | 条件1 | 条件2 | 只要有一个条件成立,结果true |
·|| 和 | 使用区别
1)||短路或:如果第一个条件为true,则第二个条件不会判断,最终结果为true,效率高
2)| 逻辑或:不管第一个条件是否为true,第二个条件都要判断,效率低
3)开发中,我们基本使用 ||
·!取反基本规则
名称 | 语法 | 特点 |
!非(取反) | !条件 | 如果条件本身成立,结果为false,否则为true |
·^
a^b:叫逻辑异或时,当a和b不同时,则结果为true,否则为false
package chapter02;
public class Operator2 {
public static void main(String[] args) {
//逻辑运算符可以针对结果为布尔值的表达式进行运算
//与运算:&,&&
int x=0,y=0,z=0;
boolean a,b;
a=x>0 & y++>1;
System.out.println("与运算"+a);
System.out.println("y="+y);
//短路与
b=x>0 && z++>1;
System.out.println("与运算"+b);
System.out.println("z="+z);
//或运算:|、||
x=y=z=10;
a=x>0 | y++>1;
System.out.println("或运算"+a);
System.out.println("y=" + y );
b=x>0||z++>1;
System.out.println("或运算"+b);
System.out.println("z="+z);
//异或运算:^,如果两个操作数值都为true或者为false,则结果为false;
//如果两个操作数一个是true,另一个是false,则结果为true.
System.out.println(true^true);
System.out.println(false^false);
System.out.println(false^true);
}
}
三、赋值运算符
·赋值运算符的分类
√基本赋值运算符 =
√符合赋值运算符
+=,-=,*=,/=,%=
赋值运算符特点
1)运算顺序从右往左 int num = a+b+c;
2)赋值运算符的左边,只能是变量,右边 可以是变量、表达式、常量值
int num=20;int num2=78*34-10;int num3 = a;
3)复合赋值运算符等价与下面的效果
a+=3;等价于a=a+3;
4)复合赋值运算符会进行类型转换
byte b =2; b+=3; b++;
四、三元运算符
·基本语法
条件表达式?表达式1:表达式2;
1.如果条件表达式为true,运算后的结果是表达式1;
2.如果条件表达式为false,运算后的结果是表达式2;
口诀:一真大师
package mypackage;
import java.util.*;
public class Homework03 {
public static void main(String[] args) {
System.out.print("请输入一个整数:");
Scanner in=new Scanner(System.in);
int a=in.nextInt();
System.out.print("请输入第二个整数:");
int b=in.nextInt();
System.out.print("请输入第三个整数:");
int c=in.nextInt();
int max=a>b&&a>c?a: b>a&&b>c ?b: c>a&&c>b? c:a;
System.out.println(max);
}
}
易错
package chap1;
public class TernaryOperator {
public static void main(String[] args) {
int a = 10;
int b =99;
int result = a > b ? a++ : b--;
System.out.println("result="+result);//99
}
}
package chap1;
public class TernaryOperator {
public static void main(String[] args) {
int a = 10;
int b =99;
int result = a > b ? a++ : --b;
System.out.println("result="+result);//98
}
}
package chap1;
public class TernaryOperator {
public static void main(String[] args) {
int a = 10;
int b =99;
int result = a < b ? a++ : b--;
System.out.println("result="+result);//10
System.out.println("a="+a);//11
System.out.println("b="+b);//99
}
}
·使用细节
1.表达式1和表达式2要为可以赋给接受变量的类型(或可以自动转换)
2.三元运算符可以转成if--else语句
int res = a>b? a++:--b;
if(a>b) res =a++;
else res=--b;
五.关系运算符(比较运算符)
·介绍:
1.关系运算符的结果都是boolean型,也就是要么是true,要么是false
2.关系表达式 经常用在 if结构的条件中或循环结构的条件中
·关系运算符一览
package chap3;
public class RelationalOperator {
public static void main(String[] args) {
int a=9;
int b=8;
System.out.println(a>b);
System.out.println(a>=b);
System.out.println(a<=b);
System.out.println(a<b);
System.out.println(a==b);
System.out.println(a!=b);
boolean flag=a>b;
System.out.println(flag);
}
}
·细节说明
1)关系运算符的结果都是boolean型,也就是要么是true,要么是false.
2)关系运算符组成的表达式,我们称为关系表达式. a>b
3)比较运算符"=="不能误写成"="
六.运算符优先级
1.运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如上表,上一行运算符总优于下一行。
2.只有单目运算符、赋值运算符是从右向左运算的
梳理小结:
1)(),{}等
2)单目运行 ++ --
3)算术运算符
4)位移运算符
5)比较运算符
6)逻辑运算符
7)三元运算符
8)赋值运算符
·标识符的命名规则和规范
1.Java对各种变量、方法和类等命名时使用的字符序列称为标识符
2.凡是自己可以起名字的地方都叫标识符 int num1=90;
·标识符的命名规则(必须遵循)
1.由26个英文字母大小写,0-9,_或$组成
2.数字不可以开头。 int 3ab =1;
3.不可以使用关键字和保留字,但能包含关键字和保留字.
4.Java中严格区分大小写,长度无限制。int totalNum=10;int n = 90;
5.标识符不能包含空格。int a b =90;