Java运算符总结一览

发布于:2022-10-27 ⋅ 阅读:(320) ⋅ 点赞:(0)


运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。

算术运算符

算术运算符是对数值类型的变量进行运算的,在Java程序中使用的非常多。

image-20221026200113401

public class Test {
    public static void main(String[] args) {

        // /使用
        System.out.println(10 / 4); // 2
        System.out.println(10.0 / 4); // 2.5
        double d = 10 / 4;
        System.out.println(d); // 2.0

        // %使用
        System.out.println(10 % 3); //1
        System.out.println(-10 % 3); // -1
        System.out.println(10 % -3);//1
        System.out.println(-10 % -3);//-1

        // ++使用
        int i = 10;
        i++;  //作为独立语句使用的话, i++与++i没有区别
        System.out.println("i=" + i); //11
        // 不一样的地方来了
        int k = 0;
        int kplus = k++;
        System.out.println(kplus);
    }
}
public class Test {
    public static void main(String[] args) {
        // 奇怪的sb题目
        int i = 1;
        // i = i++;  //规则使用临时变量: (1) temp=i; (2)i=i+1; (3)i=temp;
        i = ++i; //(1)i=i+1; (2)temp=i; (3)i=temp;
        System.out.println(i);// 1 2
    }
}

Java 中的 i = i++ 问题_善良超锅锅的博客-CSDN博客

关系运算符[比较运算符]

关系运算符的结果都是boolean型,也就是要么是true,要么是false

关系表达式经常用在if结构的条件中或循环结构的条件中

image-20221026210124194

逻辑运算符

用于连接多个条件(多个关系表达式) ,最终的结果也是一个boolean值。

分为两组学习
1)短路与&& 短路或|| 取反!
2)逻辑与& 逻辑或| ^逻辑异或

image-20221026210531389

&&和&使用区别

  • &&短路与:如果第一个条件为false, 则第二个条件不会判断,最终结果为false, 效率高
  • &逻辑与:不管第一个条件是否为false,第二个条件都要判断,效率低
  • 开发中,我们使用的基本是短路与&&,效率高
public class Test {
    public static void main(String[] args) {
        boolean x = true;
        if (x = false) {  // = 这里是赋值,条件不成立
            System.out.println("!");
        }
    }
}

赋值运算符

赋值运算符就是将某个运算后的值,赋给指定的变量。

image-20221027143051175

赋值运算符特点

1 运算顺序从右往左 int num=a+b+c;

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

int num=20;
int num2=78*34-10;
int num3=a;

3 复合赋值运算符等价于下面的效果

比如: a+=3;等价于a=a+ 3;

4 复合赋值运算符会进行类型转换。

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

三元运算符

条件表达式?表达式1:表达式2;

1.如果条件表达式为true,运算后的结果是表达式1;
2.如果条件表达式为false,运算后的结果是表达式2;

public class Test {
    public static void main(String[] args) {
        int a = 1;
        int b = 10;
        int c = a > b ? a++ : --b;
        System.out.println(c);
    }
}

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

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

int res=a>b?a++:--b;

运算符优先级

1 运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如表,上一行运算符总优先于下一行。

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

image-20221027150237369

标识符的命名规则和规范

标识符概念

  • Java 对各种变量、方法和类等命名时使用的字符序列称为标识符
  • 凡是自己可以起名字的地方都叫标识符 int num1 = 90;

标识符的命名规则(必须遵守)

  1. 由26个英文字母大小写,0-9,_ 或 $ 组成
  2. 数字不可以开头。 int 3ab = 1;
  3. 不可以使用关键字和保留字,但能包含关键字和保留字。
  4. Java中严格区分大小写,长度无限制。int totalNum = 10; int n = 90;
  5. 标识符不能包含空格。int a b = 90;

