分类:有符号型(有负数,0,正数)和无符号型(只有0和正数)
主要研究有符号型
两类:
1、简单数据类型:任何数据类型最高位都是正负标志
》数值型
>>byte 1个字节 [-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个字节 3.4028235E38 float类型表示的范围比long类型表示的范围要大的多,因为浮点型采用的是科学计数法
>>double 8个字节 1.7976931348623157E308
注意:所有的小数默认的都是double类型的,要表示float型,在数的后面加f
》布尔型
>>boolean 一个字节 true/false
注意:java中Boolean值只有两个值,跟c不同,c中0可表示false,非零表示true
》字符型
>>char 1个字节 对应的字符集是ASCII--世界通用标准 大小写之间的差值为32
常用的字符集:GBK/GB2312 中国 ISO8859-1 欧洲的 utf-8 通用标准 Unicode 内部标准
对于中文: 2个字节 不支持中文-对应一个字节 三个字节 2个字节
编码:我们将字符(字符串)通过字符集转成对应的二进制形式
解码:反之解码
乱码:编码与解码过程中使用的字符集不一致,造成了错误。
注意:
1>数据类型之间的转换
数据类型的等级高低(根据数据的范围划分):byte,char-short-int-long-float-double
注:自动类型转换:从低等级到高等级,不会造成数据的损失,但可能浪费一些内存
强制类型转换:从高等级到低等级,可能会造成数据的损失
2>
2、引用数据类型
1、初始化:定义变量的同时完成赋值
2、赋值:单独给变量赋值
+:1、运算 2、连接
运算符:
a:从功能分类
1、算术运算符 + - * / % ++ --
整数相除得到的一定是整数 除法与普通运算规则一致
++:当++在变量的后面时,变量会使用当前的值先参与运算,之后再自身加一
当++在变量的前面时,变量会首先自身加一,之后使用当前的值在参与运算
实例:先考虑优先级,优先级相同再考虑优先级低的,使用排除法将优先级高的找出来,再一步步运算
算n,m,u,o的值
int n=2,m=3,u=1,o=0;
o=n++ - --m +(u++ -n--)
1、先考虑=,使用排除法,根据右结合性,先算=的右边
2、再考虑()外的-,+,根据左结合性
3、算n++ n=3 n++=2
4、算--m m=2 --m=2
5、算() (1-3) u=2 n=2
6、算2中的-+ 2-2+(1-3)=-2
7、算= 将值付给o=-2
2、赋值运算符 = += -= *= /= %=
3、关系运算符 > < <= >= != ==
注意:返回值只有两个true /false
4、逻辑运算符 &&(与) ||(或) !(非)
特点:运算的结果是true/false 参与运算的元素也必须是true/false
&&(与):全真则真,一假则假
||(或):全假则假,一真则真
!(非):假则真,真则假
短路与:当多个&&连接的时候,从左往右运算,只要得到一个false,就会停止运算,整个的结果就是false
短路或:当有多个||连接的时候,从左往右运算,只要得到一个true,就会停止运算,整个结果是true
5、位运算符 直接操作的是位 :运算时要把参与运算的数字转为二进制,再两两比较
(详细内容请参考:https://jingyan.baidu.com/article/1612d5008ff5b7e20f1eee4c.html)
&(按位与):全1则1,有0则0
|(按位或):全0则0,有1则1
^(按位异或):参与运算的当前位相同则是0,不同则是1
应用:交换两个数的值
~(按位取反):1就取0,0就取1
为什么要有位运算符:速度快效率高,因为直接操作的是二进制
6、移位运算符 >>1 右移一位:代表除以二,不一定得到,因为当前的数不一定被整除 <<1 左移一位:代表乘以二S ,不一定得到,当前的数有可能溢出 >>>无符号右移 <<<无符号左移
System.out.println(5>>1);->2
移位运算符只能用于整数运算
表达式:由变量和常量以及运算符组成的式子
语句:表达式+分号 注意:如果只有一个; 也叫语句---空语句
b:按运算符操作的元素个数分类
一元(元素)运算符:++ -- ~ ! -(负号) +(正号)
二元运算符 :+ - * /
三元运算符 :三目运算符:? :---表达式一<表达式二? 变量一:变量二