java操作符

来源:互联网 发布:visio for mac dmg 编辑:程序博客网 时间:2024/06/06 00:53

java操作符

在最底层,java的数据是通过操作符来操作的。

java中的操作符主要分为以下几种:

赋值操作符

java中通过”=”来进行赋值,它的意思是取右边的值,把它复制给左边。
在java中基本类型存储的是实际值,所以在赋值时,直接将一个地方的内容,复制到另一个地方,比如:a=b,那么b的内容复制给a,b不受现有a内容的影响。

但是当对对象赋值时,真正操作的其实是它的引用。当a=b时,其实是将对象的引用从b复制到了a,但是实际内存指向仍然是原有的对象。

用以下代码加以说明:

public class OperationTest1 {    public static void main(String[] args) {        int a1 = 10;        int a2 = a1;        a1 = 8;        System.out.println("a1:" + a1);//a1:8        System.out.println("a2:" + a2);//a2:10        ObjectTest i1 = new ObjectTest(10);        //将i1赋值给i2        ObjectTest i2 = i1;        //修改i2的值        i2.setIndex(20);        //打印i1的值        System.out.println(i1.getIndex());//打印出 20    }    public static class ObjectTest {        private int index;        public ObjectTest(int index) {            this.index = index;        }        public int getIndex() {            return index;        }        public void setIndex(int index) {            this.index = index;        }    }}

算数操作符

算数操作符包括:加号(+),减号(-),除号(/),乘号(*)以及取模操作符(%)

其中加号(+)和减号(-)可以作为一元操作符存在
具体用如下代码说明:

public class OperationTest2 {    public static void main(String[] args) {        int a1 = 10;        int a2 = 5;        // [+]        int a3 = a1 + a2;        a3 += a1;        System.out.println(a3);//25        // [-]        int a4 = a3 - a2;        a4 -= a1;        System.out.println(a4);//10        // [*]        int a5 = a1 * a2;        a5 *= a1;        System.out.println(a5);//500        // [/]        int a6 = a5 / a1;        a6 /= a1;        System.out.println(a6);//5        // [%]        int a7 = a1 % 3;        a7 %= 3;        System.out.println(a7);//1        //一元[+] [-]        int a8 = +a1;        int a9 = -a2;    }}

在此基础上,java还提供了递增和递减的快捷运算功能
递减操作符:”–”
递增操作符:”++”
根据所处的位置又分为:前缀式和后缀式
用以下代码说明:

public class OperationTest3 {    public static void main(String[] args) {        int i=0;        System.out.println("i++ :"+ i++);//i++ :0   先生成值,再执行运算        System.out.println("++i :"+ ++i);//++i :2   先运算,再生成值        System.out.println("i-- :"+ i--);//i-- :2        System.out.println("--i :"+ --i);//--i :0    }}

关系操作符

关系操作符返回的是一个boolean结果,主要用于计算操作值之间的关系。
如果关系成立,返回true,不成立,则返回false。
关系操作符包括:小于(<),大于(>),等于(==),大于等于(>=),小于等于(<=)以及不等于(!=)。
具体功能用如下代码说明:

public class OperationTest4 {    public static void main(String[] args) {        String a = new String("1");        String b = new String("1");        System.out.println(a == b);//false  a与b虽然内容相同,但是不是同一个对象        System.out.println(a != b);//true        int a1 = 1;        int b1 = 2;        System.out.println(a1 > b1);//false        System.out.println(a1 < b1);//true        a1 = 2;        System.out.println(a1 == b1);//true        System.out.println(a1 != b1);//false        a1 = 1;        System.out.println(a1 >= b1);//false        System.out.println(a1 <= b1);//true    }}

逻辑操作符

逻辑操作符分为:与(&),或(|),非(!),根据参数逻辑关系生成boolean值
当使用逻辑操作符时会遇到“短路“现象,当明确整个表达式时,余下部分不再计算。
用以下代码说明:

public class OperationTest5 {    public static void main(String[] args) {        int a = 1;        int b = 2;        System.out.println("a>0 and b>0:" + (a > 0 && b > 0));//a>0 and b>0:true        System.out.println("a>0 or b>0:" + (a > 0 || b > 0));//a>0 or b>0:true        System.out.println("a>0 and b>0:" + (greatThan(a, 10) && greatThan(b, 10)));//compare:1 and 10  a>0 and b>0:false  这里只执行了第一个greatThan方法,因为第一次判定不符合,则整个表达式必定返回false,后续判定无需执行        System.out.println("a>0 and b>0:" + (greatThan(a, 10) & greatThan(b, 10)));//compare:1 and 10 compare:1 and 10  a>0 and b>0:false  未执行短路        System.out.println("a>0 or b>0:" + (greatThan(a, 0) || greatThan(b, 0)));//compare:1 and 0   a>0 or b>0:true    }    private static boolean greatThan(int leftPart, int rightPart) {        System.out.println("compare:" + leftPart + " and " + rightPart);        return leftPart > rightPart;    }}

按位操作符

按位操作符分为以下几种:与(&),或(|),异或(^),非(~),可与”=”等号连用。
代码如下:

public class OperationTest6 {    public static void main(String[] args) {        int a = 1;// 0001        int b = 2;// 0010        int c = 3;// 0011        int temp = a & b;        System.out.println("a&b:" + temp + " binary:" + Integer.toBinaryString(temp));//a&b:0 binary:0        temp = a | b;        System.out.println("a|b:" + temp + " binary:" + Integer.toBinaryString(temp));//a|b:3 binary:11        temp = c ^ b;        System.out.println("a^b:" + temp + " binary:" + Integer.toBinaryString(temp));//a^b:1 binary:1        temp = ~b;        System.out.println("~b:" + temp + " binary:" + Integer.toBinaryString(temp));//~b:-3 binary:11111111111111111111111111111101    }}

移位运算符

java中有三种移位运算符

<<      :     左移运算符,num << 1,相当于num乘以2>>      :     右移运算符,num >> 1,相当于num除以2>>>     :     无符号右移,忽略符号位,空位都以0补齐

使用如下代码说明:

public class OperationTest7 {    public static void main(String[] args) {        int a = 1;        int b = -1;        long l = -1;        short s = -1;        byte b2 = -1;        System.out.println("a:" + a + " binary:" + Integer.toBinaryString(a));//a:1 binary:1        int temp = a << 10;        System.out.println("a<<10:" + temp + " binary:" + Integer.toBinaryString(temp));//a<<10:1024 binary:10000000000        System.out.println("b:" + b + " binary:" + Integer.toBinaryString(b));//b:-1 binary:11111111111111111111111111111111        temp = b >> 10;        System.out.println("b>>10:" + temp + " binary:" + Integer.toBinaryString(temp));//b>>10:-1 binary:11111111111111111111111111111111 负数,移位的同时用1补齐        temp = b >>> 10;        System.out.println("b>>>10:" + temp + " binary:" + Integer.toBinaryString(temp));//b>>>10:4194303 binary:1111111111111111111111   向右移位10次,并用0补气        l >>>= 10;        System.out.println("l>>>10:" + l + " binary:" + Long.toBinaryString(l));//l>>>10:18014398509481983 binary:111111111111111111111111111111111111111111111111111111        s >>>= 10;        System.out.println("s>>>10:" + s + " binary:" + Integer.toBinaryString(s));//s>>>10:-1 binary:11111111111111111111111111111111  移位操作实际上是把值转换成int后再操作,然后截断返回给原有的值,就有可能产生这种情况        b2 >>>= 10;        System.out.println("b2>>>10:" + b2 + " binary:" + Integer.toBinaryString(b2));//b2>>>10:-1 binary:11111111111111111111111111111111    }}

三元操作符

三元操作符if-else
采用如下语法:
boolean-exp?value1:value2;
当表达式返回true时取value1,否则返回value2。
代码如下:

public class OperationTest8 {    public static void main(String[] args) {        System.out.println("if-else:" + (true ? "true" : "false"));//if-else:true        //等同于        String temp = null;        if(true){            temp = "true";        }else            temp = "false";        System.out.println("if-else:" + temp);    }}

字符串操作符

java中可以通过操作符对字符串进行拼接操作,主要方式如下:

public class OperationTest9 {    public static void main(String[] args) {        String a = "a ";        String b = "b";        System.out.println(a+b);//a b        a+=b;        System.out.println(a);//a b    }}

类型转换操作符

类型转换是指当适当的时候java会将一种数据类型自动转换成另一种。
java允许把所有基本数据类型转化成其他基本数据类型,但是boolean除外。
在float和double转为整形时,进行截尾操作。
想要舍入,则必须调用Math中的round()方法。

原创粉丝点击