day02 【数据类型转换、运算符、方法入门】
一. 数据类型转换(理解)
1. 隐式类型转换(自动类型转换)
大的: 取值范围大的
小的: 取值范围小的
(1) 将小的数据赋值给大的类型
// 定义了一个byte类型的b, 值为10
byte b = 10;
// 将byte类型的b赋值给int类型的a
// 将b转换成int类型
int a = b;
(2) 将大的数据赋值给小的类型
- 常量优化机制: 如果等号右边是**常量, 常量在左边数据类型的取值范围内**, 就会进行常量优化, 将常量进行了数据类型转换.
// 将int类型的10, 赋值byte类型的b
byte b = 10;
short s = 20;
int i = 10L; // 报错, 有损失
(3) 小的类型和大的类型进行运算的时候会先将小的转换成大的然后再参与运算
int i = 10;
byte b = 20;
int sum = i + b; // i +
System.out.println(sum);
-
转换的流程:
(byte, short, char) >> int >> long >> float >> double
-
特殊情况
[外链图片转存失败(img-gm7QAMBU-1564289604874)(assets/1562982732121.png)]
char: 字符,'a'
每一个字符, 都有一个对应的十进制数字
字符 | 对应的十进制 |
---|---|
'a' | 97 |
'A' | 65 |
'0' | 48 |
2. 显式类型转换(强制类型转换)
格式
// (强转到的数据类型) 数据
注意
- 如果数据超出了强转到类型的取值范围, 得到的结果是有问题.
130强转成byte变成-126
int i = 130;
byte b = (byte) i; // -126
/*
0000 0000 0000 0000 0000 0000 1000 0010 : int类型的130
1000 0010 : byte类型的130 补码
1000 0001 : 反码
1111 1110 : 原码
-126
*/
二. 运算符(重点)
1. 算数运算符
- +, -, *, /, %, ++, –
(1) +在字符串中的使用
-
字符串通过加号(+)和任意类型连接, 将它们拼接起来, 并产生一个新的字符串
// 应用场景 int a = 10; int b = 20; int c = 30; // 很多语句, 会操作这个3个变量 // 通过打印语句, 看到这3个变量的值 System.out.println("a = " + a); System.out.println("b = " + b); System.out.println("c = " + c); int age1 = 18; int age2 = 20; // 张三的年龄是18, 李四的年龄是20 System.out.println("张三的年龄是" + age1 + ", 李四的年龄是" + age2);
(2) /和%在对整数进行运算
-
%: 取模, 模于. 取余
-
/ : 整数和整数相除, 得到的是除法运算的商
-
%: 获取除法运算的余数
(3) ++和–
- ++ : 自增
- – : 自减
单独使用
- a++
- ++a
int a = 10;
a++; // 等效于: a = a + 1;
++a; // 等效于: a = a + 1;
配合使用(Day11)
- a++
- ++a
2. 赋值运算符
- =, +=, -=, *=, /=, %=
=: 将等号右边赋值给等号左边
+=, 加等
int a = 100;
a += 10; // 等效于: a = a + 10;
3. 比较运算符
>, <, >=, <=, ==, !=
特点
- 功过比较运算符, 运算出来的结果一定是boolean类型
4. 逻辑运算符
- &&(逻辑与, 和, 并且), ||(逻辑或), !(非)
&&与,||或
- 符号两边的内容都必须是boolean类型, 结果也是boolean类型
! 非
- 取反, 非true则false, 非false则true
运算规则
- &&(与) : 遇false则false
- ||(或): 遇true则true
短路与和短路或
- 短路与(&&): 如果符号左边为false, 右边不执行.
- 短路或(||): 如果符号左边为true, 右边不执行.
5. 三元运算符
格式
判断条件: 结果为boolean类型的一段代码
数据类型 变量名 = 判断条件 ? 值1 : 值2;
执行流程
- 先看判断条件的结果,
- 如果为true, 将值1赋值给前面的变量
- 如果为false, 将值2赋值给前面的变量
案例
int a = 30;
int b = 20;
// 求a和b中的最大值
int max = a > b ? a : b;
System.out.println(max);
三. 扩展知识点(了解)
1. jdk9的新特性JShell
2. 面试题1
short s = 10;
// 问下面的两条语句, 在只执行其中一条的情况下, 哪个有问题, 哪个没问题, 为什么?
s += 10; // 一
// short类型的s和int类型的10相加, 结果是int类型
// 将int类型的内容, 赋值给short类型的s, 有损失
s = s + 10; // 二
3. 面试题2
short s1 = 10;
short s2 = 20;
// short和short做运算, 会转换成int类型
short sum1 = s1 + s2; // 变量 , 报错, 有损失
// 常量优化机制
short sum2 = 10 + 20; // 常量 , 不会报错, 结果是30
四. 方法入门(理解)
- 方法: 其实就是一种功能
1. 格式
修饰符 返回值类型 方法名(参数列表) {
方法体;
return;
}
固定的格式(无参无返回):
修饰符: public static
返回值类型: void
方法名: 合法的标识符
(参数列表): ()
return; : 不写
// 固定格式, 需要记忆
public static void 方法名() {
方法体;
}
方法的注意事项
- 方法的位置在类中, 方法外
- 方法不能嵌套定义
- 方法不调用不执行(主方法除外)
方法的调用格式
方法名();
2. 好处
- 不使用方法的缺点: 代码冗余
好处
- 解决了代码的冗余
- 提高了代码的复用性