2)强制类型转换
a)两种类型相互兼容
b)目标类型小于原类型
原类型 变量名1=值;
变量名2=(目标类型)变量名1;
强转后的三种情况:
1.数据没有发生丢失 原类型的数值 < 目标类型的范围
2…数据发生丢失 原类型的数值 >目标类型的范围
3.小数强转整数后,会丢失小数部分
运算符&表达式
一、表达式
是由变量、字面值、运算符组成的一个式子,一般都有结果。
一般情况下,我们需要使用一个变量来接收表达式的数值,接收这个表达式的变量类型需要与该表达式的数值的数 据类型一致。
我们可以把一个表达式直接放在输出语句的()中,输出结果为该表达式的值
例:
int a=10;
int b=a+12;
System.out.println(a+10);
System.out.println(a==b);
二、java的自动类型提升机制
1.两个数或变量进行运算 如果有一个是double 则其结果就是double类型 优先级第1的规则
2.两个数数或变量进行运算 如果有一个是float 则其结果就是** ** 优先级第2的规则 ]
3.两个数数或变量进行运算 如果有一个是long 则其结果就是long类型 优先级第3的规则
4.两个数数或变量进行运算 其他情况(既没有double 也没有float与long参****与) 其结果均为int类型 优先级第4的规
三、运算符
1.算数运算符
+ 表达式结果为二者之和 ‐ 表达式结果为二者之差 * 表达式结果为二者之积 / 表达式结果为二者之商 如果运算时没有小数参与则只保留整数部分 % 表达式结果为二者相除之余
2.赋值运算符
= = 右边对左边进行赋值 int a=10;
+= a+=b ‐‐‐> a = a+b;
‐= a‐=b ‐‐‐> a = a‐b;
*= a=b ‐‐‐> a = a*b;
/= a/=b ‐‐‐> a = a/b;
%= a%=b ‐‐‐> a = a%b;
3.++&-- 自增与自减运算符
a++: 在一次运算后 执行a = a+1;
++a: 在一次运算前 执行a = a+1;
a‐‐ : 在一次运算后 执行a = a‐1;
‐‐a : 在一次运算前 执行a = a‐1;
4.关系运算符
如果一个表达式的结果为布尔类型的值 则这种表达式被成为布尔表达式
==判断两者是否相等;> 判断左边是否大于右边 ; >= 判断左边是否大于等于右边 < 判断左边是否小于右边 <= 判断左边是否小于等于右边 != 判断左边是否不等于右边
当使用关系运算符去判断一个表达式是否成立时,结果是布尔类型, 成立为true,不成立为false
5.逻辑运算符
1.&& 短路与
a)语法:布尔表达式1 && 布尔表达式2
b) 作用:当 布尔表达式1 与 布尔表达式2 结果都为true时 整个表达式为true,否则为false
c)特性:如果布尔表达式1为 false 则不再判断 布尔表达式2
2.& 非短路与
a)语法:布尔表达式1 & 布尔表达式2 b) 作用:当 布尔表达式1 与 布尔表达式2 结果都为true时 整个表达式为true,否则为false
c)特性:两个布尔表达式无论true 或 false 都会被判断
3.|| 短路或
a)语法:布尔表达式1 || 布尔表达式2 b) 作用: 布尔表达式1 与 布尔表达式2 有一个结果true时 整个表达式为true,否则为false
c)特性:如果布尔表达式1为 true 则不再判断 布尔表达式
4.| 非短路或
a)语法:布尔表达式1 | 布尔表达式2 b) 作用: 布尔表达式1 与 布尔表达式2 有一个结果true时 整个表达式为true,否则为false
c)特性:无论两个布尔表达式的结果是否为true 均需要全部判断
5.!对表达式结果取反
a)语法:!(布尔表达式)
b)作用:将()内的布尔表达式结果取反
6.条件运算符(*三目运算符)
语法: 布尔表达式? 表达式1(或一个字面值1):表达式2(或一个字面值2)
作用: 如果布尔表达式为true 则整个表达式的结果 为表达式1(字面值1)的结果 如果布尔表达式为false 则整个表达式的结果 为表达式2(字面值2)的结果
例: int a = 10;
int b = 20;
int result = a>b? a:b; System.out.println(result)
7.运算符的优先级
1
括号() []
2
正(+)负(-)号
3
自增自减,非(++ – !)
4
乘(x)除(/),取余(%)
5
加(+)减(-)
6
移位运算(<< >> >>>)
7
大(> >= < <= )小关系
8
相等关系(== !=)
9
按位与(&)
10
按位异或(^)
11
按位或(|)
12
逻辑与(&&)
13
逻辑或(||)
14
条件运算(?: )
15
赋值运算(= += -= *= /= %=)
16
位赋值运算(&= |= <<= >>= >>>=)