1、运算符的优先级java
运算符按照优先级别的高低排序分别是:自加/减运算符、 算术运算符、比较运算符、逻辑运算符、赋值运算符。具体请参考下表:spa
顺序code |
运算符blog |
1.排序 |
括号,如 ( ) 和 [ ] ci |
2.编译器 |
一元运算符,如 -、++、- -和 !编译 |
3.table |
算术运算符,如 *、/、%、+ 和 -class |
4. |
关系运算符,如 >、>=、<、<=、== 和 != |
5. |
逻辑运算符,如 &、^、|、&&、|| |
6. |
条件运算符和赋值运算符,如 ? :、=、*=、/=、+= 和 -= |
int i=1,j=2; int a=i+++j+++i++; System.out.println(a);
int a=(i++)+(j++)+(i++);
java有两种类型的转换,分别是自动类型转换和强制类型转换。
一、自动类型转换
通常而言,java编译器仍是比较智能的,对不一样数据类型的参数,会自动转换类型,为了避免至于数据的丢失,通常是较窄的数据类型转换为较宽的数据类型。也就是说若是一个short类型和一个int类型相加,那么结果就会自动转换为int类型,由于int比short数位要宽,再有若是int类型和float类型相加,那么结果是float类型,由于浮点型比整型所能表示的数据要宽。另外咱们也能够把一个较窄的数据类型直接赋值给一个较宽的数据类型。总结一下,在赋值或者计算时,只要知足如下条件,就会发生自动类型转换:
(1)两种类型兼容;
(2)目标类型大于源类型;
例如:
(1)byte、char和 short 型值可提高为 int 型。若是一个操做数为 long 型,则整个表达式结果为 long 型
(2)若是一个操做数为 float 型,则整个表达式结果为 float 型。而若是一个操做数为 double 型,则整个表达式结果为 double 型
二、 强制类型转换
强制转换用于显式类型转换。可是强制类型转换须要当心使用,由于若是被转换的值的数据类型大于其目标类型,就会丢失部分信息。类型强制转换使程序将变量视为某种类型,尽管此变量中包含的是另外一类型的数据,其具体格式以下:
(类型名)表达式
float a = 346.756565f; int b = (int) a + 10; // 将 c 转换为整型 System.out.println(b);
最后的结果是356,浮点型a后面的全部的小数都会丢失。