day03 课堂笔记
1、数据类型
2、总结第二章到目前为止所学内容:
* 标识符
* 关键字
* 字面值
* 变量
成员变量如果没有赋值,系统会自动赋值,而局部变量不手动赋值,则会编译不通过。
* 数据类型
字符编码:在计算机中起到数据转换作用
‘a’—–>97
‘A’—–>65
‘0’—–>45
记住以上三个
【简体中文编码方式】
GB2312 < GBK < GB18030包含字符最多
Java语言采用最多的编码方式为Unicode
所以标识符可以用中文表示
【八种基本数据类型的取值范围】
类型 取值范围 默认值
byte [-128,127] 0
short [-35768,32767] 0
int 0
long 0
float 0.0
double 0.0
boolean [true,false] false(true是1,false是0)
char [0,65535] \u0000
short和char能表示的种类数目是相同的,只不过char可以表示更大的正整数。
八种数据类型的默认值都是向0看齐
char类型占2个字节,而一个中文字符也占2个字节,故可以有 char c=’字’;
【转义字符】
\n 换行符
\t 制表符Tab
\\ 普通的斜杠
\’ 普通的单引号
\” 普通的双引号
转义字符出现在特殊字符之前,会将特殊字符转换为普通字符。
System.out.println()表示输出后换行,【注意不是换行后输出】
System.out.print()表示输出后不换行
public class A{
public void main(String[] args){
char c=’\\’; //输出 \ 字符
System.out.println(“c”);
char c=’\”; //输出 ‘ 字符
System.out.println(“c”);
}
}
JDK中自带的native2aascii.exe命令,可以将文字转换成Unicode编码形式
使用方法:
直接在DOS窗口输入native2ascii回车运行,输入汉字回车转换出Unicode码
例如,真不错—->\u771f \u4e0d \u9519
故,char型的变量默认值为\u0000,注意\u
【整数型字面值默认是int型的十进制数】
若以0开头,则是八进制
若以0x开头,则是十六进制
注意
long a=123; ///仍然是将占4个字节的int型123转换为占8字节的long型123
long a=123456789 ; //123456789超出int型的范围,编译出错,【面试题问你能不能编译通过】
long a=123456789L ; //加个大写L,表示为long型数值,编译成功
【强制类型转换】
long a=100;
int b=a; //大容量转小容量,编译不通过
//下面进行强制类型转换,编译通过,但可能损失精度
//尤其正负,在砍掉左边四个字节后,余下的“最高位”可能为1,存在正数变负数的可能
int b=(int)a;
【特例】下面这个可以编译通过
byte a=123; //表面上是大容量赋给小容量,但可以编译通过
//java规定对byte型变量赋值,赋值的int型量没超过byte的取值范围,则可以编译通过,
这对于char,short型的变量同样适用。
【JavaSE的类库的源码所在位置】
SE类库字节码:D:\software\Java\src.zip
SE类库源码:D:\software\Java\jre\lib\rt.jar
{string[] args}中的String使用的就是String.class字节码文件、
【浮点型字面值默认为double型】
double a=3.0;
如果想把浮点型字面值当做float型,则需在后面加F/f;
float a=5.1; //编译出错
解决方法一:强制类型转换
float a=(float)5.1;
解决方法二:没有强制转换
float a=5.1f;
double和float型在计算机中存储的都是近似值
因为有些无限不循环数无限长,但存储空间有限
【布尔数据类型】
只有true和false两种类型,占一个字节
经常使用在逻辑判断和条件控制语句中
boolean a=1; //编译错误
boolean a=true; //编译成功,布尔型变量只能被赋值true或false,而不能是0,1
【基本数据类型之间的相互转换】【面试】
1、除布尔类型外均可互相转换
2、小容量向大容量转换,称为自动类型转换,容量从小到大排序:
byte < short < int < long < float < double < char
任何浮点型数据不管多少字节,都比整数型容量大
char和short可表示的种类数量相同,但是char可以取更大的正整数
3、大容量转化为小容量需要进行强制类型转换
4、当字面值没有超出byte、short、char的取值范围,可以直接赋值
5、short、byte、char混合运算时,会自动转化为int型
6、多种数据类型混合运算是,先转换成容量最大的那种类型再做运算
3、运算符
【算术运算符】
+
–
*
/
%(求余数,取模)
++(自增一)
–(自减一)
运算符有优先级,可以通过加括号,来提高,不需专门记忆
【关系运算符】
>
<
>=
<=
==
!=
上述关系运算符的运算结果一定是布尔类型true/false
【注意“=”是赋值运算符】
【逻辑运算符】
逻辑运算符要求两边的算子都是布尔类型
& 逻辑与
| 逻辑或
! 逻辑非(单目运算符)
^ 逻辑异或
&& 短路与(与上面的逻辑与运算结果相同,但短路与存在短路现象)
|| 短路或(与上面的逻辑或运算结果相同,但短路或存在短路现象)
【短路现象】当执行逻辑运算(5<2 & 5>2)时,先运算左边结果是false,在运算右边结果是true,整体结果为false
而(5<2 && 5>2)当左边运算结果为false时,整个运算结果已确定为false,右边不再计算,(较聪明)执行效率高
故短路与更常用,但特殊情况会使用逻辑与,比如,业务要求必须执行的时候
【总结】短路或 || :当左边结果为true时,右边不再计算
短路与&&:当左边结果为false时,右边不再计算
* 赋值类运算符
* 字符串连接运算符
* 三元运算符
—–部分摘自B站动力节点教育集团