[豪の学习笔记] JavaReStudy#03
运算符
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等
1 - 算术运算符
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
+ | 正号 | +7 | 7 |
- | 负号 | -11 | -11 |
+ | 加 | 6+6 | 12 |
- | 减 | 11-9 | 2 |
* | 乘 | 6*6 | 36 |
/ | 除 | 6/6 | 1 |
% | 取模(取余) | 11%9 | 2 |
++X | 先自增后取值 | a=2,b=++a | a=3,b=3 |
X++ | 先取值后自增 | a=2,b=a++ | a=3,b=2 |
--X | 先自减后取值 | a=2,b=--a | a=1,b=1 |
X-- | 先取值后自减 | a=2,b=a-- | a=1,b=2 |
+ | 字符串相加 | "sch"+"warz" | "schwarz" |
对于除号"/",它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分
2 - 关系运算符
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
== | 相等于 | 8==7 | false |
!= | 不等于 | 8!=7 | true |
< | 小于 | 8 < 7 | false |
> | 大于 | 8 > 7 | true |
<= | 小于等于 | 8 <= 7 | false |
>= | 大于等于 | 8 >= 7 | true |
instanceof | 检查是否是类的对象 | “sxh” instanceof String | true |
3 - 逻辑运算符
a & b 逻辑与:第一个条件为false,后面的条件仍会判断
a && b 短路与:若第一个条件为false则后面的条件不再判断
a | b 逻辑或:不管第一个条件结果如何都要判断第二个条件
a || b 短路或:若第一个条件为true则不会判断第二个条件,结果为true
!a 取反/非运算:若条件本身成立则结果为false
a^b 逻辑异或:当a和b不同时结果为true,否则为false
4 - 赋值运算符
基本赋值运算符 =
复合赋值运算符 +=、-=、*=、/=、%=
5 - 三元运算符
条件表达式 ? 表达式1 : 表达式2 ;
如果条件表达式为true,则运算结果为表达式1,否则为表达式2
表达式1和表达式2要为可以赋给接受变量的类型(或可以自动转换)
public static void main(String[] args){
int a = 10;
int b = 99;
int result = a > b?a++:b--; // 等同于result = b--;
System.out.println("result = " + result); // 99
System.out.println("a = " + a); // 10
System.out.println("b = " + b); // 98
}
6 - 运算符优先级
运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序,表中上一行运算符总优先于下一行
只有单目运算符、赋值运算符是从右向左运算的
. () {} ; , | |
---|---|
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 | = *= /= %= |
+= -= <<= >>= | |
>>>= &= ^= != |
7 - 标识符的命名规则和规范
Java对各种变量、方法和类等命名时使用的字符序列称为标识符
标识符命名规则
①由26个英文字母大小写,0-9,_或$组成
②数字不可以开头
③不可以使用关键字和保留字
④Java中严格区分大小写,长度无限制
⑤标识符不能包含空格
标识符命名规范
①包名:多单词组成时所有字母都小写
②类名、接口名:多单词组成时,所有单词的首字母大写
③变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写
④常量名:所有字母都大写,多单词时每个单词用下划线连接
8 - 关键字
用于定义数据类型的关键字:
class、interface、enum、byte、short、int、long、float、double、char、boolean、void
用于定义数据类型值的关键字:
true、false、null
用于定义流程控制的关键字:
if、else、switch、case、default、while、do、for、break、continue、return
用于定义访问权限修饰符的关键字:
private、protected、public
用于定义类,函数,变量修饰符的关键字:
abstract、final、static、synchronized
用于定义类与类之间关系的关键字:
extends、implements
用于异常处理的关键字:
try、catch、finally、throw、throws
用于包的关键字:
package、import
其他修饰符关键字:
native、strictfp、transient、volatile、assert
9 - 键盘输入语句
import java.util.Scanner;
public class Input{
public static void main(String[]args){
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入名字");
String name = myScanner.next(); // 接收用户输入字符串
System.out.println("请输入年龄");
int age = myScanner.nextInt(); // 接收用户输入int
System.out.println("请输入薪水");
double salary = myScanner.nextDouble(); // 接收用户输入double
System.out.println("用户信息如下:");
System.out.println(name + " " + age + " " + salary);
}
}
10 - 进制相关
对于整数,有四种表示方式: 二进制:0/1,满2进1,以0b或0B开头 十进制:0~9,满10进1 八进制:0~7,满8进1,以数字0开头表示 十六进制:09及A(10)F(15),满16进1,以 0x或0X开头表示,此处的 A-F 不区分大小写
十进制转换成二进制
将该数不断除以2直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制
十进制转换成八进制
将该数不断除以8直到商为0为止,然后将每步得到的余数倒过来,就是对应的八进制
十进制转换成十六进制
将该数不断除以16直到商为0为止,然后将每步得到的余数倒过来,就是对应的十六进制
11 - 原码、反码、补码
二进制的最高位是符号位,0表示正数,1表示负数
正数的原码反码补码都一样
负数的反码 = 它的原码符号位不变,其他位取反
负数的补码 = 它的反码 + 1
0的反码补码都是0
Java没有无符号数,即Java中的数都是有符号的
在计算机运算的时候都是以补码的方式来运算的
当我们看运算结果的时候,要看它的原码
12 - 位运算符
按位与&:两位全为1,结果为1,否则为0
按位或|:两位有一个为1,结果为1,否则为0
按位异或^:两位一个为0一个为1,结果为1,否则为0
按位取反~:0--->1,1--->0
算术右移>>:低位溢出,符号位不变,并用符号位补溢出的高位
算术左移<<:符号位不变,低位补0
逻辑右移/无符号右移>>>:低位溢出,高位补0
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!