第一章 数据类型
基本数据类型
数值型:
整数类型 <byte , short , int , long>
浮点类型 <float , double>
整数数据类型 | 占用储存空间(1字节=8bit) | 表数范围 |
---|
byte | 1字节 | -2^7 ~ 2^7-1 (-128~127) |
short | 2字节 | -2^15 ~ 2^15-1 (-32768 ~ 32767) |
int | 4字节 | -2^31 ~ 2^31-1 (-2147483648~2147483647)约21亿 |
long | 8字节 | -2^63 ~ 2^63-1 |
整数型常量的表示形式
- 十进制整数, 如: 99, -500, 0
- 八进制整数, 要求以0开头, 如: 015
- 十六进制整数, 要求以0x或0X开头, 如: 0x15
- 二进制整数, 要求以0b开头, 如: 0b01110011
浮点型数据类型 | 占用储存空间 | 表数范围 |
---|
float(单精度类型,可以精确到7位有效数字) | 4字节 | -3.403E38 ~ 3.403E38 |
double(双精度类型,精度约是float的两倍) | 8字节 | -1.798E308 ~ 1.798E308 |
浮点型常量的表示形式
-
十进制数, 例如: 3.14, 314.0, 0.314
-
科学计数法, 例如(e2=10^2, e-2=10^-2): 314E2 314e2 314e-2
-
> java
中java.math
包下面的两个有用的类: BigInteger
和BigDecimal
, 这两个类可以处理任意长度的数值
> BigInteger
实现了任意精度的整数运算, BigDecimal
实现了任意精度的浮点运算
后续展开
字符型: <char>
布尔型: <boolean>
引用数据类型(随着深入会展开)
类 class
接口 interface
数组 []
整数默认 : int
小数默认: double
数据类型的自动提升
- 所有的Byte型,short型和char型的值将被提升到int型
- 如果一个操作数是long型,计算结果就是long型
- 如果一个操作数是float型,计算结果就是float型
- 如果一个操作数是double型,计算结果就是double型
转义字符
\b
(退格);
\n
(换行);
\r
(回车);
\t
(制表符);
"
(双引号);
'
(单引号);
\\
(反斜杠);
第二章 运算符
算术运算符
运算符 | 含义 | 例子 | 结果 |
---|
+ | 加法 | 9+4 | 13 |
- | 减法 | 9-4 | 5 |
* | 乘法 | 9*4 | 36 |
/ | 除法(当两边为整数时,取整数部分,舍余数。当其中一边为浮点型时,按正常规则相除) | 9/4 | 2 |
% | 取余(0不能做除数,否则报错) | 9%4 | 1 |
++ | 自增(++在后,先赋值再运算) | a=3 ; c=a++ | 先赋值运算c=a=3 ; 再算术运算a=a+1=4 |
++ | 自增(++在前,先运算在赋值) | a=3 ; c=++a | 先算术运算a=a+1=4 ; 再赋值运算c=a=4 |
-- | 自减(--在后,先赋值再运算) | a=3 ; c=a-- | 先赋值运算c=a=3 ; 再算术运算a=a-1=2 |
-- | 自减(--在前,先运算在赋值) | a=3 ; c=--a | 先算术运算a=a-1=2 ; 再赋值运算c=a=2 |
赋值运算符
运算符 | 含义 | 例子 | 结果 |
---|
= | 将运算符右边的值赋给左边的变量<br/>(左边只允许是变量,不能是表达式或其他形式) | int a ; a=4 | 将4赋值给变量a ,a的值由未知变为4, a=4 |
+= | 将该运算符左边的数值加上右边的数值, 其结果赋值给左边变量本身 | int a=4 ; a+=4 | a=a+4=4+4=8 |
-= | 将该运算符左边的数值减去右边的数值, 其结果赋值给左边变量本身 | int a=4 ; a-=4 | a=a-4=4-4=0 |
*= | 将该运算符左边的数值乘以右边的数值, 其结果赋值给左边变量本身 | int a=4 ; a*=4 | a=a*4=4*4=16 |
/= | 将该运算符左边的数值整除右边的数值, 其结果赋值给左边变量本身 | int a=4 ; a/=4 | a=a/4=4/4=1 |
%= | 将该运算符左边的数值除以右边的数值后取余,其结果赋值给左边变量本身 | int a=4 ; a%=4 | a=a%4=4%4=0 |
比较(关系)运算符
- (运算结果都是
boolean
型 [ true
(真) , false
(假) ])
运算符 | 含义 | 例子 | 结果 |
---|
> | 大于 | 4>6 | false |
< | 小于 | 4<6 | true |
\>= | 大于或等于 | 4>6 | false |
<= | 小于或等于 | 4<=6 | true |
== | 两边是否相等(比较对象地址) | String a="abc";<br/>String b="abc";<br/>System.out.println(a==b);<br/>System.out.println(a.equals(b)); | a==b //内存空间相同 true<br/>a.equals(b) //值相同 true |
equals | 是否相等(比较对象内容) | String a="abc";<br/>String b=new String("abc");<br/>System.out.println(a==b);<br/>System.out.println(a.equals(b)); | a==b //内存空间不同 false<br/>a.equals(b) //值相同 true |
!= | 两边是否不等 | 4!=6 | true |
逻辑运算符
- 特点是操作
boolean
值 - 运算符左右两边必须是
boolean
值 (将两边的结果进行连接,判断真或假 true || false
) - 其中
&
|
^
这三个也是位运算符,能操作数字 &
|
^
这三个运算符 当两侧操作符是boolean
时作为逻辑运算符,两侧操作符是整数类型,则作为位运算符或,或-短路
,论坛MD会转义,用文字代替
运算符 | 含义 | 例子 | 结果 |
---|
& | and(与) <br/><只有两边结果都为true,结果才为true ; 只要有一边结果为false,结果为false> | false&true<br/>true&true | false<br/>true |
或 | or(或)<br/><只有两边结果都为false,结果才为false; 只要有一边结果为true,结果为true> | false或true<br/>false或false | true<br/>false |
^ | xor(异或)<br/><两边结果为true,结果为false ; 其余的情况与 (或) 相同 > | false^true<br/>false^false<br/>true^true | true<br/>false<br/>false |
! | not(非)<br/>输出相反的情况 | !true | false |
&& | and(短路)<br/>运算结果与&一致,运算方法不同; <br/>左边的一旦为false,右边的就不再参与计算,直接输出结果为false | false&&true<br/>true&&true | false<br/>true |
或-短路 | or(短路)<br/>运算结果与(或)一致,运算方法不同; <br/>左边的一旦为true,右边的就不再计算,直接输出结果为true | false 或-短路 true<br/>false 或-短路 false | true<br/>false |
位运算符(非重点, 但是一些加密算法经常用到)
- 对二进制直接进行运算
&
|
^
这三个运算符 当两侧操作符是boolean
时作为逻辑运算符,两侧操作符是整数类型,则作为位运算符
运算符 | 含义 | 运算细节 | 例子 | 结果 |
---|
<< | 左移(左移几位就是该数据乘以2的几次方) | 空位补0 ,被移除的高位丢弃 | 3<<2=12 | 3*2*2=12 |
>> | 右移(右移几位就是该数据除以2的几次方) | 被移除的高位是0就补0 ,是1就补1 | 6>>2=1 | 6/2(2)=1 |
>>> | 无符号右移 | 被移除的高位无论是0还是1 ,空位都补0 | 3>>>1 | 3/2=1 |
& | 与 | 只有1&1时是1 ; 否则是0 | 6&3 | 2 |
或 | 或 | 只有0或0时是0 ; 否则是1 | 6或3 | 7 |
^ | 异或 | (相同二进制位进行^运算,结果是0 {1^1=0 ;0^0=0} 不同 , 结果是1 .{1^0=1 ; 0^1=1}) | 6^3 | 5 |
~ | 反码 | 对二进位按位求反(1变0 ; 0变1) | ~6 | -7 |
三元运算符
运算符 | 含义 | 例子 | 结果 |
---|
? : <br/>[条件语句]? [表达式1]:[表达式2] | 如果?左边的条件语句为真 ,执行表达式1<br/>如果?左边的条件语句为假 ,执行表达式2 | int a=1,b=2,c;<br/>c=a>b?100:200; | c=200 |
运算符之间的优先级
优先级 | 运算符 | 类 |
---|
1 | () | 括号运算符 |
2 | ! , +(正号) , -(负号) | 一元运算符 |
2 | ~ | 位逻辑运算符 |
2 | ++ , -- | 递增与递减运算符 |
3 | * , / , % | 算术运算符 |
4 | + , - | 算术运算符 |
5 | << , >> | 位左移,右移运算符 |
6 | > , >= , < , <= | 关系运算符 |
7 | == , != | 关系运算符 |
8 | & | 位运算符,逻辑运算符 |
9 | ^ | 位运算符,逻辑运算符 |
10 | 或 | 位运算符,逻辑运算符 |
11 | && | 逻辑运算符 |
12 | 或-短路 | 逻辑运算符 |
13 | ?: | 条件运算符 |
14 | = ,+= , -= , *= , /= , %= | 赋值运算符,扩展运算符 |
未完待续,持续更新(目前复习到了线程,刚看完异常)....
[/md]