
int a = 10; double b = a; //将int类型的a直接赋值给double的b System.out.println(b); //输出10
2.强制转换
把⼀个表示数据范围⼤的数值或者变量赋值给另⼀个表示数据范围⼩的变量。强制类型转换格式:⽬标数据类型 变量名 = ( ⽬标数据类型 ) 值或者变量。double max = 1000; int min =(int) max; //把double类型的max强制转到int类型的min,在值得前面加上目标数据类型 System.out.println(min); //输出的是1000,但要注意的是:值一旦过大强制转就会出现数据流失
3.表示数据范围从大到小图
说明: 整数默认是 int 类型, byte 、 short 和 char 类型数据参与运算均会⾃动转换为 int 类型。
byte b1 = 10; byte b2 = 20; byte b3 = b1 + b2; // 第三⾏代码会报错,b1和b2会⾃动转换为int类型,计算结果为int,int赋值给byte需要强制类型转换。 // 修改为: int num = b1 + b2; // 或者: byte b3 = (byte) (b1 + b2);
4.类型转换案例
byte a = 3; byte b = 4; byte c = a + b; //错误。因为两个byte变量相加,会先提升为int类型 byte d = 3 + 4; //正确。常量优化机制
1.算术运算符
特别注意!!!
1. / 和 % 的区别:两个数据做除法, / 取结果的商, % 取结果的余数。 2. 整数操作只能得到整数,要想得到⼩数,必须有浮点数参与运算。例如:
int a = 10;
int b = 20;
int c = a + b //+:是运算符,并且是算术运算符
//a + b:是表达式,由于+是算术运算符,所以这个表达式叫算术表达式。
int a = 10; int b = 3; System.out.println(a / b); // 输出结果3 System.out.println(a % b); // 输出结果1
2.字符的“+”操作
char 类型参与算术运算,使⽤的是计算机底层对应的⼗进制数值。需要我们记住三个字符对应的数值: 'a' -- 97 a-z 是连续的,所以 'b' 对应的数值是 98 , 'c' 是 99 ,依次递加 'A' -- 65 A-Z 是连续的,所以 'B' 对应的数值是 66 , 'C' 是 67 ,依次递加 '0' -- 48 0-9 是连续的,所以 '1' 对应的数值是 49 , '2' 是 50 ,依次递加// 可以通过使⽤字符与整数做算术运算,得出字符对应的数值是多少 char ch1 = 'a'; System.out.println(ch1 + 1); // 输出98,97 + 1 = 98 char ch2 = 'A'; System.out.println(ch2 + 1); // 输出66,65 + 1 = 66 char ch3 = '0'; System.out.println(ch3 + 1); // 输出49,48 + 1 = 49
2.算术表达式
1.算术表达式中包含不同的基本数据类型的值的时候,整个算术表达式的类型会⾃动进⾏提升。 2.byte类型,short类型和char类型将被提升到int类型,不管是否有其他类型参与运算。 3.整个表达式的类型⾃动提升到与表达式中最⾼等级的操作数相同的类型 等级顺序:byte,short,char --> int --> long --> float --> double
3.字母串的"+"操作
当 “+” 操作中出现字符串时,这个 ”+” 是字符串连接符,⽽不是算术运算。System.out.println("你好"+888); // 输出:你好888
在
”+”
操作中,如果出现了字符串,就是连接运算符,否则就是算术运算。当连续进⾏
“+”操作时,从左到右逐个执⾏。
4.数值拆分
示例代码:
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
// 1:使⽤Scanner键盘录⼊⼀个三位数
Scanner sc = new Scanner(System.in);
System.out.println("请输⼊⼀个三位数");
int num = sc.nextInt();
// 2:个位的计算:数值 % 10
int ge = num % 10;
// 3:⼗位的计算:数值 / 10 % 10
int shi = num / 10 % 10;
// 4:百位的计算:数值 / 100
int bai = num / 100;
// 5:将个位, ⼗位, 百位拼接上正确的字符串, 打印即可
System.out.println("整数"+num+"个位为:" + ge);
System.out.println("整数"+num+"⼗位为:" + shi);
System.out.println("整数"+num+"百位为:" + bai);
} }
5.自增自减运算符
特别注意:
1.++
和
--
既可以放在变量的后边,也可以放在变量的前边。
2.单独使⽤的时候,
++
和
--
⽆论是放在变量的前边还是后边,结果是⼀样的。
3.参与操作的时候,如果放在变量的后边,先拿变量参与操作,后拿变量做
++
或者
--
。
4.参与操作的时候,如果放在变量的前边,先拿变量做
++
或者
--
,后拿变量参与操作。
5.最常⻅的⽤法:单独使⽤。
6.赋值运算符
注意:
赋值运算符的作⽤是将⼀个表达式的值赋给左边,左边必须是可修改的,不能是常量。 赋值运算符中强制类型转换的实现: 在为变量赋值时,当两种类型彼此不兼容,或者目标类型取值范围小于源类型时,需要进行强制类型转换,如果将一个int类型的值赋给一个short类型的变量,需要显式地进行强制类型转换,然而在使用+=、-=、*=、/=、%=运算符进行赋值时,强制类型转换会自动完成,程序不需要做任何显式地声明。short s = 10; s = s + 10; // 此⾏代码报出,因为运算中s提升为int类型,运算结果int赋值给short可能损失精度 s += 10; // 此⾏代码没有问题,隐含了强制类型转换,相当于 s = (short) (s + 10);
7.关系运算符(或者可以说是比较运算符,下面全是字面意思)
关系运算符有6种关系,分别为⼩于、⼩于等于、⼤于、等于、⼤于等于、不等于,需要注意的是关系运算符结果都是boolean类型,要么是true,要么是false。
8.逻辑运算符
逻辑运算符把各个运算的关系表达式连接起来组成⼀个复杂的逻辑表达式,以判断程序中的表达式是否成⽴,判断的结果是 true 或 false 。9.短路逻辑运算符
在短路与运算符中,只要有一方为false那么就不会再去运行另一方,短路或中,一方为true也就不会再去运行另一方,这就是短路逻辑运算符跟逻辑运算符的区别,大大减少了代码的运行量,提高了代码的运算速度。
例如:
int x = 3; int y = 4; System.out.println((x++ > 4) & (y++ > 5)); // 两个表达都会运算 System.out.println(x); // 4 System.out.println(y); // 5 System.out.println((x++ > 4) && (y++ > 5)); // 左边已经可以确定结果为false,右边不参与运算 System.out.println(x); // 4 System.out.println(y); // 4
10.三元运算符
三元运算符的语法格式:关系表达式 ? 表达式1 : 表达式2;
解析:问号前面是的位置是判断的条件,判断结果为boolean型,为true时调⽤表达式1,为false时调⽤表达式2。其 逻辑为:如果条件表达式成⽴或者满⾜则执⾏表达式1,否则执⾏第⼆个。 例如:
int a1 = 100; int a2 = 110; int a3 = a1>a2? a1:a2;// 判断 a1>a2 是否为真,如果为真取a1的值,如果为假,取a2的值
3.分支结构之if语句 1.if语句格式: 执行流程: 1.首先计算关系表达式的值 2.如果关系表达式的值为 true 就执⾏语句体 3.如果关系表达式的值为 false 就不执⾏语句体 4.继续执⾏后⾯的语句内容
示例:
public class IfDemo {
public static void main(String[] args) {
System.out.println("开始");
// 如果年龄⼤于2岁, 就可以上学了
int age = 3;
if(age >=3){
System.out.println("可以上学了");
}
System.out.println("结束");
} }
2.if语句格式2
执行流程: 1.首先计算关系表达式的值 2.如果关系表达式的值为 true 就执⾏语句体 1 3.如果关系表达式的值为 false 就执⾏语句体 2 4.继续执⾏后⾯的语句内容 示例:
public class Demo2If {
public static void main(String[] args) {
// 程序判断⼀个数, 是奇数还是偶数
int num = 10;
if(num % 2 == 0){
System.out.println("偶数");
}else{
System.out.println("奇数");
}
} }
3.if语句格式3
执行流程: 1.首先计算关系表达式 1 的值 2.如果值为 true 就执⾏语句体 1 ;如果值为 false 就计算关系表达式 2 的值 3.如果值为 true 就执⾏语句体 2 ;如果值为 false 就计算关系表达式 3 的值
示例:
public class Demo3If {
public static void main(String[] args){
int score = 65;
if(score >= 90 && score <= 100){
System.out.println("优秀");
}else if (score >= 80 && score <= 89){
System.out.println("良好");
}else if (score >= 70 && score <= 79){
System.out.println("中等");
}else if (score >= 60 && score <= 69){
System.out.println("及格");
}else if (score >= 0 && score <= 59){
System.out.println("请努⼒加油");
}else{
System.out.println("成绩有误!");
}
} }