1.算数运算符
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
+ | 正号 | +7 | 7 |
- | 负号 | -11 | -11 |
+ | 加 | 9+9 | 18 |
- | 减 | 10-8 | 2 |
* | 乘 | 7*8 | 56 |
/ | 除 | 9/9 | 1 |
% | 取模(取余) | 11%9 | 2 |
++ | 自增(前):先运算后取值 | a=2;b=++a | a=3;b=3 |
++ | 自增(后):先取值后运算 | a=2;b=a++ | a=3;b=2 |
-- | 自减(前):先运算后取值 | a=2;b=--a | a=1;b=1 |
-- | 自减(后):先取值后运算 | a=2;b=a-- | a=1;b=2 |
+ | 字符串相加 | "aaa"+"bbb" | "aaabbb" |
使用细节
- 对于除号"/",它的整数除和小数除是有区别的。整数之间做除法时,只保留整数部分而舍弃小数部分。例如:int x = 10 / 3,结果是3
- 当对一个数取模时,可以等价a%b=a-a/b*b
- 当自增当作一个独立语言使用时,不管是++i,还是i++;都是一样的。但是当作表达式使用的时候 ++i是先运算后赋值 i++是先赋值后运算
操作案例
java
ystem.out.println(10 / 4);//从数学来看是2.5,java中是2
System.out.println(10.0 / 4);//java是2.5
double d =10 / 4;//java中10/4=2,2=>2.0
/在%的本质看一个公式!!!!a%b=a-a/b*b
-10 % 3 => -10 - (-10) / 3 * 3 = -10 + 9 = -1
10 % -3 = 10 - 10 / (-3) * (-3) = 10 - 9 = 1
-10 % -3 = (-10) - (-10) / (-3) * (-3) = -10 + 9 = -1
//++的使用
int i = 10;
i++;//自增等价于i=i+1;=>i=11
++i;//自增等价于i=i+1;=>i=12
System.out.println("i="+i);//12
/*
作为表达式使用
前++:++i先自增后赋值
后++:i++先赋值后自增
*/
int j = 8;
int k = ++j;//等价j=j+1;k=j;
System.out.println("k=" + k + "j=" + j);//99
int k = j++;//等价k=j;j=j+1;
System.out.println("k=" + k + "j=" + j);//89
/**
运算步骤
temp = i;
i = i + 1;
i = temp;
*/
int i = 1;
i = i++;
System.out.println(i)//1
/**
运算步骤
i = i + 1;
temp = i;
i = temp;
*/
int i = 1;
i = ++i;
System.out.println(i)//2
2.关系运算符
- 关系运算符的结果都是 boolean 型,也就是要么是 true,要么是 false
- 关系表达式 经常用在if结构的条件中或循环结构的条件中
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
== | 相等于 | 8 == 7 | false |
!= | 不等于 | 8 != 7 | true |
< | 小于 | 8 < 7 | false |
> | 大于 | 8 > 7 | true |
<= | 小于等于 | 8 <= 7 | false |
>= | 大于等于 | 8 >= 7 | true |
instanceof | 检查是否是类的对象 | "aaa" instanceof String | true |
使用细节
- 关系运算符的结果都是 boolean 型,也就是要么是 true,要么是 false。
- 关系运算符组成的表达式,我们称为关系表达式。 a > b
- 比较运算符"=="不能误写成"=
3.逻辑运算符
用于连接多个条件(多个关系表达式),最终的结果也是一个 boolean 值。
逻辑运算规则
- a&b : & 叫逻辑与:规则:当 a 和 b 同时为 true ,则结果为 true, 否则为 false
- a&&b : && 叫短路与:规则:当 a 和 b 同时为 true ,则结果为 true,否则为 false
- a|b : | 叫逻辑或,规则:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false
- a||b : || 叫短路或,规则:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false
- !a : 叫取反,或者非运算。当 a 为 true, 则结果为 false, 当 a 为 false 是,结果为 true
- a^b: 叫逻辑异或,当 a 和 b 不同时,则结果为 true, 否则为 false
3.1 && 和 & 基本规则
相同点: 短路与&&和逻辑与& 都是两个条件为true,则结果为true 区别: 短路与&&:如果第一个条件是false,则第二个条件不会判断,最终结果为false 逻辑与&:不管第一个条件是不是false,都会判断第二个条件,效率低
java
//&&如果第一个条件是false,第二个条件将不会判断
int a = 4;
int b = 9;
if (a < 1 && b < 50){
System.out.println("a=" + a + "b=" + b);//4 9
}
//对于&而言不管第一个条件是不是false 第二个条件都会判断
int a = 4;
int b = 9;
if (a < 1 & b < 50){
System.out.println("a=" + a + "b=" + b);//4 10
}
3.2 || 和 |的区别
相同点: 短路或||与逻辑或|都是只要有一个条件为true,则结果就是true 不同点: ||短路或:如果第一个条件为 true,则第二个条件不会判断,最终结果为 true,效率高 | 逻辑或:不管第一个条件是否为 true,第二个条件都要判断,效率低
java
int a = 4;
int b = 9;
if( a > 1 || ++b > 4) { // 可以换成 | 测试
System.out.println("ok300");
}
System.out.println("a=" + a + " b=" + b); //4 10
3.3 取反操作
! 非(取反) !条件 如果条件本身成立,结果为 false,否则为 true
3.4 逻辑异或
a^b: 叫逻辑异或,当 a 和 b 不同时,则结果为 true, 否则为 false
3.5 练习题
例题一
java
int x = 5;
int y = 5;
if (x++ == 6 & ++y == 6){//逻辑与
x = 11;
}
System.out.println("x = " + x + ", y = " + y); // 结果 6 6
例题二
java
int x = 5;
int y = 5;
if (x++ == 6 && ++y == 6){//短路与
x = 11;
}
System.out.println("x = " + x + ", y = " + y); // 结果 6 5
例题三
java
int x = 5;
int y = 5;
if (x++ == 5 | ++y == 5){//逻辑或
x = 11;
}
System.out.println("x = " + x + ", y = " + y); // 结果 11 6
例题四
java
int x = 5;
int y = 5;
if (x++ == 5 || ++y == 5){//短路或
x = 11;
}
System.out.println("x = " + x + ", y = " + y); // 结果 11 5
例题五
java
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); // 结果 50
4.赋值运算符
基本赋值运算符 =
int a = 10;
复合赋值运算符
+= ,-= ,*= , /= ,%= 等 a += b; [等价 a = a + b; ] a -= b; [等价 a = a - b; ]
使用细节
- 运算顺序从右往左
int num = a + b + c; - 赋值运算符的左边 只能是变量,右边 可以是变量、表达式、常量值 int num = 20; int num2= 78 * 34 - 10; int num3 = a;
- 复合赋值运算符等价于下面的效果 比如:a+=3;等价于 a=a+3; 其他类推
- 复合赋值运算符会进行类型转换 byte b = 2; b+=3; b++;
5.三元运算符
条件表达式 ? 表达式 1: 表达式 2;
运算规则
- 如果条件表达式为 true,运算后的结果是表达式 1;
- 如果条件表达式为 false,运算后的结果是表达式 2;
特点
- 表达式 1 和表达式 2 要为可以赋给接收变量的类型(或可以自动转换)
- 三元运算符可以转成 if--else 语句
6.运算符优先级
- 运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如右表,上一行运算符总优先于下一行。
- 只有单目运算符、赋值运算符是从右向左运算的。
- 一览表, 不要背,使用多了,就熟悉了。
7.标识符的命名规则和规范
- 包名:多单词组成时所有字母都小写:aaa.bbb.ccc //比如 com.hsp.crm
- 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz [大驼峰] 比如: TankShotGame
- 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz [小驼峰, 简称 驼峰法] 比如: tankShotGame
- 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ 比如 :定义一个所得税率 TAX_RATE
- 后面我们学习到 类,包,接口,等时,我们的命名规范要这样遵守,更加详细的看文档.
标识符概念
- Java对各种变量、方法和类等命名时使用的字符序列称为标识符
- 凡是自己可以起名字的地方都叫标识符 int num1 = 90;
标识符命名规则
- 由26个英文字母大小写,0-9,或$组成
- 数字不可以开头。int 3ab = 1; //错误
- 不可以使用关键字和保留字,但能包含关键字和保留字
- Java中严格区分大小写,长度无限制。int totalNum = 10; int n = 90;
- 标识符不能包含空格。int a b = 90; //错误
8.关键字和保留字
被Java语言赋予了特殊含义,用做专门用途的字符串(单词),关键字中所有字母都为小写。
保留字
Java 保留字:现有 Java 版本尚未使用,但以后版本可能会作为关键字使用。 自己命名标识符时要避免使用这些保留字 byValue、cast、future、 generic、 inner、 operator、 outer、 rest、 var 、 goto 、const
9.键盘输入语句
java
import java.util.Scanner;//表示把 java.util 下的 Scanner 类导入
public class Input {
//编写一个 main 方法
public static void main(String[] args) {
//演示接受用户的输入
//步骤
//Scanner 类 表示 简单文本扫描器,在 java.util 包
//1. 引入/导入 Scanner 类所在的包
//2. 创建 Scanner 对象 , new 创建一个对象,体会
//
myScanner 就是 Scanner 类的对象
Scanner myScanner = new Scanner(System.in);
//3. 接收用户输入了, 使用 相关的方法
System.out.println("请输入名字");
//当程序执行到 next 方法时,会等待用户输入~~~
String name = myScanner.next(); //接收用户输入字符串
System.out.println("请输入年龄");
int age = myScanner.nextInt(); //接收用户输入 int
System.out.println("请输入薪水");
double sal = myScanner.nextDouble(); //接收用户输入 double
System.out.println("人的信息如下:");
System.out.println("名字=" + name
+ " 年龄=" + age + " 薪水=" + sal);
}
}