标识符命名规范[更加专业]

  1. 包名:多单词组成时所有字母都小写: aaa.bbb.ccc //比如com.hsp.crm
  2. 类名、接口名:多单词组成时,所有单词的首字母大写: XxxYyyZzz [大驼峰]
    比如: TankShotGame
  3. 变量名、方法名:多单词组成时,第一个单词首字母小写, 第二个单词开始每个单词首字母大写: xxxYyyZzz[小驼峰, 驼峰]
    比如: tankShotGame
  4. 常量名:所有字母都大写。多单词时每个单词用下划线连接: XXX_YYY_ZZZ
    比如:定义一个所得税率TAX_RATE
  5. 后面我们学习到类,包,接口,等时,我们的命名规范要这样遵守,更加详细的看文档.

关键字与保留字

定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)
特点:关键字中所有字母都为小写

image-20221027152552236

Java保留字: 现有Java版本尚未使用,但以后版本可能会作为关键字使用。自己命名标识符时要避免使用这些保留字
byValue、cast、 future、 generic、 inner、 operator、outer、rest、var 、goto、const

键盘输入语句

在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。Input.java,需要一个扫描器(对象),就是Scanner

步骤
1)导入该类的所在包,java.util.*
2)创建该类对象(声明变量)
3)调用里面的功能

案例演示:
要求:可以从控制台接收用户信息,[姓名,年龄,薪水]。

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        //1 导入Scanner类
        //2 创建Scanner对象
        Scanner scanner = new Scanner(System.in);
        //3 接受用户输入
        System.out.println("请输入名字:");
        String name = scanner.next();
        System.out.println("请输入年龄:");
        int age = scanner.nextInt();
        //4 show一下
        System.out.println(name + "现在" + age + "岁了!");
    }
}

进制

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

  • 二进制: 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不区分大小写。
public class Test {
    public static void main(String[] args) {
        int n1 = 0b1010; //二进制
        int n2 = 1010;//十进制
        int n3 = 01010;//八进制
        int n4 = 0x10101;//十六进制
    }
}

位运算符[需要二进制基础]

二进制在运算中的说明

  • 二进制是逢2进位的进位制,0、1是基本算符。
  • 现代的电子计算机技术全部采用的是进制,因为它只使用0、1两个数字符号,非常简单方便,易于用电子方式实现。计算机内部处理的信息,都是采用二进制数来表示的。二进制(Binary) 数用0和1两个数字及其组合来表示任何数。进位规则是"逢2进1",数字1在不同的位上代表不同的值,按从右至左的次序,这个值以二倍递增。

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

网上对原码,反码,补码的解释过于复杂,我这里精简几句话:
对于有符号的而言:

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

位运算符

image-20221027162219294

        // 先得到2的补码 00000010
        // 3的补码      00000011
        // 运算结果 2&3  00000010 这个是补码
        // 符号位是0,正数 三码合一 so 原码 00000010 = 2
        System.out.println(2 & 3);
        // -2的原码 10000010
        // -2的反码 11111101  符号位不变, 其他位取反
        // -2的补码 11111110  反码+1
        // ~之后    00000001  这个是补码
        // 0是正数 三码合一 =1
        System.out.println(~-2);
        // 2的原码   0000 0010
        // 2的补码   0000 0010    三码合一
        // ~之后    1111 1101  这个是补码
        // 符号位1是负数
        // 先 -1 得到反码 1111 1100
        // 再取反 得到原码 1000 0011 = -3
        System.out.println(~2);

还有3个位运算符>><< >>> , 运算规则:

  • 算术右移>>: 低位溢出,符号位不变,并用符号位补溢出的高位
  • 算术左移< <: 符号位不变,低位补0
  • 逻辑右移也叫无符号右移运算规则是: 低位溢出,高位补0
  • 特别说明: 没有<<<符号
        // 1的原码   0000 0001  => 0000 0000 01
        System.out.println(1 >> 2); //=0      相当于 /2/2
        // 1的原码   0000 0001  => 0000 0100
        System.out.println(1 << 2); //=4      相当于 *2*2
本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到