java基础
🚀🚀🚀
3. 运算符
3.1 运算符介绍
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
🔻
-
算术运算符 -
赋值运算符 -
关系运算符 [比较运算符] -
逻辑运算符 -
位运算符 [需要二进制基础] -
三元运算符
🔺
3.2 算术运算符
算术运算符是对数值类型的变量进行运算的,在 Java 程序中使用的非常多。
算术运算符有哪些?📣

案例演示

🅾?: 除法/
System.out.println(10 / 4);
System.out.println(10.0 / 4);
double d = 10 / 4;
System.out.println(d);
🅾?: 取模 %(取余)
取模的本质是一个公式:a % b = a - a / b * b
System.out.println(10 % 3);
System.out.println(-10 % 3);
System.out.println(10 % -3);
System.out.println(-10 % -3);
🅾?: ++的使用
前置++:先自增,再使用
后置++:先使用,后自增
int i = 10;
i++;
++i;
System.out.println("i=" + i);
int j = 8;
int k = j++;
System.out.println("k=" + k + "j=" + j);
面试题

1??: i = i ++ ,实际上先把i = 1 赋给了一个临时变量 temp,然后 i 再自增1,最后又把 临时变量 temp 赋给了 i 。所以结果仍然是1.
2??: i = ++ i,运算时是先自增,故 i先++到2 ,然后再赋给临时变量temp,最后再把temp赋给 i 。故结果 是 2.
练习1
结果🔻 :
i = 10 i2 = 20
i = 19 i2 = 19
练习2

int days = 25911;
int weeks = days / 7;
int leftDays = days % 7;
System.out.println(days + "天 合" + weeks + "星期零"
+ leftDays + "天");
double huaShi = 1234.6;
double sheShi = 5.0 / 9 * (huaShi - 100);
System.out.println("华氏温度" + huaShi
+ " 对应的摄氏温度=" + sheShi);
3.3 关系运算符(比较运算符)
-
关系运算符的结果都是 boolean 型,也就是要么是 true,要么是 false -
关系表达式经常用在 if 结构的条件中或循环结构的条件中
🔻:关系运算符一览

案例演示
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=" + flag);

3.4 逻辑运算符
用于连接多个条件(多个关系表达式),最终的结果也是一个==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,(异或异为真)
&&和&的区别
两者输出的结果都相同,但是运算的逻辑不同
对于&&(短路与),如果第一个条件为 false ,后面的条件不再判断
对于&(逻辑与),如果第一个条件为 false ,后面的条件仍然会判断
int a = 4;
int b = 9;
if(a < 1 & ++b < 50)
{
System.out.println("ok300");
}
System.out.println("a=" + a + " b=" + b);
int a = 4;
int b = 9;
if(a < 1 && ++b < 50)(++b没有判断)
{
System.out.println("ok300");
}
System.out.println("a=" + a + " b=" + b);
| 和 || 的区别
对于||(短路或),如果第一个条件为 ture ,后面的条件不再判断
对于|(逻辑或),如果第一个条件为 ture ,后面的条件仍然会判断
int a = 4;
int b = 9;
if( a > 1 | ++b > 4) {
System.out.println("ok300");
}
System.out.println("a=" + a + " b=" + b);
int a = 4;
int b = 9;
if( a > 1 || ++b > 4) {
System.out.println("ok300");
}
System.out.println("a=" + a + " b=" + b);
🅾?:开发中, 我们使用的基本是使用短路与&&和短路或||, 效率高
! 和 ^(逻辑异或)
System.out.println(60 > 20);
System.out.println(!(60 > 20));
boolean b = (10 > 1) ^ ( 3 > 5);
System.out.println("b=" + b);
练习题
??
1?? : if语句中x++是后置++,故先使用后自增,所以 一开始x=5和6比较为假,比较完后x自增为6,++y先自增为6,再和6比较为真,而因为是逻辑与,所以if语句为假,不执行x=11。故结果为x=6,y=6。
2??:同1,x++ == 6为假,因为是短路与,所以不执行后面语句,if语句也为假。故结果为x=6,y=5。
3??: if语句中x++是后置++,故先使用后自增,所以 一开始x=5和5比较为真,比较完后x自增为6,++y先自增为6,再和5比较为假,而因为是逻辑或,所以 if语句为真,执行x =11.故结果为x =11,y=6
4??:同3,x++ == 5 为真,因为是短路或,不执行后面语句,if语句也为真,故结果为x =11,y=5
??

