当前位置:网站首页>第四章:操作符
第四章:操作符
2022-07-25 16:51:00 【执手天涯@】
第四章:操作符
4.1、操作符简介
操作符能用于操作数据值,包括算术运算符、位操作符、关系操作符和相等操作符。
4.2、整型操作符
简介:可以对byte、short、int、long进行操作的操作符。
分类:一元操作符、二元操作符
4.2.1、一元整型操作符
简介:只能操作一个操作元(通俗的说就是只能操作一个数值)
| 操作符 | 实际作用 | 案例 |
|---|---|---|
| - | 改变整数的符号,取反 | -x 相当于-1*x |
| ~ | 逐位取反,属于位运算 | ~x |
| ++ | 加1 | x++ |
| – | 减1 | x– |
注意:++和–都会改变自身的值而-和~不会改变变量自身的值。
++也可以分为前置的++和后置的++
x++ //表示某个程序执行后x自身的数值加1
++x //先将某个程序执行,然后再将x的值加1
–也可以分为前置的–和后置的–
x-- //表示某个程序执行后x自身的数值减1
--x //先将某个程序执行,然后再将x的值减1
4.2.2、二元整型操作符
简介:可以操作两个操作元的运算符。
| 操作符 | 实际作用 | 案例 |
|---|---|---|
| + | 加运算 | a+b |
| - | 减运算 | a-b |
| * | 乘运算 | a*b |
| / | 除运算 | a/b |
| % | 取余数运算 | a%b |
| & | 与运算 | a&b |
| | | 或运算 | a|b |
| ^ | 异或运算 | a^b |
| << | 算数左移 | a<<b |
| >> | 算数右移 | a>>b |
| >>> | 逻辑右移 | a>>>b |
4.3、浮点型操作符
简介:多数的整数型操作符也是适用于浮点型操作符的,用法和整数型操作符用法相似。运算结果的类型与操作元中表示范围最大的类型保持一致。
注意:
- 浮点数不支持位运算
- 浮点数据类型有两个特殊的值-Infinity和Infinity,他们可以用来表示浮点数的运算结果,例如:整数除以0得正无穷大,负数除以0得负无穷大。
4.4、比较运算符和逻辑运算符
简介:运算结果都是boolean类型,除了!以外都是二元运算符
| 操作符 | 实际含义 |
|---|---|
| < | 小于 |
| > | 大于 |
| <= | 小于等于 |
| >= | 大于等于 |
| == | 等于 |
| != | 不等于 |
| && | 短路与 |
| & | 非短路与 |
| || | 短路或 |
| | | 非短路或 |
| ! | 非 |
短路与非短路的区别:
非短路始终都会执行操作符两边的布尔表达式。
短路只要执行操作符一边的布尔表达式就可以确定表达式的值的时候不会去执行另一边。
4.5、特殊操作符“?:”
简介:Java中有一种特殊的三元操作符“?:”
语法:布尔表达式 ?表达式1:表达式2
解释:如果布尔表达式成立,执行表达式1,不成立执行表达式2
4.6、字符串连接操作符“+”
**简介:**操作符+能够连接字符串,并且生成新的字符串。
注意事项:
- 两个操作元一个是String类型的,另外一个是任意类型的用+操作符后返回的一定是String类型的。
- 如果两个操作元都不是String类型的,那么两个操作元比必须是除boolean类型之外的其他类型。
- 对于包含多个+操作符的表达式,Java会根据+操作符进行左结合特点,从左边开始计算表达式。根据操作元的类型来确定+操作符的性质。
- 除了+操作符可以连接字符串之外,其他操作符都不能连接字符串。
4.7、操作符“==”与对象的equals()方法
4.7.1、操作符“==”
简介:比较两个操作元是否相等,两个操作元可以是基本数据类型,也可以是引用数据类型。
当操作符两边都是引用数据类型的时候,这两个变量必须都引用同一个对象,结果才为true。
Integer int1=new Integer(1);
Integer int2=new Integer(1);
Integer int3=int1; //int3和int1来自同一个对象,所以使用int3==int1最后输出结果是true,但是int1和int2不是同一个对象,int2==int1返回值为false
操作符“==”与多态性
对于引用类型的变量,Java编译器会根据变量被显示声明的类型去编译。“==”用于比较引用类型变量的时候,操作符两边被显示声明的类型必须是同种类型或者有继承关系(即都是在继承树的同一个分支上)。
操作符“==”用于数组类型
boolean b1=new int[4]==new long[5]; //编译出错,原因是两边的类型不一致 boolean b2=new int[4]==new int[4]; //合法 返回false int[]array1=new int[4]; int[]array2=array1; boolean b3=array1=array2; //返回true
4.7.2、对象的equals()方法
简介:equals()方法是在Object类中定义的方法,声明格式如下:
public boolean equals(Object obj)
比较规则:当参数obj引用的对象与当前对象为同一个对象的时候就返回true,否则返回false
public boolean equals(Object obj){
if(this==obj){
return true;
}else{
return fasle;
}
}
4.7.3、简单总结
- “==”和对象的equals()方法都是用于比较两个操作元是否相等。
- “==”实际比较的是他们的内存地址是否相等。
- 对象的equals()方法实际比较的是他们的值是否相等。
4.8、instanceof操作符
简介:instanceof操作符是用于判断所引用的对象是否是一个类的实例。操作符的左边是一个对象,右边往往是一个类或接口。
语法:
obj instanceof 类名、接口
类的实例包含内容:类的本身、所有的直接或间接子类的实例。
instanceof与多态性
对于引用类型的变量,Java编译器会根据变量被显示声明的类型去编译。instanceof操作符两边被显示声明的类型必须是同种类型或者有继承关系(即都是在继承树的同一个分支上)。
instanceof用于数组类型
boolean b1=new int[4] instanceof long[]; //由于两边类型不一致,返回值是false boolean b2=new int[4] instanceof int[]; //返回true
4.9、变量的赋值和类型转换
简介:“=”操作符在开发过程中使用是最平凡的,所表达的含义是把操作符右边的值赋值给操作符左边的变量。
规则:
- 一个直接数可以直接赋值给与它类型相同的变量。
- 同种类型的变量之间赋值可以直接进行
- 不同类型的变量之间赋值,需要进行类型转换
4.9.1、基本数据类型转换
- 自动类型转换
转换规则:
(byte、int、short、long、char、float) option(代表操作) (double)——double
(byte、int、short、long、char) option(代表操作) (float)——float
(byte、int、short、char) option(代表操作) (long)——long
(byte、short、char) option(代表操作) (int)——int
(byte、short、char) option(代表操作) (byte、short、char)——int
- 强制类型转换
把高位类型赋值给低位类型必须进行强制类型转换,否则会编译报错。
强制类型转化会导致数据精度的丢失或者数据溢出的现象。
4.9.2、引用类型的类型转换
简介:引用类型的变量之间赋值时,子类赋值给直接或间接父类,会自动进行类型转换。父类赋值给子类的时候需要进行强制类型转换。
边栏推荐
- ILSSI认证|六西格玛DMAIC的历程
- [target detection] tph-yolov5: UAV target detection based on Transformer's improved yolov5
- 7.依赖注入
- SAP Fiori 的附件处理(Attachment handling)
- 失意的互联网人拼命叩开Web3大门
- Is it safe to open a securities account in Huatai VIP account
- Budget report ppt
- Exception handling mechanism topic 1
- Quickly deploy mqtt clusters on AWS using terraform
- Data analysis and privacy security become the key factors for the success or failure of Web3.0. How do enterprises layout?
猜你喜欢

