JavaSE的运算符

[Top]

算术运算

分类 运算符
算数运算符 * / + - % ++ --
赋值运算符 +=, -=, /=, *=, %=(扩展赋值运算符), =
比较(关系)运算符 == != > <= >= instanceof
逻辑运算符 & && | || ! ^
位运算符 ~ & | >> << >>>
条件运算符 (条件表达式)? 表达式1:表达式2

算数运算符

1.‘+’

  • 表示正数
  • 进行加法运算(数值+数值,数值+‘字符’,‘字符’+‘字符’)
  • 连接作用 (字符串+字符串,字符串+数值......字符串+其他)=字符串

2.‘-’

  • 表示负数
  • 减法运算(数值-数值,数值-‘字符’,‘字符’-‘字符’)
  • 注:字符串没有减法

3.‘*’

4.‘/’

5.‘++’

  • ++数值:先++再赋值y=x++ +3;//x+3
  • 数值++:先赋值再++y=++x+3;//x+1+3

6.‘--’

7.‘%’

  • 两边为整数

  • 与++同理

赋值运算符 ('=')

  • 将等号右边的值赋值给等号左边

下面举一个特殊的例子:

short s = 3;
s=s+2; ①会出错,因为2为int型
s+=2; ②是对的,+2后会进行隐式转换为s对应的数据类型/= ,*=,-=,%=同理

1688960932459

1688961030282

注:两边数据类型必须一致

比较运算符(结果为true与false)

1.'=='

判断两边数值是否相等(基本类型与基本类型),Boolean与Boolean进行比较,String与String进行比较(引用类型与引用类型),

注意 字符串自己不能比较大小,Boolean与Boolean不能比较大小

2.'!='

数值!=数值,bool!=bool,string!=string;

3.'>'和'<'

数值与数值,字符与数值,字符与字符

4.'>='与'<='

与3同理

5.instanceof

判断左边类型是否与右边类型一致

package homeworkday7.chouxiang;

public class Test {
    public static void main(String[] args) {
        Cuiweiyang dqw=new Dengqinwen();
        Cuiweiyang dqw2=new Dengqinwen2();
        Person zs = new Person();
          dqw.sleep();
          dqw2.sleep();
          Dengqinwen dqw3=(Dengqinwen) dqw;
          zs.feed(dqw3);
    }
}
package homeworkday7.chouxiang;

public class Person {
    public void feed(Cuiweiyang cuiweiyang){
        cuiweiyang.eat();
        if(cuiweiyang instanceof Dengqinwen){//判断cuiweiyang是否与Dengqinwen是一个类型
            System.out.println("转换为Dengqinwen成功!");
        }
    }
}

1689579249022

逻辑运算符

1.& 逻辑与

所有表达式结果为true,结果为true ,否则false

特点:当第一个表达式为false时,还会去继续执行第二个式子

2.&& 逻辑与/短路与

所有表达式结果为true,结果为true ,否则false

特点:当第一个结果为false时,不会再继续执行第二个式子

int a=1;
        int b=2;
        int c=3;
        System.out.println(a>b&(b++)>c);
        System.out.println(b);
        b=2;
        System.out.println(a>b&&(b++)>c);
        System.out.println(b);
false
3
false
2

3.| 逻辑或

当所有表达式结果为false,结果为false,否则为true

特点:当第一个表达式为true时,还会去继续执行第二个式子

4.|| 逻辑或/短路或

当所有表达式结果为false,结果为false,否则为true

特点:当第一个表达式为true时,不会去继续执行第二个式子

int a=1;
        int b=2;
        int c=3;
        System.out.println(a<b|(b++)>c);
        System.out.println(b);
        b=2;
        System.out.println(a<b||(b++)>c);
        System.out.println(b);
true
3
true
2

5.! 逻辑非

!true = false,!false = true;

6.^ 逻辑异或

相同为false 不同为true

条件运算符

(条件表达式)? 表达式 1 : 表达式2

若 条件表达式 为true 去执行表达式 1 ,否则执行表达式 2;

位运算符

1.<< 左移

空位补0,被移除的最高位丢弃,空缺位补0

int a=7;
        int b=4;
        System.out.println(b<<2);
        //0000 0100 4
        //0001 0000 16

2.>> 右移

被移位的二进制最高位是0,右移后,空缺位补0,最高位是1,空缺位补1

        int b=4;
        System.out.println(b>>2);
        //0000 0100 4
        //0000 0001 1

3.>>> 无符号 右移

被移位二进制最高位无论是0还是1,空缺位都用0补

正数

        int b=4;
        System.out.println(b>>>2);
        //0000 0100 4
        //0000 0001 1

负数

		int b=-4;
        System.out.println(b>>>2);
        /*
            0111 1111 1111 1111 
            1111 1111 1111 1100 -4
         */
        /*
            0011 1111 1111 1111
            1111 1111 1111 1110 1073741823
         */

4.& 与

对应两位都为1,则结果为1,否则0

		int a=2;
        int b=4;
        System.out.println(a&b);
        /*
            0000 0010 2
            0000 0100 4 &
            0000 0000
         */

5.^ 异或

对应两位都相等,则结果为0,否则1

		int a=2;
        int b=4;
        System.out.println(a^b);
        /*
            0000 0010 2
            0000 0100 4 ^
            0000 0110
         */

6.| 或

对应两位都为0,则结果为0,否则1

		int a=2;
        int b=4;
        System.out.println(a|b);
        /*
            0000 0010 2
            0000 0100 4 |
            0000 0110
         */

7.~ 非

对所有位取反 1~0 0~1

		int a=2;
        int b=4;
        System.out.println(~a);
        /*
            ~0000 0010 2
             1111 1101 -3(最高位为1)
         */

注:使用byte类型移位时,系统会自动换为int进行位运算

posted @ 2024-05-26 16:46  Yang0710  阅读(6)  评论(0编辑  收藏  举报