Java中操作符


一、运算符的种类

  1. 算术运算符:+,-,*,/,%,++,–

  2. 赋值运算符:=

  3. 位移运算符:<<,>>,>>>,<<=,>>=,>>>=

  4. 按位运算符:&,|,~,^

  5. 关系运算符:>,>=,<,<=,==

  6. 逻辑运算符:&&,||,!

  7. 三目运算符:? :

  8. 字符串操作运算符:+、+=

二、运算符的使用

1、赋值(=)

赋值运算符是“=”,意思是取右边的值复制或传递给左边的值。右边的值可以是任何常数、变量、表达式(只要能生成一个值)。但足左边的值必须是一个明确的、已命名的的变量。但是不能把任何东西赋值给一个常数。
代码如下(示例):

public class Tank {
	float a = 0;
	public static void main(String[] args) {
		Tank t1 = new Tank();
		Tank t2 = new Tank();
		t1.a = 3;
		t2.a = 2;
		t1.a = t2.a;
		System.out.println("t1.a:"+t1.a);
		System.out.println("t2.a:"+t2.a);
		
	}
}	

2、算术运算符

  • Java算术运算符包括加号(+)、减号(-)、除号(/)、乘号(*)、取模(%)。整数除法会直接去掉结果的小数位,而不是四舍五入地圆整结果。
  • 自增(++)和自减(–):增加一个单位或减少一个单位。当前缀递增或递减时,先运算后赋值;当后缀递增或递减时,先复制后运算。
    代码如下(示例):
```java
public class Tank {
	public static void main(String[] args) {
		int a = 1,b= 1;
		System.out.println("a+b:"+(a+b));
		System.out.println("a-b:"+(a-b));
		System.out.println("a*b:"+(a*b));
		System.out.println("a/b:"+(a/b));
		System.out.println("a++:"+(a++));
		System.out.println("++a:"+(++a));
		System.out.println("b--:"+(b--));
		System.out.println("--b:"+(--b));
		System.out.println("a:"+a);
		System.out.println("b"+b);
//		a+b:2
//		a-b:0
//		a*b:1
//		a/b:1
//		a++:1
//		++a:3
//		b--:1
//		--b:-1
//		a:3
//		b-1
	}
}	

3、关系预算符

关系运算符生成一个Boolean值的结果,比较的是操作数之间的关系。如果为真,则是true;若为假,则为false;其中等于和不等于适用于所有的基本数据类型,而其他比较符不适用于Boolean类型。因为Boolean值本身就是true和false,大小对于它没有实际意义。

  • ==和!=比较的是对象的引用。因为创建对象的时,会在堆栈中分配一个空间。
  • 若是要比较两个对象的内容,则用equals()方法。
public class Tank {
	public static void main(String[] args) {
		Integer a = new Integer(47);
		Integer b = new Integer(47);
		System.out.println(a==b);
		System.out.println(a.equals(b));
//		false
//		true

	}
}

4、逻辑运算符

在逻辑预算符中,“与(&&)”、“或(||)”,“非(!)”操作是适应与布尔值。不可将一个非布尔值当做布尔值在逻辑表达式中使用。
若是在使用String值的地方使用布尔值,布尔值会自动转换成适当的文本形式。
短路现象:
&&(与)也叫做短路与,因为只要当前项为假,它就不往后判断了,直接认为表达式为假
||(或)也叫做短路或,因为只要当前项为真,它也不往后判断了,直接认为表达式为真

public class Tank {
    static boolean test1(int val) {
        System.out.println("test1(" + val + ")");
        System.out.println("result:" + (val < 1));
        return val < 1;
    }

    static boolean test2(int val) {
        System.out.println("test2(" + val + ")");
        System.out.println("result:" + (val < 2));
        return val < 2;
    }

    static boolean test3(int val) {
        System.out.println("test3(" + val + ")");
        System.out.println("result:" + (val < 3));
        return val < 3;
    }
     public static void main(String[] args) {
        System.out.println("----------&&的短路测试----------");
        boolean a = test1(0) && test2(2) &&test3(1);
        System.out.println("a:" + a);
                System.out.println("----------||的短路测试----------");
        boolean b = test1(1) || test2(1) || test3(4);
        System.out.println("b:" + b);
     }
//     ----------&&的短路测试----------
//     test1(0)
//     result:true
//     test2(2)
//     result:false
//     a:false
//     ----------||的短路测试----------
//     test1(1)
//     result:false
//     test2(1)
//     result:true
//     b:true
}

5 、按位操作符

按位操作符用来操作整数基本数据类型中的单个“比特(bit)”,即二进制位。对两个参数中对应的为执行布尔代数运算,并最终生成一个结果。

  • 若输入的两个数都是1,测试按位“与(&)”生成一个输出位1,否则生成一个输出位0;
  • 若是输入位只有一个1,则是按位“或(|)”生成一个输出位1,只有两个输入位都是0,才会生成一个输出位0;
  • 若是输入位的某一个是1,则是按位“异或(^)”生成一个输出位1。
  • 按位“非(~)”,也称为取反操作符。其生成与输入位相反的值——若输入0,生成1;若输入1,则生成0;

6、移位操作符

.移位操作位用来处理整数的基本数据类型,运算对象也是二进制的“位”。

  • 左位移操作符(<<):按照操作符右侧指定的位数将操作符左边的的操作数向左移动(在低位补0)。
  • 右位移操作符(>>):按照操作符右侧指定的位数将操作符左边的的操作数向右移动。
  • “有符号”右位移操作符使用“符号扩展”:若符号为正,则在高位插入0;弱符号为负,则在高位插入1。“无符号”右位移操作符(>>>),使用“零扩展”。即无论正负,都在高位插入0;
  • 若对char、byte、short类型的数值进行位移处理时,在位移之前,会被转化成int类型,并且得到结果也是int类型。
  • “位移”可与“等号”(<<=、>>=、>>>=)组合使用,则表示操作符左边的值会移动由右边的的值指定的位数。再将得到的结果赋值给左边的变量。

7、三元操作符

三元操作符也称条件操作符。如果布尔表达式为true,则取value1。若表达式为false,则取value2;
表达式为:
Boolean-exp ?value1 :value2;

8、字符串操作符+和+=

该操作符的作用是:连接不同的字符串。若表达式以一个字符串开头,那么后续所有的操作数都必须是字符串型的。

9、类型转换操作符

Java会将一种数据类型自动转换成另一种数据类型。

  • 其中布尔类型不允许进行任何类型的转换处理,其它基本类型都可转换成别的基本数据类型。
  • 将float和double转型为整型值时,总是对该数字执行截尾。如果想要得到舍入的结果,就需要使用java.lang.Math中的round()方法。

10 、Java没有sizeof()操作符

在C和C++中,sizeof()操作符可以告诉你为数据项分配的字节数。使用这个操作符的最大原因是为了进行一些与存储空间有关的运算,使程序可以在不同平台上“移植”。
而Java不需要sizeof()操作符来满足这方面的需要,因为所有数据类型在所有机器中的大小是相同的。我们不必考虑移植问题——它已经被设计在语言中了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值