目录
1、数据类型
2、字符编码
3、转义字符
4、补码
5、总结
6、运算符
1、数据类型
数据类型不同,占用空间大小不同
第一种:基本数据类型
第一类:整数型
byte,short,int,long
第二类:浮点型
float,double
第三类:布尔型
boolean
第四类:字符型
char
第二种:引用数据类型
字符串型String
java中除了基本数据类型之外,剩下的都是引用数据类型
1bit就是一个1或0(计算机中的二进制)
1字节 = 8bit(8比特)--> 1byte = 8bit
1KB=1024byte
1MB=1024KB
1GB=1024MB
1TB=1024GB
byte b = 2 在计算机中是这样表示的:00000010
short s = 2 在计算机中是这样表示的:00000000 00000010
int i = 2 在计算机中是这样表示的:00000000 00000000 00000000 00000010
注意:任意一个浮点型都比整数型占用空间大
2、字符编码
字符编码是人为的定义的一套转换表,在字符编码中规定了一系列的文字对应的二进制。字符编码涉及到编码和解码两个过程,编码和解码必须遵循同一套字符编码方式,否则会出现字符乱码
英文对应的字符编码:ASCII(美国信息交换标准代码)。采用1byte进行存储
'a' --->97
'b' ---> 98
'c' ---> 99...
'A' ---> 65
'B' ---> 66...
'0' ---> 48 (这个'0'不是那个0,是文字'0')
'1' ---> 49
latin-1编码方式,是向上兼容ASCII码的编码方式
中文的编码方式:GB2312
繁体中文:big5(台湾使用的是大五码)
支持全球所有文字编码:unicode编码
具体的实现包括:UTF-8 UTF-16 UTF-32....
3、转义字符
char c1 = 't'; //相当于键盘上的tab键
char c2 = 'n'; // 换行符
System.out.println(); 换行
System.out.print(); 不换行
System.out.println(''');// ' 表示一个单引号字符('联合起来表示一个普通的 ')
System.out.println('');//错误: 未结束的字符文字
System.out.println('\');// 在java中两个反斜杠代表了一个“普通的反斜杠字符”
char x = 'u4e2d';// 反斜杠u表示后面的是一个字符的unicode编码
unicode编码是十六进制的
另:
十六进制,满16进1位
0
1 2 3 4 5 6 7 8 9 a b c d e f 10
11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20
...
4、补码
char c1 = 't'; //相当于键盘上的tab键
char c2 = 'n'; // 换行符
System.out.println(); 换行
System.out.print(); 不换行
System.out.println(''');// ' 表示一个单引号字符('联合起来表示一个普通的 ')
System.out.println('');//错误: 未结束的字符文字
System.out.println('\');// 在java中两个反斜杠代表了一个“普通的反斜杠字符”
char x = 'u4e2d';// 反斜杠u表示后面的是一个字符的unicode编码
unicode编码是十六进制的
另:
十六进制,满16进1位
0
1 2 3 4 5 6 7 8 9 a b c d e f 10
11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20
...
计算机在任何情况下都只能识别二进制
计算机在底层存储数据的时候,一律存储的是“二进制的补码形式
计算机采用补码形式存储数据的原因是:补码形式效率最高
实际上是这样的,二进制有:原码 反码 补码
1、对于一个正数来说:二进制原码、反码、补码是同一个,完全相同
int i = 1
对应的二进制原码:00000000 00000000 00000000 00000001
对应的二进制反码:00000000 00000000 00000000 00000001
对应的二进制补码:00000000 00000000 00000000 00000001
2、对于一个负数来说:二进制原码、反码、补码
byte i = -1
对应的二进制原码:10000001
对应的二进制反码(符号位不变,其它位取反):11111110
对应的二进制补码(反码+1):11111111
例如采用逆推导的方式
10010110 ---> 二进制补码形式
10010101 ---> 二进制反码形式
11101010 ---> 二进制原码形式
5、总结
在任何情况下,整数型的“字面量/数据”默认被当做int类型处理
如果希望该“整数型字面量”被当做long类型来处理,需要在“字面量”后面添加L或l
小容量可以自动转换成大容量,这种操作被称为:自动类型转换
大容量不能直接赋值给小容量,需要使用强制类型转换符进行强转
注意:加强制类型转换符之后,虽然编译通过了,但是运行的时候可能会损失精度
当一个整数赋值给char类型变量的时候,会自动转换成char字符型,最终的结果是一个字符
当一个整数没有超出byte short char的取值范围的时候,这个整数可以直接赋值给byte short char类型的变量。
一、八种基本数据类型中,除 boolean 类型不能转换,剩下七种类型之间都可以进行转换
二、如果整数型字面量没有超出 byte,short,char 的取值范围,可以直接将其赋值给byte,short,char 类型的变量
三、小容量向大容量转换称为自动类型转换,容量从小到大的排序为:byte < short(char) < int < long < float < double,其中 short和 char都占用两个字节,但是char 可以表示更大的正整数
四、大容量转换成小容量,称为强制类型转换,编写时必须添加“强制类型转换符”,但运行时可能出现精度损失,谨慎使用
五、byte,short,char 类型混合运算时,先各自转换成 int 类型再做运算
六、多种数据类型混合运算,各自先转换成容量最大的那一种再做运算
6、运算符
算术运算符:+ - * / % ++ --
关系运算符:> >= < <= == !=
逻辑运算符:& | ! && ||
赋值运算符:= += -= *= /= %=
三目运算符:布尔表达式 ? 表达式1 : 表达式2
字符串连接运算符:+
++出现在变量前和变量后有什么区别?
++出现在变量后:当++出现在变量后,会先做赋值运算,再自加1
++出现在变量前:当++出现在变量前,会先进行自加1的运算,然后再赋值
所有的关系运算符的运算结果都是布尔类型,不是true就是false,不可能是其他值
= : 赋值运算符
== :关系运算符,判断是否相等
注意:关系运算符中如果有两个符号的话,两个符号之间不能有空格
>= 这是对的, > = 这是不对的,== 这是对的,= = 这是不对的
逻辑运算符
& 逻辑与(可以翻译成并且)
| 逻辑或(可以翻译成或者)
! 逻辑非(取反)
&& 短路与
|| 短路或
赋值运算符
赋值运算符“=”右边优先级比较高,先执行右边的表达式,然后将表达式执行结束的结果放到左边的“盒子”当中
例如:+= 运算符作为代表
k += 20----->k=k+20
例如:byte x;x += 1 等同于:x = (byte)(x + 1)
条件运算符:(三目运算符)
语法格式:布尔表达式 ? 表达式1 : 表达式2
执行原理:
布尔表达式的结果为true时,表达式1的执行结果作为整个表达式的结果
布尔表达式的结果为false时,表达式2的执行结果作为整个表达式的结果
+ 运算符
+ 运算符在java语言中有两个作用:
作用1:求和(当 + 运算符两边都是数字类型的时候,求和)
作用2:字符串拼接(当 + 运算符两边的“任意一边”是字符串类型,那么这个+会进行字符串拼接操作)
注意:字符串拼接完之后的结果还是一个字符串
算术运算符:+ - * / % ++ --
关系运算符:> >= < <= == !=
逻辑运算符:& | ! && ||
赋值运算符:= += -= *= /= %=
三目运算符:布尔表达式 ? 表达式1 : 表达式2
字符串连接运算符:+
++出现在变量前和变量后有什么区别?
++出现在变量后:当++出现在变量后,会先做赋值运算,再自加1
++出现在变量前:当++出现在变量前,会先进行自加1的运算,然后再赋值
所有的关系运算符的运算结果都是布尔类型,不是true就是false,不可能是其他值
= : 赋值运算符
== :关系运算符,判断是否相等
注意:关系运算符中如果有两个符号的话,两个符号之间不能有空格
>= 这是对的, > = 这是不对的,== 这是对的,= = 这是不对的
逻辑运算符
& 逻辑与(可以翻译成并且)
| 逻辑或(可以翻译成或者)
! 逻辑非(取反)
&& 短路与
|| 短路或
赋值运算符
赋值运算符“=”右边优先级比较高,先执行右边的表达式,然后将表达式执行结束的结果放到左边的“盒子”当中
例如:+= 运算符作为代表
k += 20----->k=k+20
例如:byte x;x += 1 等同于:x = (byte)(x + 1)
条件运算符:(三目运算符)
语法格式:布尔表达式 ? 表达式1 : 表达式2
执行原理:
布尔表达式的结果为true时,表达式1的执行结果作为整个表达式的结果
布尔表达式的结果为false时,表达式2的执行结果作为整个表达式的结果
+ 运算符
+ 运算符在java语言中有两个作用:
作用1:求和(当 + 运算符两边都是数字类型的时候,求和)
作用2:字符串拼接(当 + 运算符两边的“任意一边”是字符串类型,那么这个+会进行字符串拼接操作)
注意:字符串拼接完之后的结果还是一个字符串