🐱结果为z=50。解释:第一个if语句 z++== 46为真之后,z再自增1到47,y=ture(重点?? )为真,因为这里不是 “==” 而是 “=”,一个等号是赋值,即把ture赋给了y这个布尔类型,为真,故第一个if语句为真,执行z++,此时z=48;第二个if语句x=false为假,++z先自增到49再使用,49 == 49,为真,故第二个if语句为真,执行z++,z=50。
3.5 赋值运算符
赋值运算符就是将某个运算后的值,赋给指定的变量。
分为两类👇
基本赋值运算符 =,[int a = 10]
复合赋值运算符 += ,-= ,*= , /= ,%= 等 , 重点讲解一个 += ,其它的使用是一个道理
a += b; 等价 【a = a + b; 】
a -= b; 等价 【a = a - b; 】

详解4??:
byte b =3;
b += 2;
b++;
3.6 三元运算符
基本语法
条件表达式 ? 表达式 1: 表达式 2;
运算规则:
1?? :如果条件表达式为 true,运算后的结果是表达式 1;
2?? :如果条件表达式为 false,运算后的结果是表达式 2;
😑
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);
System.out.println("a=" + a);
System.out.println("b=" + b);
}
}
使用细节👇
1?? 表达式 1 和表达式 2 要为可以赋给接收变量的类型(或可以自动转换) 【参照自动类型转换】
2?? 三元运算符可以转成 if–else 语句
int a = 3;
int b = 8;
double d = a > b ? a : b + 3;
int a = 3;
int b = 8;
if(a > b)
result = a++;
else
result = b--;
练习
求三个数中最大值
public class TernaryOperatorExercise {
public static void main(String[] args) {
int n1 = 553;
int n2 = 33;
int n3 = 123;
int max1 = n1 > n2 ? n1:n2;
int max = max1 > n3 ? max1:n3;
System.out.println("max"+ max);
}
}
3.7 运算符的优先级
大致了解,不用刻意去背
 
3.8 标识符命名规则与规范



3.9 关键字与保留字
关键字的定义和特点 (不用背)
定义:被 Java 语言赋予了特殊含义,用做专门用途的字符串(单词)
特点:关键字中所有字母都为小写
保留字
Java 保留字:现有 Java 版本尚未使用,但以后版本可能会作为关键字使用。自己命名标识符时要避免使用这些保留
字 byValue、cast、future、 generic、 inner、 operator、 outer、 rest、 var 、 goto 、const
3.10 键盘输入
介绍: 在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。Input.java , 需要一个 扫描器(对象), 就是
Scanner
步骤 :
-
导入该类的所在包, java.util.* -
创建该类对象(声明变量) -
调用里面的功能
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();
System.out.println("请输入薪水");
double sal = myScanner.nextDouble();
System.out.println("人的信息如下:");
System.out.println("名字=" + name
+ " 年龄=" + age + " 薪水=" + sal);
}
}
3.11 进制(程序员的基本功)
进制介绍
对于整数,有四种表示方式:
二进制:0,1 ,满 2 进 1.以 0b 或 0B 开头。
十进制:0-9 ,满 10 进 1。
八进制:0-7 ,满 8 进 1, 以数字 0 开头表示。
十六进制:0-9 及 A(10)-F(15),满 16 进 1. 以 0x 或 0X 开头表示。此处的 A-F 不区分大小写。
图示:


进制的转换
👇

(1):其他进制转10进制


(2)10进制转其他进制



(3) 2进制转其他进制

(4)其他进制转2进制


3.12 原码、反码、补码(重点 难点)

🐙: 重点 : 计算机运行时都是以补码的方式来运算的,但是最后的结果是要转换成原码来表示的
3.13 位运算
? java 中有 7 个位运算(&、|、^、~、>>、<<和 >>>),位运算也都是以补码的方式来运算的
public class BitOperator {
public static void main(String[] args) {
System.out.println(2&3);
System.out.println(~-2);
System.out.println(~2);
}
}
3.14 本章作业



🔚🔚🔚🔚😸
在校学生,0基础学习java,如有问题,请多指教(^U^)ノ~YO 后续会继续更新哒,如果对博主感兴趣,麻烦点个关注和👍哟!😄😄😄 🚀🚀🚀

|