数据类型转换
boolean类型不参与数据类型转换
自动类型提升(隐式)
小范围的数据赋值给大范围的数据变量时,将会进行自动类型提升
public class Demo{
public static void main(String[] args){
//定义short类型数据
short s = 1;
//将小范围short类型赋值给大范围int类型时,数据类型自动提升
int i = s;
//打印输出i
System.out.println(i);
}
}
强制类型转化(显示)
大范围类型的数据赋值给小范围的数据类型变量
小范围数据类型 变量名 = (小范围数据类型)大范围数据类型;
public class Demo{
public static void main(){
//定义int类型变量i
int i = 1;
//将int类型强转为byte类型
byte b = (byte) i ;
}
}
说明:强制类型转换时先转换类型后赋值
容易导致数据损失精度,不准确
注意:
-
变量存储单个数据的盒子
-
如果参与运行时候,最后会统一提升为最大的类型
-
byte,short,char类型计算时候,最后的结果会类型自动提升为int类型
-
在为byte,short,char类型赋值的时候,只要在其范围内的"常量"都能成功赋值
-
byte short int float double
-
char类型参与四则运算,先转为整数再参与运算
byte b = 5; shor s = 4; char c = 'a'; int i = b + s + c;
运算符
算数运算符
-
+:
-
正号: + 3; + 10;
-
加法运算:int c = a + b;
-
字符串的连接:当运算符左右两边一旦出现字符串,+就作为字符串的连接符使用,最终把两边数据拼接,得到一个新的字符串
public class Test{ public static void main(String[] args){ //字符拼接 String str = "HelloWorld! " + 'a'; System.out.println(str);//HelloWorld!a //字符拼接 String str1 = "hello" + 1; System.out.println(str1);//hello1 } }
-
-
-:
- 负号: - 10;
-
*,/数学乘除
-
%:取模(取余数)
- 当第一个数小于第二个操作数,结果为第一个操作时
-
++:自增1
- a++:表示数值a + 1,a++ --> a = a + 1;
- ++a:表示数值a + 1, ++ a --> a = a + 1;
-
–;自减少1
a++与++a(a–与--a)的异同:
++放在操作数的前面或者后面,都是自身+1
–放在操作数的前面或者后面,都是自身减1
a++先运算后自增1
++a先自增1后进行运算
public class Test1{
public static void main(String[] args){
int a = 5;
int b = 6;
int c;
c = a++ + b;//先a和b进行和运算赋值给c,然后a自增1,
System.out.println(c);//11
int d = 5;
c = ++d + b;//d先自增1,然后d和b进行和运算赋值给c
System.out.println(c);//12
}
}
赋值运算符
基础赋值运算符: =
等号时java中唯一一个自右向左运算的符号
扩展赋值运算符
-
+= 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;
推荐使用
优点:
- 执行效率高
- 帮助自动做强制类型转换 (++可以实现自动强制类型转换)
缺点:
- 不够直观
比较运算符 | 关系运算符
< :小于 > :大于 <= :小于等于 >= :大于等于
基本数据类型的比较
== !=
基本数据类型,引用数据类型
最终比较运算符得到的结果为boolean类型的结果
逻辑运算符
- &:逻辑与,一个为false则为false,两个都为true才是true
- |:逻辑或,一个为true则为true,两个都为false才是false
- ^: 异或,相同则为false,不同则为true
- !:非,取反 !true = false !false = true
- &&:短路与,与&逻辑判断一致,不同的是,&&的第一表达式如果为false,则不会运行第二表达式
- ||:短路或,与|逻辑判断一致,不同的是,||的第一表达式如果为true,则不会运行第二表达式
一般的,表达式中使用短路逻辑运算符,短路逻辑运算符效率更高
注意:逻辑运算符的操作数只能为值为boolean类型的表达式或者值
条件运算符:三元运算符
表达式 ? 值1 : 值2;
表达式的结果为boolean类型
执行流程:
- 表达式结果为true:结果为值1
- 表达式结果为false:结果为值2
注意最终肯定能得到一个结果两个值中间得到一个
public class Demo{
int a = 10;
int b = 5;
int c = a > b ? a : b;//三元运算符执行运算
System.out.println(c);//10
String str = a > b ? "a大","b大";
System.out.println(str);//a大
//判断a是否为偶数
str = a % 2 == 0 ? "偶数" : "奇数";
System.out.println(str);//偶数
}
注意:最终肯定能得到一个结果,两个值中间得到一个