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()方法。
- Java:操作符
- java位操作符
- java操作符
- Java操作符
- java中的&|^操作符
- java 位操作符
- Java操作符
- java操作符说明
- 3 java操作符
- 使用 Java 操作符
- Java操作符复习
- java 操作符
- java操作符
- java-位操作符
- java 位操作符
- java instanceof操作符
- Java +=操作符
- Java instanceof操作符
- overcommit_memory
- 关于SAP Router连接不稳定的改良
- java集合类-----精华啊
- SpringCloud 教程 | 第五篇:路由网关(zuul)
- Android View的事件分发机制探索
- java操作符
- Keras 学习心得
- 如何使用 Jenkins、GitHub 和 Docker 在 Azure 中的 Linux VM 上创建开发基础结构
- 单态设计模式
- weblogic详解
- 堆
- Bean 作用域
- Java 单例模式的3种写法
- linux驱动之定时器的使用