12.强制类型转换
把一个数据范围大的数值或者变量赋值给另一个表示数据范围小的变量 与11正好相反(见上文)
格式:目标数据类型变量名=(目标数据类型)值或者变量;
//强制类型转换
int k=(int)88.88;
System.out.println(k);
//输出为88,不建议使用会造成数据丢失 例: 88.88变为88
13.算数运算符(同C语言)
//算术运算符
int a =4;
int b =6;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/b);
System.out.println(a%b);
//整数相处只能得到整数,想的到小数,必须要有浮点数的参与
System.out.println(6.0/4);
//输出 //10
//-2
//24
//0
//4
//1.5
14.字符'+'操作
算数表达式中包含多个基本数据类型的值的时候,整个算数表达式的类型会自动进行提升
提升规则:
byte类型,short类型和char类型将被提升到int类型
整个表达式的类型自动提升到表达式中最高等级操作数同样的类型
等级顺序:byte,short,char→int→long→float→double
//定义两个变量
int i =10;
char c ='A';
System.out.println(i+c);
//输出结果为75 可知A为65
//char类型会被自动 提升为int类型
当"+"操作中出现字符串是时,这个"+"是字符串连接符,而不是算数运算 例:"Yao"+6180
在"+"操作中,如果出现了字符串,就是连接运算符,否则就是算数运算。当连续进行"+"操作时,从左到右逐个执行 例:1+99+"Yao"
System.out.println("Mengyao"+" Lin");
System.out.println("Yao"+"0618");
System.out.println("Yao"+6180);
System.out.println(6180+"Yao");//字符串拼接
System.out.println("Yao"+6180+888);
System.out.println(1+99+"Yao");//先做加法运算
//输出:Yao6180
// 6180Yao
// Yao6180888
// 100Yao
15.赋值运算符"="
a=10 读法:将10赋值给变量a
//把10赋值给int类型的变量i
int i =10;
System.out.println(i);
System.out.println("i:"+i);
// +=把左边和右边的数据做加法操作,结果赋值给左边
i=i+20;//结果等价于i+=20;
System.out.println("i:"+i);
//注意:int类型加上数字不会报错,如果short就会报错,涉及到强转换因为数字属于int类型
//注意:扩展的赋值运算符底层隐含看强制类型的转换
short s=10;
s= (short)(s + 20);//强转换,不建议用此方法,优先下面的方式
//s +=20;
System.out.println("s:"+s);
//输出:10
// i:10
// i:30
// s:30
16.自增自减运算符
++和 - - 既可以放在变量的后面,也可以放在变量的前面
单独使用的时候,++和- - 无论是放在变量的前面还是后面,结果还是一样的。
参与操作的时候,如果放在变量的后面,先拿变量参与操作,后拿变量做++或者- -
参与操作的时候,如果放在变量的前面,先拿变量做++或者- -,后拿变量参与操作 详情如下方代码所示
最常见的语法:单独使用
//定义变量
int i=10;
System.out.println("i:"+i);
//i++;和下面的效果一样都是11
//单独使用
//++i;
//参与操作使用,如果是i++则先把i的值赋值给j,i再做++
//int j = i++;
//如果++i则先进行++再赋值给j
int j= ++i;
System.out.println("i:"+i);
System.out.println("j:"+j);
17.关系运算符
关系运算符的结果都是boolean类型,要么是true,要么是false
千万不要把"=="误写成"="
//定义变量
int i =10;
int j =20;
int k = 10;
// ==
System.out.println(i == j);
System.out.println(i == k);
System.out.println("--------");
// !=
System.out.println(i != j);
System.out.println(i != k);
System.out.println("--------");
// >
System.out.println(i > j);
System.out.println(i > k);
System.out.println("--------");
// >=
System.out.println(i >= j);
System.out.println(i >= k);
System.out.println("--------");
//如果只写一个= ,则做的是赋值运算,以第一个为例
//把j的值赋值给了i,然后输出i的值
System.out.println(i = j);
//输出:false
// true
// --------
// true
// false
// --------
// false
// false
// --------
// false
// true
// --------
// 20
18.逻辑运算符
&&其实就是一个逻辑运算符,是用来连接关系表达式的运算符
逻辑运算符也可以直接链接布尔类型的常量或者变量
//定义变量
int i =10;
int j =20;
int k = 30;
//& 与 有false则false 都是true才是true
System.out.println((i > j ) & ( i > k ));//false & false
System.out.println((i < j ) & ( i > k ));//true & false
System.out.println((i > j ) & ( i < k ));//false & true
System.out.println((i < j ) & ( i < k ));//true & true
System.out.println("--------");
// | 或 有true则true 都是false才是false
System.out.println((i > j ) | ( i > k ));//false | false
System.out.println((i < j ) | ( i > k ));//true | false
System.out.println((i > j ) | ( i < k ));//false | true
System.out.println((i < j ) | ( i < k ));//true | true
System.out.println("--------");
// ^ 异或 相同为false 不同为true
System.out.println((i > j ) ^ ( i > k ));//false ^ false
System.out.println((i < j ) ^ ( i > k ));//true ^ false
System.out.println((i > j ) ^ ( i < k ));//false ^ true
System.out.println((i < j ) ^ ( i < k ));//true ^ true
System.out.println("--------");
// ! 非 结果相反
System.out.println((i > j ));//false
System.out.println(!(i > j ));//!false
System.out.println(!!(i > j ));//!!false
System.out.println(!!!(i > j ));//!!!false
//输出:false
//false
//false
//true
//--------
//false
//true
//true
//true
//--------
//false
//true
//true
//false
//--------
//false
//true
//false
//true
19.短路逻辑运算符
逻辑与&,无论左边真假,右边都要执行
短路与&&,如果左边为真,右边执行;如果左边为假,右边不执行
逻辑或|,无论左边真假,右边都要执行
短路或||,无果左边为假,右边执行;如果左边为真,右边不执行 二者正好相反
最常用的逻辑运算符:&& || !
//定义变量
int i =10;
int j =20;
int k = 30;
//&&
System.out.println((i > j ) && ( i > k ));//false && false
System.out.println((i < j ) && ( i > k ));//true && false
System.out.println((i > j ) && ( i < k ));//false && true
System.out.println((i < j ) && ( i < k ));//true && true
System.out.println("--------");
// ||
System.out.println((i > j ) || ( i > k ));//false || false
System.out.println((i < j ) || ( i > k ));//true || false
System.out.println((i > j ) || ( i < k ));//false || true
System.out.println((i < j ) || ( i < k ));//true || true
System.out.println("--------");
//&&和&
//System.out.println((i++ > 100) & (j++ > 100 ));// false $ false
System.out.println("i:" + i);
System.out.println("j:" + j);
System.out.println((i++ > 100) && (j++ > 100 ));// false &$ false
System.out.println("i:" + i);
System.out.println("j:" + j);
//false
//false
//false
//true
//--------
//false
//true
//true
//true
//--------
//i:10
//j:20
//false
//i:11
//j:20
20.三元表达式
格式:关系表达式?表达式1:表达式2;
范例:a>b?a:b;
计算规则:
首先计算关系表达式的值
如果值为true,表达式1的值就是运算结果
如果值为false,表达式2的值就是运算结果
//定义两个变量
int a =10;
int b=20;
//获取两个数据当中的最大值
int max = a > b ? a : b;
System.out.println( "max:"+ max);
//输出:max:20
案例:两只老虎
需求:动物园里面有两只老虎,已知两只老虎的体重分别为180kg 200kg 请用程序实现判断两只老虎的体重是否相同
分析:
(1)定义两个变量用于保存老虎的体重,单位为kg,这里仅仅体现数值即可
int weight1 =180;
int weight2 =200
(2)用三元运算符实现老虎体重的判断,体重相同,返回true,否则,返回false
(weight1 == weight2) ? ture:false;
(3)输出结果
//(1)
int weight1 =180;
int weight2 =200;
//(2)
boolean b = weight1 == weight2 ? true : false;
//(3)
System.out.println("b:" + b);
//输出: b:false
案例:三个和尚
三个和尚的身高分别为 210cm 165cm 150cm
分析:
(1)定义三个变量用于保存和尚的身高,单位为cm,这里仅仅体现数值即可
int height1 = 150;
int height2 = 165;
int height3 = 210;
(2)用三元运算符获取前两个和尚的比较身高值,并用临时身高变量保存起来
(height1>height2)?height1:height2;
(3)用三元运算符获取临时身高值和第三个和尚身高比较较高值,并用最大身高变量保存
(tempHeight>height3)? tempHeight:height3;
(4)输出结果
//(1)
int height1 = 150;
int height2 = 165;
int height3 = 210;
//(2)
int tempHeight =(height1>height2)?height1:height2;
//(3)
int max =(tempHeight>height3)? tempHeight:height3;
//(4)
System.out.println("max:"+ max);
//输出:max:210