java运算符的优先级别
一、运算符的优先级
运算符按照优先级别的高低排序分别是:自加/减运算符、 算术运算符、比较运算符、逻辑运算符、赋值运算符。具体请参考下表:
顺序 |
运算符 |
1. |
括号,如 ( ) 和 [ ] |
2. |
一元运算符,如 -、++、- -和 ! |
3. |
算术运算符,如 *、/、%、+ 和 - |
4. |
关系运算符,如 >、>=、<、<=、== 和 != |
5. |
逻辑运算符,如 &、^、|、&&、|| |
6. |
条件运算符和赋值运算符,如 ? :、=、*=、/=、+= 和 -= |
下面这个例子:
int i=1,j=2;
int a=i+++j+++i++;
System.out.println(a);
看着就让人头晕了,我们可以修改以下这样。
int a=(i++)+(j++)+(i++);
二、类型转换
java有两种类型的转换,分别是自动类型转换和强制类型转换。
1、自动类型转换
一般而言,java编译器还是比较智能的,对不同数据类型的参数,会自动转换类型,为了不至于数据的丢失,一般是较窄的数据类型转换为较宽的数据类型。也就是说如果一个short类型和一个int类型相加,那么结果就会自动转换为int类型,因为int比short数位要宽,再有如果int类型和float类型相加,那么结果是float类型,因为浮点型比整型所能表示的数据要宽。另外我们也可以把一个较窄的数据类型直接赋值给一个较宽的数据类型。总结一下,在赋值或者计算时,只要满足以下条件,就会发生自动类型转换:
(1)两种类型兼容;
(2)目标类型大于源类型;
例如:
(1)byte、char和 short 型值可提升为 int 型。如果一个操作数为 long 型,则整个表达式结果为 long 型
(2)如果一个操作数为 float 型,则整个表达式结果为 float 型。而如果一个操作数为 double 型,则整个表达式结果为 double 型
2、 强制类型转换
强制转换用于显式类型转换。但是强制类型转换需要小心使用,因为如果被转换的值的数据类型大于其目标类型,就会丢失部分信息。类型强制转换使程序将变量视为某种类型,尽管此变量中包含的是另一类型的数据,其具体格式如下:
(类型名)表达式
float a = 346.756565f;
int b = (int) a + 10; // 将 c 转换为整型
System.out.println(b);
最后的结果是356,浮点型a后面的所有的小数都会丢失。
最新文章
- 7月07日——[HouseStark] 团队简介
- MyBatis学习总结
- centos7.0 没有netstat 和 ifconfig命令问题
- 关于inodes占用100%的问题及解决方法
- WebViewJavascriptBridge 原理分析
- ASP.NET 使用C#代码设置页面元素中的样式或属性
- 关于开源中文搜索引擎架构coreseek中算法详解
- 使用Eclipse开发Maven插件-1/3
- python中的字符串和数字连接
- 每天一道Java题[5]
- Python 操作 GA API 指南
- SQL Server - DISTINCT
- mybatis : ERROR. token : COMMA, pos : 373
- kindle試玩
- 说说xgboost算法
- IDEA_debug窗口问题,debugger窗口消失,窗口漂浮等
- jquey XMLHttpRequest cannot load url.Origin null is not allowed by Access-Control-Allow-Origin
- zoj1649-Rescue (迷宫最短路径)【bfs 优先队列】
- ASP.NET WEB API 2: HTTP MESSAGE LIFECYLE
- Machine Learning系列--归一化方法总结
热门文章
- nginx之旅(第二篇):nginx日志管理、nginx防盗链、nginx虚拟主机
- Linux小知识点
- 【SSH错误】ssh_exchange_identification: read: Connection reset by peer
- svn忽略target文件
- javascript之DOM(四其他类型)
- Bash Shell中的特殊位置变量及其应用
- 重新学习Spring注解——servlet3.0
- Spring——JDBC——数据库
- offsetWidth的bug
- thinkphp5.0 中简单处理微信支付异步通知