今日内容:
数据类型的转换
运算符:
(1)算术运算符 (2)赋值运算符 (3)比较运算符 (4)逻辑运算符 (5)三元运算符
方法入门
一:数据类型
基本数据类型(4类8种)
整型 字节 取值范围(表数范围)
byte 1 -128 ~ 127 -2^7 ~ 2^7-1
short 2 -2^15 ~ 2^15-1
int 4 -2^31 ~ 2^31-1
long 8 -2^63 ~ 2^63-1
浮点型
float 4 大于long类型的数据
double 8
布尔型
boolean 1 true 和 false
字符型
char 2 0 ~ 65535
引用数据类型(以后学习)
二:数据类型的转换
温馨提示:这里的转换,指的是基本数据类型的转换
分类:
自动类型转换(隐式转换):不需要进行特殊处理,能够直接转换,类型的取值范围从小到大。
转换的小公式: byte、short 、char --> int --> long --> float --> double
注意:
(1)boolean类型的不能喝其他7种之间进行转换。
(2)byte、short不能直接转换成char,反之亦然。
强制类型转换(显示转换):需要进行特殊处理,不能直接转换,类型的取值范围从大到小
格式:
小的数据类型 变量名 = (小的数据类型)大类型的数据;
比如: int i = (int) 120L;
上午的重点
(1)基本数据类型的转换
(2)ASCII码表中,三个对应字符的十进制值
' 0' -> 48 'A' -> 65 'a' -> 97
二:运算符
算术运算符:
+ - * / % ++ --
/ :
(1)得到相除的商,整数相除只能得到整数,如果要得到小数,必须有小数参与运算
(2)负数参与运算,如果除数或者被除数其中有一个为负,得到的结果也为负,否则都是正
%:
(1)得到的相除的余数
(2)负数参与运算,得到的结果是正还是负,只和被除数是正还是负有关,和除数无关的
++:自增1
--:自减1
面试题:
++在前和在后,使用的时候的区别?
(1)单独使用,没有区别
++num;
num++;
(2)混合使用
++在前,变量自增1,然后将自增的结果再使用
++在后,先使用变量原来的值,然后再自增1
课堂练习:
1.
12345 / 100 等于多少? 123
12345 % 100 等于多少? 45
12345 / 100 % 100 等于多少? 23
2.
System.out.println("abc"+ "123") abc123
System.out.println(123 + "123") 123123
System.out.println(123 + "123"+ 123) 123123123
System.out.println(123 + 123 + "123") 246123
3.
int x = 'a'+ '0';
System.out.println(x);
int y = 'a'+ 'A';
System.out.println(y);
4.
/*
x = 12
y = 10
z = 12
*/
int x = 10;
int y = x++;
int z = ++x;
System.out.println(x);
System.out.println(y);
System.out.println(z);
5.
/*
x = 6
y = 4 + 6 + 60 = 70
*/
int x = 4;
int y = (x++)+(++x)+(x*10);
System.out.println(x);
System.out.println(y);
赋值运算符:
基本的赋值运算符:=
将运算符右边的值,赋给左边,让左边的变量来存储右边的值
复合的赋值运算符:+= -= *= /= %=
将运算符左边和右边进行运算,得到的结果赋值给左边
注:
复合的赋值运算符隐含了强制类型转换
short s = 5;
s += 1;// s = (short)(s + 1);
System.out.println(s);// 6
比较运算符
== != < <= > >=
得到的结果都是boolean类型的,不是true就是false
逻辑运算符
&&:遇false则false,只有两边都为true时结果才为true
||:遇true则true,只有两边都为false时结果才为false
!:非true则false,非false则true
&:遇false则false,只有两边都为true时结果才为true
|:遇true则true,只有两边都为false时结果才为false
^(异或):只有两边不同时结果才为true,否则都为false
面试题:
&和&&的区别?
&&有短路效果,当运算符左边已经能够确定最终的结果,右边不参与运算
三元运算符
格式:
数据类型 变量名 = 布尔表达式?表达式1:表达式2;
执行流程:
先执行布尔表达式,看结果是true还是false
如果结果是true,执行表达1
如果结果是false,执行表达2
注:布尔表达式的结果一定是true或者false,不能是其他结果
// 三元运算符
int i = 10;
int j = 20;
int k = 15;
// 先求前两者之间的较大值,而且要记录较大值
int temp = i > j ? i : j;
// 再将较大值和第三个数进行比较
int result = temp > k ? temp : k;
System.out.println(i+"、"+j+"和"+k+"三者之间的最大值为:"+result);
方法入门
什么是方法
将特定功能的代码抽取出来,放到一个大括号中{},给它取上名字
方法定义的格式
public static void 方法名称(){
方法体;
}
方法的调用格式
方法名称();
jshell工具的使用( JDK 9.0或以上)
开启工具
在命令窗口输入jshell,然后回车开启
使用工具
退出工具
/exit
编译器的两点优化
1、byte/short/char会有一个默认的强制类型转换
当赋值运算符右边的值没有超出左边的类型的取值范围,会有一个默认的强制类型转换
当赋值运算符右边的值超出了左边的类型的取值范围,直接报错
目录
(1)算术运算符 (2)赋值运算符 (3)比较运算符 (4)逻辑运算符 (5)三元运算符
自动类型转换(隐式转换):不需要进行特殊处理,能够直接转换,类型的取值范围从小到大。
强制类型转换(显示转换):需要进行特殊处理,不能直接转换,类型的取值范围从大到小
1、byte/short/char会有一个默认的强制类型转换
2、常量优化机制
编译器在编译时期,如果看到两个常量参与运算,会将常量进行一些优化
比如:
short result2 = 20 + 30;
就相当于
short result2 = 50;