一 进制及其转换
进制介绍
二进制:是计算技术中广泛采用的一种数制,由德国数理哲学大师莱布尼茨于1679年发明。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”。
十进制:人类社会常用数值,基数为十,规则为逢十进一。
八进制和十六进制:为了更好的表示二进制(缩短二进制长度)
转换:
二进制转十进制采用“权相加法”。
十进制整数转换为二进制整数采用"除2取余,逆序排列"法。
计算机数据存储单位:
位 bit:
最小值 0
最大值 1
表示的数的范围 0-1(21-1)
字节 byte:8bit
最小值 00000000
最大值 11111111
表示的数的范围:
无符号数:0-255(28-1) 256个数
有符号数:-128(-27)--127(27-1) 还是256个数
字符 :16bit
最小值 0000 0000 0000 0000
最大值 1111 1111 1111 1111
表示的数的范围:
无符号数 0-65535(216-1) 65536个数
有符号数 -32768(-215)-----32767(215-1) 还是65536个数
KB、MB、GB、TB
1KB = 1024Byte ≈103Byte
1MB = 1024KB ≈ 106Byte
1GB = 1024MB ≈ 109Byte
1TB = 1024GB ≈ 1012Byte
二 八大基本数据类型
整数类型:
整型数据类型 | ||
类型 | 占用存储空间 | 表数范围 |
byte | 1字节 | -27 ~ 27-1(-128~127) |
short | 2字节 | -215 ~ 215-1 (-32768~32767) |
int | 4字节 | -231 ~ 231-1 (-2147483648~2147483647) 约21亿 |
long | 8字节 | -263 ~ 263-1 |
Java 语言整型常量的四种表示形式
|
浮点数据类型
浮点型数据类型 | ||
类型 | 占用存储空间 | 表数范围 |
float | 4字节 | -3.403E38~3.403E38 |
double | 8字节 | -1.798E308~1.798E308 |
float类型又被称作单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足需求。而double表示这种类型的数值精度约是float类型的两倍,又被称作双精度类型,绝大部分应用程序都采用double类型
float类型的数值有一个后缀F或者f ,没有后缀F/f的浮点数值默认为double类型。也可以在浮点数值后添加后缀D或者d, 以明确其为double类型。
float f = 3.14F;//float类型赋值时需要添加后缀F/f
double d1= 3.14;
double d2 = 3.14D;
注意:浮点类型float,double的数据不适合在不容许舍入误差的金融计算领域。如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类
字符数据类型
char 类型用来表示在Unicode编码表中的字符。Unicode编码被设计用来处理各种语言的文字,它占2个字节,可允许有65536个字符。
字符型演示
char eChar = 'a'; char cChar ='中'; |
char cChar ='β'; |
转义字符 | ||
转义符 | 含义 | Unicode值 |
\b | 退格(backspace) | \u0008 |
\n | 换行 | \u000a |
\r | 回车 | \u000d |
\t | 制表符(tab) | \u0009 |
\“ | 双引号 | \u0022 |
\‘ | 单引号 | \u0027 |
\\ | 反斜杠 | \u005c |
Char类型在内存中存储的其实就是该字符的Unicode编码,这是一个数字。其实是也可以这么赋值的。
char c2 = 'a'; char c2 = 97; |
注意事项 “a”是字符串String,不是字符char。String可以是0到多个字符组成的字符串。 |
布尔数据类型
boolean类型有两个常量值,true和false,不可以使用 0 或非 0 的整数替代 true 和 false ,这点和C语言不同。boolean 类型用来判断逻辑条件,一般用于程序流程控制。
三 运算符
算术运算符 | 二元运算符 | +,-,*,/,% |
一元运算符 | ++,-- | |
赋值运算符 | = | |
扩展运算符 | +=,-=,*=,/= | |
关系运算符 | >,<,>=,<=,==,!= instanceof | |
逻辑运算符 | &&,||,!,^ | |
条件运算符 | ? : | |
字符串连接符 | + |
相关概念辨析
- + 运算符 操作符 Operator
- 5+6 表达式 expression
- 5 6 操作数 Operand
- int m =5+6; 语句 Sentence
.算术运算符
算术运算符中+,-,*,/,%属于二元运算符,二元运算符指的是需要两个操作数才能完成运算的运算符。其中的%是取模运算符,就是我们常说的求余数操作。
二元运算符的运算规则:
整数运算:
- 如果两个操作数有一个为long, 则结果也为long。
- 没有long时,结果为int。即使操作数全为short,byte,结果也是int。
浮点运算:
- 如果两个操作数有一个为double,则结果为double。
- 只有两个操作数都是float,则结果才为float。
取模运算:
- 其操作数可以为浮点数,一般使用整数,结果是“余数”,“余数”符号和左边操作数相同,如:7%3=1,-7%3=-1,7%-3=1。
算术运算符中++(自增),--(自减)属于一元运算符,该类运算符只需要一个操作数。
i++;和++i;
如果是一条单独的语句,没有差别,都是自增1;
如果不是一条单独的语句(语句的一部分)有差别
int n = 6 + m++; 先运算符再+1
int n = 6 + ++m; 先+1再运算
先算乘除,再算加减。算术运算符的优先级别是不同的:
++ -- 大于 * / % 大于 + -
可以使用小括号改变运算顺序
赋值运算符
赋值运算符可以说是Java中使用频率最高的运算符了,也是运算级别最低的运算符。它的运算顺序是自右向左。
除了基本赋值运算符外,还可以和算术运算符结合,组成扩展赋值运算符。
赋值及其扩展运算符 | ||
运算符 | 用法举例 | 等效的表达式 |
+= | a += b | a = a+b |
-= | a -= b | a = a-b |
*= | a *= b | a = a*b |
/= | a /= b | a = a/b |
%= | a %= b | a = a%b |
关系运算符
关系运算符用来进行比较运算,如表所示。关系运算的结果是布尔值:true/false;经常用在选择结构if、循环结构for while的条件表达式中,进行条件判断。
关系运算符 | ||
运算符 | 含义 | 示例 |
== | 等于 | a==b |
!= | 不等于 | a!=b |
> | 大于 | a>b |
< | 小于 | a<b |
>= | 大于或等于 | a>=b |
<= | 小于或等于 | a<=b |
注意事项
|
逻辑运算符
逻辑运算符 | ||
运算符 | 说明 | |
逻辑与 | &( 与) | 两个操作数为true,结果才是true,否则是false |
逻辑或 | |(或) | 两个操作数有一个是true,结果就是true |
短路与 | &&( 与) | 只要有一个为false,则直接返回false |
短路或 | ||(或) | 只要有一个为true, 则直接返回true |
逻辑非 | !(非) | 取反:!false为true,!true为false |
逻辑异或 | ^(异或) | 相同为false,不同为true |
运算符的优先级别
优先级 | 运算符 | 类 | 结合性 |
1 | () | 括号运算符 | 由左至右 |
2 | !、+(正号)、-(负号) | 一元运算符 | 由左至右 |
2 | ~ | 位逻辑运算符 | 由右至左 |
2 | ++、-- | 递增与递减运算符 | 由右至左 |
3 | *、/、% | 算术运算符 | 由左至右 |
4 | +、- | 算术运算符 | 由左至右 |
5 | <<、>> | 位左移、右移运算符 | 由左至右 |
6 | >、>=、<、<= | 关系运算符 | 由左至右 |
7 | ==、!= | 关系运算符 | 由左至右 |
8 | & | 位运算符、逻辑运算符 | 由左至右 |
9 | ^ | 位运算符、逻辑运算符 | 由左至右 |
10 | | | 位运算符、逻辑运算符 | 由左至右 |
11 | && | 逻辑运算符 | 由左至右 |
12 | || | 逻辑运算符 | 由左至右 |
13 | ? : | 条件运算符 | 由右至左 |
14 | =、+=、-=、*=、/=、%= | 赋值运算符、扩展运算符 | 由右至左 |