运算符介绍
用来表示数据的运算、赋值和比较等。
算数运算符
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
+ | 正号 | +7 | 7 |
- | 符号 | b = 11; -b | -11 |
+ | 加 | 9 +9 | 18 |
- | 减 | 10 - 8 | 2 |
* | 乘 | 7 * 8 | 56 |
/ | 除 | 9/9 | 1 |
% | 取模(取余) | 11 % 9 | 2 |
++ ++ | 自增(前):先运算后取值 自增(后):先取值后运算 | 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 == 7 | false |
instanceof | 检查是否是类的对象 | “hsp” instanceof String | true |
-
介绍
- 的结果都是boolean型,也就是要么true,要么false
- 关系表达式经常用在if结构的条件中或循环结构的条件中
逻辑运算符
a | b | a&b | a&&b | a|b | a||b | !a | a^b |
---|---|---|---|---|---|---|---|
true | true | true | true | true | true | false | false |
true | false | false | false | true | true | false | true |
false | true | false | false | true | true | true | true |
false | false | false | false | false | false | true | false |
-
短路与 &&,短路或 ||, 取反 !
-
&&和&基本规则
名称 语法 特点 短路与&& 条件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
-
-
使用区别
- &&短路与:如果第一个条件为false,则第二个条件不会判断,最终结果为false,效率高
- & 逻辑与:不管第一个条件是否为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
-
使用区别
- || 短路或:如果第一个条件为true,则第二个条件不会判断,最终结果为true,效率高
- | 逻辑或:不管第一个条件是否为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
赋值运算符
-
基本赋值运算符 = :int a = 10;
-
符合赋值运算符 +=,-=,*=,/=,%=等。
a += b;等价于 a = a + b;
-
特点
-
运算顺序从右往左 int num = a + b + c;
-
赋值运算符的左边 只能是变量,右边可以是变量、表达式、常量值
int num = 20; int num2 = 78 * 9; int num3 = a;
-
复合赋值运算符等价于下面的效果
a += 3;等价于 a = a + 3;
-
复合赋值运算符会进行类型转换
byte b = 2;b += 3;//等价于b = (byte)(b+2) b++;//b = (byte)(b+1)
-
三元运算符
-
基本语法:
- 条件表达式 ?表达式1 : 表达式2;
-
运算规则
- 如果条件表达式为true,运算后的结果是表达式1;
- 如果条件表达式为false,运算后的结果是表达式2;
-
案例演示
int a = 10; int b = 99; int result = a > b ? a++ : b--; System.out.println(result);//b-- 先返回b的值,再b-1;99
-
使用细节
-
表达式1和表达式2要为可以赋给接收变量的类型(或可以自动转换)
int a = 3; int b = 8; int c = a > b ? a : b; System.out.println(c);
-
三元运算符可以转程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 | = *= /= %= |
+= -= <<= >>= | |
>>>= &= ^= |= |
-
说明
- 上一行运算符总优先于下一行
- 只有单目运算符、赋值运算符是从右往左的
-
梳理总结
- () {}等
- 单目运算 ++ —
- 算数运算符
- 位移运算符
- 比较运算符
- 逻辑运算符
- 三元运算符
- 赋值运算符
-
标识符的命名规则和规范
-
标识符的概念
- Java对各种变量、方法和类等命名时使用的字符序列成为标识符
- 凡是自己可以起名字的地方都叫标识符 int num1 = 90;
-
命名规则
- 由26个英文字母大小写,0-9,_或$组成
- 数字不可以开头。
- 不可以使用关键字和保留字,但能包含关键字和保留字。
- Java中严格区分大小写,长度无限制。int totalNum = 10; int n = 90;
- 标识符不能包含空格。
-
命名规范
-
包名:多单词组成时所有字母都小写:aaa.bbb.ccc //比如:com.ysl.crm
-
类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz 【大驼峰】//比如:TankShotGame
-
变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz 【小驼峰,简称驼峰法】//比如:tankShotGame
-
常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
比如:定义一个所得税 TAX_RATE
-
-
-
关键字
关键字中所有字母都为小写。
-
保留字
-
键盘输入语句
-
介绍
需要一个 扫描器(对象),就是Scanner
-
步骤
- 导入该类的所在包,java.util.*
- 创建该类对象(声明变量)
- 调用里面的功能
-
举例
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*/ } }
-