韩顺平Java-第四章:运算符

发布时间:2026/10/26 17:52:36
韩顺平Java-第四章:运算符

一、算术运算符

​ 使用细节:

​ ① 除法(/)

System.out.println(10 / 4); //输出2,因为10和4都是int型数据,结果为int型 System.out.println(10.0 / 4); //输出2.5,因为10.0是double型,故结果为double型 double d = 10 / 4; System.out.println(d); //输出2.0,因为10/4计算得int型结果2,然后将2转换为double型得2.0

​ ② 取模(%)

%的本质:a % b = a - a / b * b ③ 自增(++)用法同自减(- -) int j = 8; int k = j++; // k = j;j = j + 1 System.out.println("k = " + k + "j = " + j) // 结果:k = 8; j = 9 int x = 8; int y = ++x; // x = x + 1;y = x; System.out.println("y = " + y + "x = " + x) // 结果:x = 9; y = 9

练习题:

int i = 1; i = i++; //(1) temp = i;(2)i = i + 1;(3)i = temp; System.out.println(i); //输出1 int x = 1; x = ++x; //(1)x = x + 1;(2)temp = x;(3)x = temp; System.out.println(x); //输出2 //定义一个变量保存华氏温度,华氏温度转换为摄氏温度的公式为:5/9*(华氏温度-100) //算出华氏温度对应的摄氏温度 double a = 234.5; double b = 5.0 / 9 * (a - 100); //注意是5.0不是5 因为int型的精度比较低,导致最后的结果为零 System.out.println("对应的温度为" + b);

二、 关系运算符

​ 使用细节:

​ ① 关系运算符的结果都是boolean型,true或者false。 ② 关系运算符组成的表达式叫做关系表达式。 ​③ 比较运算符“==”不能误写成“=”。

三、逻辑运算符

​ 使用细节:

①&&和&使用区别&&短路与:如果第一个条件为false,则第二个条件不会判断,最终结果为false。&逻辑与:不管第一个条件是否为false,第二个条件都要判断,效率低。 在开发当中,一般都是用短路与&&,效率高。
②||和|使用区别||短路或:如果第一个条件为true,则第二个条件不会判断,最终结果为true,效率高。|逻辑或:不管第一个条件是否为true,第二个条件都要判断,效率低。 在开发当中,一般都是用短路或||,效率高。

练习题:

boolean x = true; boolean y = false; short z = 46; if(z++ == 46)&&(y = true) z++; //注意 y = true 是赋值,为true if(x = false)||(++z == 49) z++; //注意 x = false 是赋值,为true System.out.println("z=" + z); //结果z= 50

四、赋值运算符

  1. 介绍
    基本赋值运算符: =

    复合赋值运算符:

    += ;- =;* =;/ =;%=;等

2.细节特点
(1)运算顺序从右往左。

​ (2)赋值运算符的左边只能是变量,右边可以是变量、表达式、常量值。

​ (3)符合赋值运算符等价于下面的效果:a += 3 //a = a + 3。

​ (4)符合赋值运算符会进行类型转换。

byte b = 3; b += 2; //等价于b = (byte)(b + 2); b++; //等价于b = (byte)(b + 1);

五、三元运算符

  1. 基本语法
    条件表达式 ? 表达式1:表达式2;

    运算规则:

    (1)如果条件表达式为true,运算后的结果是表达式1;

    (2)如果条件表达式为false,运算后的结果是表达式2。

  2. 使用细节
    (1)表达式1和表达式2要为可以赋给接受变量的类型(或者可以自动转换)

    (2)三元运算符可以转为if–else语句

if res = a > b ? a++;--b; //等价于下面 if (a > b) res = a++; else res = --b;

​ 练习题:求三个数中的最大值

int a = 10; int b = 20; int c = 30; //方法一 int temp = a > b ? a : b; int lagest = temp > c ? temp : c; System.out.println("a,b,c当中最数的是" + lagest); //方法二 int lagest = (a > b ? a : b) > c ? (a > b ? a : b) : c; System.out.println("a,b,c当中最数的是" + lagest);

六、运算符优先级

​ 优先级从上到下依次减退。

​ (1)() {}等

​ (2)单目运行 + + - -

​ (3)算术运算符

​ (4)位移运算符

​ (5)比较运算符

​ (6)逻辑运算符

​ (7)三元运算符

​ (8)赋值运算符

七、标识符的命名规则和规范

  1. 标识符的命名规则
    (1)由26个英文字母大小写,0-9,_或$组成。

    (2)数字不可以开头。

    (3)不可以使用关键字和保留字,但是可以包含关键字和保留字。

    (4)Java中严格区分大小写,长度无限制。

    (5)标识符不能包含空格。

  2. 标识符命名规范
    (1)包名:多单词组成时所有字母都小写:aaa.bbb.ccc

    (2)类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz[大驼峰]

    (3)变量名、方法名:多单词组成是,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz[小驼峰,简称 驼峰法]

    (4) 常量名:所有字母都大写。多单词时,每个单词都用下划线链接:XXX_YYY_ZZZ

    (5)其他的规范之后补充。

八、键盘输入语句

  1. 步骤
    (1)导入该类的所在包 java.util.Scanner。

    (2)创建该类对象(声明变量)。

    (3)调用里面的功能。

import java.util.Scanner; public class Input { public static void main(String[] args){ Scanner oneScanner = new Scanner(System.in); System.out.println("请输入姓名:"); String name = oneScanner.next(); System.out.println("请输入性别:"); String gender = oneScanner.next(); System.out.println("请输入年龄:"); int age = oneScanner.nextInt(); System.out.println("请输入薪资:"); double sal = oneScanner.nextDouble(); System.out.println("姓名:" + name + " 性别:" + gender +" 年龄:"+ age + " 薪资:" + sal); } }

九、进制

​ 对于整数,有四种表示方式:

1. 二进制:0,1,满2进1,以0b或0B开头。 2. 十进制:0-9,满10进1。 3. 八进制:0-7,满8进1,以数字0开头表示。 4. 十六进制:0-9及A(10)-F(15),满16进1,以0x或者0X开头表示,其中A-F不区分大小写。

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

1. 二进制的最高位是符号位:0表示正数,1表示负数。 2. 正数的原码、反码,补码都一样。 3. 负数的反码 = 它的原码符号位不变,其它位取反。 4. 负数的补码 = 它的反码 + 1,负数的反码 = 负数的补码 - 1。 5. 0的反码,补码都是0。 6. java没有无符号数,换言之,java中的数都是有符号的。 7. 在计算机运算的时候,都是以补码的方式来运算的。 8. 当我们看运算结果时候,要看他的原码。

十一、位运算符

​ java当中有7个位运算(&、|、^、~、>>、<<和>>>)

​ 分别是按位与&、按位或|、按位异或^、按位取反~,算术右移>>,算术左移<<,逻辑右移(无符号右移)>>>,它们的运算规则:

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

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

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

​ 按位取反~:0变1,1变0

​ 算术右移>>:低位溢出,符号位不变,并用符号位补溢出的高位

​ 算术左移<<:符号位不变,低位补0

逻辑右移(无符号右移)>>>:低位溢出,高位补0(注意:没有<<<符号)