Java-Day-3(运算符 + 标识符 + 键盘输入)
Java-Day-3
运算符
- 算术运算符
- 关系运算符 [ 比较运算符 ]
- 逻辑运算符
- 赋值运算符
- 三元运算符
- 位运算符 [ 需要二进制基础 ]
算术运算符
-
+、-、*、/
-
System.out.println(10.0 / 4); //2.5 double d = 10 / 4; //2.0 //数学公式有时不能硬搬,例如:摄氏温度 = 5 / 9 * ( 华氏温度 - 100 ),编码时就需要将 5 写成 5.0,因为 5 / 9 = 0
-
-
%:取模( 取余 )
-
本质公式:a % b = a - a / b * b
-
System.out.println(10 % - 3); //1 System.out.println(-10 % - 3); // -1 System.out.println(-10.5 % 3); // a - (int)a / b * b // -10.5 - (-10) / 3 * 3 // -1.5
-
-
++、-- :自增、自减
-
符号放前 — 先运算后赋值
-
符号放后 — 先赋值后运算
-
int a = 1; int b = ++a; //等价于 a = a + 1; b = a int a = 1; int b = a++; //等价于 b = a; a = a + 1 int i = 1; i = i++; //i 输出为1;( 自行修改会有一个temp ) // 1.temp = i; 2. i = i + 1; 3. i = temp; int i = 1; i = ++i; //i 输出为2; // 1. i = i++; 2. temp = i; 3. i = temp;
-
但若是独立使用,放前放后都等价于 i = i + 1
-
关系运算符
结果都是Boolean型
- ==
- !=
- < 、>
- <= 、>=
- instanceof
逻辑运算符
- 短路与:&&
- 如果第一个条件为 F,则直接 F,不再看第二个数
- 短路或:||
- 如果第一个条件为 T,则直接 T,不再看第二个数
- 取反:!
- 逻辑与:&
- 不管第一个是否为 F,都得看第二个( 效率低 )
- 逻辑或:|
- 不管怎样都要看第二个( 效率低 )
- 逻辑异或:^
int a = 2, b = 4;
if(a < 1 & ++b < 50){ Sys... } //false,且 b 为 5
// && 的话 b 就为 4
if(a++ == 3 & ++b < 50){ Sys... } //false,a 为 3
boolean x = false;
if((a++ == 2)&&(y = true)){ Sys... } //true,注意是把 true 赋给了y
a | b | a&b / a&&b | a|b / a||b | a^b |
---|---|---|---|---|
T | T | T | T | F |
T | F | F | T | T |
F | T | F | T | T |
F | F | F | F | F |
一错则错 | 全错才错 | 不同才对 |
赋值运算符
-
=
-
+=、-=、*=、/=、%=
-
a += b:a = a + b
-
复合赋值运算符会进行类型转换
byte b = 1; b += 2; //不会报错,底层内含( byte )强转 b++; //不会报错,同上内含强转 b = b + 2; //报错,计算后成 int,不能直接返回给 byte
-
三元运算符
- 条件表达式 ? 表达式1 :表达式2
- —— 条件表达式为 true 时,返回的是表达式1
int a = 10, b = 99;
int result = a > b ? a++ : b++;
// 输出为99,因为 b 值先返回,然后再减一,注意 ++ 在后,但直接输出 b 值的话就是100
- 表达式 1 与表达式 2 要为可以赋值给接收变量的类型,可以自行强转或者自动转换,但注意不会自动强制转换
- 本质就是 if -- else
- 可嵌套,但一般不用
运算符优先级
只有单目运算符(例如 a++ 对自身运算的)、赋值运算符是从右向左运算的
优先级从上到下依次降低 | ||
---|---|---|
.() {} ; , | (高) | |
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 | = *= /= %= | 赋值 |
R —> L | += -= <<= >>= | |
R —> L | >>>= &= ^= |= | (低) |
标识符
-
标识符就是 Java 对各种变量、方法、类等命名时使用的字符序列
-
凡是自己可以起名字的地方都叫标识符,如:main
-
标识符的命名规则
-
26 英文字母大小写,0 ~ 9,_ 或 $ 组成
-
数字不可以开头
-
不可以使用关键字 ( class ) 和保留字 ( goto ) ,但能包含关键字和保留字
( 保留字,现有 Java 版本尚未使用,但以后版本可能会作为关键字使用 )
-
Java 中严格区分大小写,长度无限制
-
不能包含空格
-
-
标识符命名规范
- 包名:多单词时字母全小写
- 类名、接口名:多单词时每个单词首字母大写( 大驼峰 )
- 变量名、方法名:多单词时,第一个单词首字母小写,第二个单词开始首字母大写( 小驼峰,驼峰法 )
- 常量名:所有字母大写,多单词用下划线连接
- 都尽量用简单单词命名
键盘输入
-
接收用户输入数据,需要一个扫描(对象),就是 Scanner
-
导入该类的所在包,java.util.*
import java.util.Scanner;
-
创建该类对象( 声明变量 )
Scanner scanner = new Scanner(System.in);
-
调用里面的功能,使用相关方法
String name = scanner.next(); int age = scanner.nextInt(); double sal = scanner.nextDouble(); //接收键盘的输入
-
分类:
java学习
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)