[转载]JAVA操作符
几乎所有运算符都只能操作“主类型”(Primitives)。例外是“=”、“= =”和“! =”,它们能操作所有对象。除此以外,String类支持“+”和“+=”。
(1)赋值
主类型使用“A=B”,那么B处的内容就复制到A。若修改A,那么B根本不会受修改的影响。
对象“赋值”的时候情况发生了变化。对一个对象进行操作时,我们真正操作的是它的句柄。所以倘若“从一个对象到另一个对象”赋值,实际就是将句柄从一个地方复制到另一个地方。这意味着假若为对象使用“C=D”,那么C和D最终都会指向最初只有D才指向的那个对象。
short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)
short s1 = 1; s1 += 1;(可以正确编译) +=运算符无类型转换问题
(2)算术运算符
Java的算术运算符:加号(+)、减号(-)、除号(/)、乘号(*)以及模数(%,从整数除法中获得余数)。整数除法会直接砍掉小数,而不是进位。
(3)自动递增、递减
对于前递增和前递减(如++A或--A),会先执行运算,再生成值。
对于后递增和后递减(如A++或A--),会先生成值,再执行运算。
(4)关系运算符
关系运算符包括<、>、<=、>=、= =、!=
等于和不等于适用于所有内建的数据类型,但其他比较不适用于boolean类型。
想对比两个对象的实际内容是否相同,必须使用所有对象都适用的特殊方法equals()。
equals()方法不适用于“主类型”,那些类型直接使用= =和!=即可。
equals()的默认是比较句柄。所以除非在自己的新类中改变了equals(),否则不可能表现出我们希望的行为
大多数Java类库都实现了equals(),所以它实际比较的是对象的内容,而非它们的句柄
= =和! =比较的是对象句柄,而不是对象的实际内容
(5)逻辑运算符
逻辑运算符&&、||、!能生成一个布尔值
&和&&都可作为逻辑运算符“与”使用,但是&&是“短路与”,运算时先判断符号前面的表达式的值,如果能够确定整个表达式的值,则不进行符号后面的表达式的运算。
另外,&可作为位运算符使用
(6)按位运算符
按位AND运算符(&)
按位OR运算符(|)
按位XOR(^,异或)
按位NOT(~,也叫作“非”运算符)属于一元运算符,生成与输入位的相反的值
(7)移位运算符
左移位运算符(<<)能将运算对象向左移动运算符右侧指定的位数(在低位补0)。
有符号右移位运算符(>>)将运算对象向右移动运算符右侧指定的位数。有符号右移位运算符使用了符号扩展:若值为正,则在高位插入0;若值为负,则在高位插入1
无符号右移位运算符(>>>),它使用了“零扩展”:无论正负,都在高位插入0
(8)三元IF-ELSE运算符
布尔表达式 ? 值0:值1 “布尔表达式”的结果为true,就计算“值0”,否则计算“值1”
(9)字符串运算符+
int x = 0, y = 1, z = 2;
System.out.println(“out:” + x + y + z);
在这里,Java编译程序会将x,y和z转换成它们的字串形式,而不是先把它们加到一起
运用“String +”时,若表达式以一个String起头,那么后续所有运算对象都会转换到字串。
想通过“加号”连接字串(使用Java的早期版本),请务必保证第一个元素是字串
(10)造型(Cast)运算符
对于“缩小转换”(Narrowing Conversion)的操作(能容纳更多信息的数据类型,将其转换成容量较小的类型,例如int转short),此时就可能面临信息丢失的危险。此时,编译器会强迫我们进行明确造型
对于“放大转换”(Widening conversion),则不必进行明确造型,因为新类型肯定能容纳原来类型的信息,不会造成任何信息的丢失
布尔值(bollean)根本不允许进行任何造型处理,其它任何主类型可互相造型
将float或double值造型成整数值后,总是将小数部分“砍掉”,不作任何进位处理
Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)==12 Math.round(-11.5)==-11
round方法返回与参数最接近的长整数,参数加1/2后求其floor.
转载于:https://www.cnblogs.com/end/archive/2013/01/21/2870164.html
[转载]JAVA操作符相关推荐
- java string()函数_转载java String.split()函数的用法详解
转载java String.split()函数的用法详解 如果您发现本文排版有问题,可以先点击下面的链接切换至老版进行查看!!!在java.lang包中有String.split()方法的原型是: p ...
- java操作符重载_Java基础知识-操作符重载
java操作符重载 String str1 = "hello"; String str2 = str1 + " world"; System.out.print ...
- [转载] Java反射是什么?看这篇绝对会了!
参考链接: Java中的util.Arrays与Reflection.Array的示例 作者:火星十一郎 https://www.cnblogs.com/hxsyl 一.概念 反射就是把Java的各种 ...
- [转载] JAVA条件表达式的陷阱
参考链接: Java条件表达式中的数字类型提升 Map<String, Integer> map = new HashMap<String, Integer>(); map ...
- [转载] JAVA 堆栈 堆 方法区 静态区 final static 内存分配 详解
参考链接: 在Java中为静态最终static final变量分配值 转载来源:https://blog.csdn.net/peterwin1987/article/details/7571808 J ...
- [转载] Java面试题全集(上)
参考链接: 如何运行不同目录中的Java类文件 2013年年底的时候,我看到了网上流传的一个叫做<Java面试题大全>的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有 ...
- python 操作符 vs java 操作符
转载自:http://blog.csdn.net/fhnp1983/article/details/6937340 python的操作符大部分和java是相同的,功能相近,运算符等级也差不多,这篇bl ...
- 转载 java开发基础 https://blog.csdn.net/jiangjiewudi/article/details/9565749
Java就是用来做项目的!Java的主要应用领域就是企业级的项目开发!要想从事企业级的项目开发,你必须掌握如下要点: 1.掌握项目开发的基本步骤 2.具备极强的面向对象的分析与设计技巧 3.掌握用例驱 ...
- [转载]Java 语言中的函数编程
Java 语言中的函数编程 如果您从事大型企业项目开发,您就会熟悉编写模块化代码的好处.良构的.模块化的代码更容易编写.调试.理解和重用.Java 开发人员的问题是,函数编程范型长期以来只是通过像 H ...
最新文章
- HTML转WORD WORD转PDF--来源网络
- 高性能udp服务器架构,优秀的国产高性能TCP/UDP/HTTP开源网络通信框架——HP
- python常见错误-Python 常见报错类型
- Oracle-数据字典解读
- vue3与vue2的详细区别
- oracle大量数据删除
- SQL入门(3):定义约束/断言assertion/触发器trigger
- android shape 圆角百分比,Android shape显示圆角问题
- ct上的img表示什么_明明胸部CT上已经写了肺癌,为什么还要做那么多花钱又痛苦的检查...
- html中的声明的作用域,Html/CSS 作用域
- 作为企业创业者的老板,只要把这十八个方面做正确就好
- android http封装类,HTTP封装类 工具类 For Android
- Image2icon for Mac(icon图标设计软件)
- 卡诺模型案例分析_需求分析神器 | 如何用卡诺模型分析需求
- 动图图解!既然IP层会分片,为什么TCP层也还要分段?
- mysql数据库数据恢复
- 李想这三年主要做了什么?
- 基于jsp java的汽车维修管理系统
- 今天第一天上班,下了大雪,希望在新的一年里瑞雪兆丰年!
- 秋招准备之——(软件测试)
热门文章
- spark to mysql date_[Spark][Python]Spark 访问 mysql , 生成 dataframe 的例子:
- python︱matplotlib使用(读入、显示、写出、opencv混用、格式转换...)
- R语言︱非结构化数据处理神器——rlist包
- 需求处理的三个步骤:需求梳理、需求分析、需求放大
- java语句while主意点
- DZY Loves Graph
- python 返回函数
- 30岁前不要让人生留下遗憾笔记
- linux 内核源码学习
- zookeeper核心面试问题及解答