当前位置 博文首页 > 都是我的锅的博客:JAVA从基础开始(数据类型转换,运算符)
当等号左右两边数据类型不一致时,就会发生数据类型转换,二数据类型转换又分为两种情况,一中是自动转换,一种是强制转换
将取值范围小的数据类型赋值给赋值范围大的数据类型
代码演示:
public class Demo01DataType {
public static void main(String[] args) {
/*
等号右边的10默认类型是int型
将int型的10赋值给了long型的变量l,符合取值范围小
的数据类型赋值给取值范围大的数据类型
发生了自动类型转换
*/
long l = 10;
double d = 10;
}
}
1.什么时候用到?
当我们需要将取值范围大的数据类型赋值给赋值范围小的数据类型时会用到
2.怎么用?
取值范围小的数据类型 变量名 = (取值范围小的数据类型) 取值范围大的数据类型
代码演示:
public class Demo02DataType {
public static void main(String[] args) {
/*
2.5默认类型是double,此代码是将double型的2.5赋值给了int型的变量i
由于double取值范围大,int型的取值范围小,那么代码需要强制类型转换
*/
//int i = 2.5;
int i = (int)2.5;
int i1 = (int)100L;
int j = 10;
double k = 20.5;
/*
一个小类型的和一个大类型的做运算,小类型的会自动提升为大类型的
*/
int sum = (int)(j+k);
}
}
1.不要随便使用强转,容易出现精度损失,数据溢出
2.byte,short如果等号右边是常量,或者是常量运算,如果没有超出范围,不会报错-->jvm的优化
3.byte,short如果等号右边有变量,或者int型的变量参与运算了,会自动提升为int型,需要强转
4.char类型如果提升为int型之后,会去一个码表中查询字符对应的int值(ASCII码表-->unicode码表(万国码))
+ | 两数相加(也可做字符串拼接) |
---|---|
- | 两数相减 |
* | 两数相乘 |
/ | 两数相除取商值 |
% | 两数相除取余数部分 |
++ | 自增运算符 |
- - | 自减运算符 |
※ 格式:自增(变量++ ++变量 ) 自减(变量-- --变量)
※ 单独使用(自己独立成为一句):
符号在前或者在后都没有区别
※ 混合使用(和其他语句一起使用):
符号在前(先运算,再使用-->先运算,运算之后,再用运算后的值)
符号在后(先使用,再运算-->先使用原值,使用完了以后,再运算)
判断运算符前后两个数的关系(其判断结果肯定为true或者false,也就是说其值为boolean类型)
== | 判断两个数是否相等,相等返回true,不相等false |
---|---|
> | 判断前面的是否比后面的大,大的话true,否则false |
< | 判断前面的是否比后面的小,小的话true,否则false |
>= | 判断前面的是否比后面的大或者相等,如果大或者相等返回true,否则false |
<= | 判断前面的是否比后面的小或者相等,如果小或者相等返回true,否则false |
!= | 判断两个数是否不等,如果不等返回true,如果相等返回false |
代码演示
public class Demo01BiJiao {
public static void main(String[] args) {
int i = 20;
int j = 20;
boolean result01 = i==j;
System.out.println(result01);
System.out.println(i<j);
System.out.println(i!=j);
System.out.println(i>=j);
System.out.println(1>=5);
}
}
= (最基本) | int i = 10 |
---|---|
复合 | |
+= | i+=2 —— >i = i+2 |
-= | i-=2 —— >i = i-2 |
*= | i*=2 —— >i = i*2 |
/= | i/=2 —— >i = i/2 |
%= | i%=2 —— >i = i%2 |
代码演示
public class Demo01FuZhi {
public static void main(String[] args) {
int i = 10;
/*i+=2;//i = i+2
System.out.println(i);
*/
//System.out.println(i/=3);
System.out.println(i%=3);
byte b = 10;
b+=20;//b = b+20
System.out.println(b);
}
}
格式:
_boolean表达式 逻辑运算符 boolean表达式_
& 逻辑与 | 有假则假:符号前后有一个boolean表达式是false,那么整体就是false |
| 逻辑或 | 有真则真:符号前后有一个boolean表达式是true,那么整体就是true |
! 逻辑非 | 取反:真变假,假变真… |
^ 逻辑异或(一般不用) | a和b结果不同为true,相同为false |
备注:
短路与:&& 短路效果(符号前面为false,符号后面不判断了)
短路或:|| 短路效果(如果符号前为true,后面不看)
代码演示:
public class Demo01LuoJi {
public static void main(String[] args) {
int i = 10;
int j = 20;
int k = 20;
boolean result = (i>k)&&(i>j);
System.out.println(result);
System.out.println((i<k)||(i>j));
System.out.println(!((i<k)||(i>j)));
System.out.println((i<k)^(i<j));
}
}
格式:
*boolean表达式?表达式1:表达式2*
流程:
走boolean表达式,如果是true,走?后面的表达式1,否则走:后面的表达式2
代码演示:
public class Demo01SuanYuan {
public static void main(String[] args) {
/*
需求:定义一个变量,当分数,判断这个分数是否及格
*/
int score = 60;
String result = (score>=60)?"及格":"不及格";
System.out.println(result);
}
}
cs