Who moved my memory and revealed the secret of 90% reduction in oom crash

Baidu rich text editor ueeditor single image upload cross domain

Enterprise live broadcast: witness focused products, praise and embrace ecology

新增批量删除

Rainbond插件扩展:基于Mysql-Exporter监控Mysql

如何安装govendor并打开项目

QT listview list display component notes

HCIP笔记十一天

Outlook 教程,如何在 Outlook 中搜索日历项?

激荡20年,芯片产能从零起步到反超美国,中国制造的又一大成就
随机推荐
【读书会第13期】+FFmpeg开源项目
QT listview list display component notes
Paper notes: highly accurate protein structure prediction with alphafold (alphafold 2 & appendix)
Slf4j and log4j2 process logs
Roson的Qt之旅#99 QML表格控件-TableView
一百个用户眼中,就有一百个QQ
What is the monthly salary of 10000 in China? The answer reveals the cruel truth of income
城市燃气安全再拉警钟,如何防患于未“燃”?
Is it safe to open a securities account in Huatai VIP account
LVGL 7.11 tileview界面循环切换
华泰vip账户证券开户安全吗
如何使用 4EVERLAND CLI 在 IPFS 上部署应用程序
fastadmin tp 安装使用百度富文本编辑器UEditor
测试框架-unittest-测试套件、结果输出到文件
[OBS] frame loss and frame priority before transmission
Getting started with easyUI
Differences between cookies, cookies and sessions
mindoc制作思维导图
[mathematical modeling and drawing series tutorial] II. Drawing and optimization of line chart
Two methods of importing sqllite table from MySQL