阅读时间约 14 分钟

Java-Phase01-Chapter03

运算符

Posted by LuckyE on March 5, 2025

Chapter03

算数运算符

Untitled

% 取模(取余)

1
2
3
4
5
6
System.out.println(10 / 4); 结果为2
System.out.println(10.0 / 4); 结果为 2.5

double d = 10 / 4;
		System.out.println(d);
结果为2.0

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

看%的本质, a % b = a - a / b * b

看被除数的符号,余数结果与被除数一致,与除数无关

1
2
3
4
System.out.println(10 % 3);  1
		System.out.println(-10 % 3);  -1
System.out.println(10 % -3);   1

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

Untitled

1

Untitled

2

Untitled

1
2
3
4
5
int days = 59;
		int weeks = days / 7;
		int day = days % 7;
		System.out.println(days + "天 合" + weeks 
		+ "个星期" + day + "天");

华氏转摄氏度

1
2
3
4
5
double huashi = 234.5;
		思考为什么是5.0 
    double ctem = 5.0 / 9 * (huashi - 100);
		System.out.println("华氏温度"+ huashi 
    + "℉是" + ctem + "℃"  );

关系运算符

Untitled

Untitled

1
2
3
4
5
6
7
8
9
10
int a=9;
		int b = 8;
		System.out.println(a > b); //T
		System.out.println(a >= b); //T
		System.out.println(a <= b); //F 
		System.out.println(a < b);//F
		System.out.println(a == b); //F
		System.out.println(a != b); //T
		boolean flag = a > b; //T
		System.out.println("flag=" + flag);

Untitled

逻辑运算符

Untitled

Untitled

&和&&同真为真,否则为假

  有真则真,全假则假

^异或运算,相同为假,不同为真

&和&&基本规则

名称 语法 特点
短路与&& 条件1&&条件2 两个条件都true,结果为true
逻辑与& 条件1&条件2 两个条件都true,结果为true

Untitled

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int a = 4;
		int b = 9;
		if( a < 1 **&&** ++b < 50) {
			System.out.println("ok3");
		}
		System.out.println("a=" + a + "b=" + b);
结果为 4 9

		int c = 4;
		int d = 9;
		if( c < 1 **&** ++d < 50) {
			System.out.println("ok4");
		}
		System.out.println("c=" + c + "d=" + d);
结果为 4 10

|和||基本规则

名称 语法 特点    
短路或&& 条件1   条件2 两个条件有一个true,结果为true
逻辑或& 条件1 条件2    

Untitled

^异或

1
2
3
boolean z = (10 > 1) ^ ( 3 < 5);
		System.out.println("z="  + z);
False两边不相同时为True

练习

Untitled

Untitled

Untitled

Untitled

Untitled

赋值运算符

Untitled

Untitled

三元运算符

Untitled

1
2
3
4
int a = 10;
		int b = 99;
		int result = a > b ? a++ : b--;
		System.out.println("结果是:" + result);

表达式1和表达式2要为可以赋给接收变量的类型(或可以自动转换)

三元运算符可以转换成if else语句

输出三个数中的最大值

1
2
3
4
5
6
7
8
9
10
11
12
int n1 = 55;
int n2 = 33;
int n3 = 123;

int max1 = n1 > n2 ? n1 : n2;
int max2 = max1 > n3 ? max1 : n3;
System.out.println(max2);

一句话
int max3 = (n1 > n2 ? n1 : n2) > n3 ? 
           (n1 > n2 ? n1 : n2) : n3;
		System.out.println(max3);

运算符优先级

Untitled

只有单目运算符、赋值运算符是从右向左运算的

Untitled

标识符的命名规则

自己取名的的地方都是标识符

Untitled

包名 com.cn.hsp 小写加.

类名,接口名 大驼峰式命名 StringNum

变量名、方法名 多单词组成时,小驼峰,第一个单词首字母小写,第二个单词开始每个首字母都大写stringNum

常量名 所有字母都大写 STRING_NUM

键盘输入语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.Scanner;

public class InPutScanner {
	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 wage = myScanner.nextDouble();
		System.out.println("人的信息如下");
		System.out.println("name= " + name 
		+ "age=" + age + "wage=" + wage);

	}
}

进制

Untitled

Untitled

Untitled

Untitled

※原码、反码、补码※

1.二进制的最高位是符号位:0表示正数,1表示负数(口诀:0->0 1->-)

2.正数的原码,反码,补码都一样(三码合一)

3.负数的反码=它的原码符号位不变,其它位取反(0->1,1->0)

  1. 负数的补码=它的反码+1

    负数的反码=负数的补码-1

  2. 0的反码,补码都是0

6.java没有无符号数,换言之,java中的数都是有符号的7.在计算机运算的时候,都是以补码的方式来运算的.

8.当我们看运算结果的时候,要看他的原码

位运算

Java中7个位运算符,(&、 、^、 ~、 »、 «、 »>)
**按位与&、按位或 、按位异或^,按位取反~**

按位与&: 两位全为1,结果为1,否则为0

Untitled

**按位或 : 两位有一个为1,结果为1,否则为0**

按位异或^:两位一个为0,一个为1,结果为1,否则为0

按位取反~ : 0→1, 1→0

Untitled

1.算术右移»:低位溢出,符号位不变,并用符号位补溢出的高位 右移一位 除 一个2

对于右移操作,如果对一个负数进行算术右移,最高位(符号位)会被复制以保持数的符号,这也是除以2^n

的一个特例。

2.算术左移«:符号位不变,低位补0 左移一位乘一个2

3.»>逻辑右移也叫无符号右移,运算规则是:低位溢出,高位补0

4.特别说明:没有«<符号

Untitled

练习

a % b ,当a为小数时,公式=a - (int)a /b * b

-10.5%3 = -1.5

Untitled

Untitled

Untitled

Untitled

1
2
3
4
5
String str = "123.4";
double d1 = Double.parseDouble(str);

char c1 = '韩';
String str2 = c1 + "";