2.4.3 JAVA关键字
abstract | default | if | private | this |
---|---|---|---|---|
boolean | do | implements | protected | throw |
break | double | import | public | throws |
byte | else | instanceof | return | case |
extend | int | short | try | catch |
final | interface | static | void | char |
finally | long | class | float | native |
super | while | for | new | switch |
null | continue | package | synchronized | transient |
strictfp | volatile | const | goto |
2.5 进制转换
2.5.1 二进制与十进制的转换
正整数转二进制
要点:除二取余,倒序排列
解释:将一个十进制数除以二,得到的商再除以二,以此类推直到商等于1或0为止,倒取 除得的余数,即为二进制的结果。
例如:把52换算成二进制数,计算结果如图:
52除以2得到的余数依次为:0、0、1、0、1、1,倒序排列,所以52对应的二进制数为:110100。
由于计算机内部表示数的字节单位都是定长的,都是2的幂次方展开,如8位,16位,或32位…。
于是,一个二进制数用计算机表示时,位数不足2的幂次方时,高位上要补足若干个0。
即:
(52)10=(00110100)2
负整数转二进制
要点:取反加一
解释:将该负数整数对应的正整数先转换成二进制,然后对其取反,再对取反后的结果加1即可
例如:把-52换算成二进制:
- 先取得52的二进制:00110100
- 对所得到的二进制数取反:11001011
- 将取反后的数值 加1 即可:11001100
即:
(−52)10=(11001100)2
二进制转十进制
解释:二进制用数值乘以2的幂次方依次相加
将二进制110换算成十进制:
- 首位补齐位数:00000110
- 首位为0,则为整数,那么将二进制中的三位数分别于下边对应的值相乘后再相加得到的值为换算为十进制的结果:
如果二进制补足位数之后首位为1,那么其对应的十进制为负数,那么需要先对二进制 减1,再取反然后再换算。
- 比如:11111010,首位为1,那么需要先减1,为:11111001,
- 再取反,即:-00000110;那么00000110 对应的十进制为6,
- 因此 11111010 对应的十进制为-6;即:
2.6 标识符的命名规范
2.6.1 JAVA中的数据类型
包名:多单词组成时所有字母都小写。
xxx.yyy.zzz
类名:多单词组成时,所有单词的首字母大写。
XxxYyyZzz
变量名和方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。
xxxYyyZzz
常量名:所有字母都大写。多单词时每个单词用下划线连接。
XXX_YYY_ZZZ
2.6.2 基本数据类型
- int
- long
- folat
- double
- boolean true/false
- char
- byte
- short
2.6.3 引用数据类型
- 类 (String等)
- 接口
- 数组
所有的对象都属于引用数据类型,也可以说除了基本数据类型外的所有的类型都是引用数据类型
byte myAge ;
房间类型 房间名字 ;
变量的类型 变量名 ;
2.6.3 什么是变量
- 变量 :程序执行中数值可变的数据
- 变量名:定义变量的标识符
- 变量值:内存单元中所装载的数据
变量其实是内存中的一小块区域,使用变量名来访问这块区域的数据。因此,每一个变量使用前必须要先申请(声明)(强类型语言的特点),然后必须进行赋值(初始化),才能使用。
2.7 基本数据类型有哪些,数据类型的取值范围
数据类型 | 内存大小 | 取值范围 |
---|---|---|
byte | 1 字节 | -128 ~ 127 |
short | 2 字节 | -2^15 ~ 2^15-1 |
char | 2 字节 | 0 ~ 2^16-1 |
int | 4 字节 | -2^31 ~ 2^31-1 即:-2147483648 ~ 2147483647 |
float | 4 字节 | 1.4013E-45 ~ 3.4028E+38 |
long | 8 字节 | -2^63 ~ 2^63-1 |
double | 8 字节 | 4.9E-324 ~ 1.7977E+308 |
boolean | 1/8 字节(1字节) | true/false |
2.7.9 基本数据类型转换
2.7.9.1 自动类型转换
容量小的类型自动转换成容量大的数据类型
byte,short,char < int < long < float < double
byte,short,char之间不会互相转换,他们三个计算时首先转成int类型
如:
int a = 4 ;
double b = a ;
2.7.9.2 强制类型转换
容量大的类型转换成容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出,使用时要格外注意。
如:
float f =14.8f;
int i = (int)f;
注意:boolean值不能与其他任何类型之间进行强制类型转换
2.8 运算符
2.8.1 赋值运算符
运算符 | 名称 | 用法 | 描述 |
---|---|---|---|
= | 赋值 | int a = 3 ; | 将 = 右边的值 赋值给 = 左边的变量 |
2.8.2 算术运算符
运算符 | 名称 | 用法 | 结果 |
---|---|---|---|
+ | 加 | 5 + 2 | 7 |
- | 减 | 5-2 | 3 |
* | 乘 | 5*2 | 10 |
/ | 除 | 5/2 | 2 |
% | 取余 | 5%2 | 1 |
2.8.3 一元运算符
运算符 | 用法 | 描述 |
---|---|---|
++ | (先加)++x 或x++(先用) | 自增1 |
– | (先减)–x或x–(先用) | 自减1 |
2.8.4 关系(比较)运算符
运算符 | 名称 | 用法 | 结果(Boolean值) |
---|---|---|---|
> | 大于 | 2>1 | true |
< | 小于 | 2<1 | false |
= | 大于等于 | 2>=1 | true |
<= | 小于等于 | 2<=1 | flase |
== | 等于 | 2==1 | false |
!= | 不等于 | 2!=1 | true |
2.8.5 逻辑运算符(只能比较 boolean值,结果也为 boolean值)
运算符 | 名称 | 用法 | 描述 ( 结果(Boolean值) ) |
---|---|---|---|
&& | (短路)与 | 条件1 && 条件2 | 只要两个条件有一个为假,结果为假 |
& | 与 | 条件1 & 条件2 | 只要两个条件有一个为假,结果为假 |
|| | (短路)或 | 条件1 || 条件2 | 只要两个条件有一个为真,结果为真 |
| | 或 | 条件1 | 条件2 | 只要两个条件有一个为真,结果为真 |
! | 非 | !条件 | 条件为真时,结果为假,反之亦然 |
^ | 异或 | 条件1 ^ 条件2 | 两个条件结果相同时为假,不同为真 |
解释:短路
当 条件1 && 条件2 如果条件1为false,结果明显为false,所以条件2不会再判断。
当 条件1 & 条件2 如果条件1为false,结果明显为false,但条件2语句一样会被运算。
2.8.6 位运算符(2进制运算符)
运算符 | 名称 | 用法 | 描述 |
---|---|---|---|
& | 按位与 | 00001001&00001110 -> 00001000 | 按位比较,只要有0,则取0 |
| | 按位或 | 00001001|00001110 -> 00001111 | 按位比较,只要有1,则取1 |
^ | 按位异或 | 00001001^00001110 -> 00000111 | 按位比较,相同取0,不同取1 |
~ | 按位非 | ~00000010 -> 11111101 | 对位取反 |
<< | 左移 | 01000011 << 2 -> 00000110 | 每一位向左移动2位,右边补0,超出位数范围则舍去 |
> | 带符号右移 | 11111110 >> 2 -> 11111111 | 每一位向右移动2位,左边补符号位,超出位数范围则舍去 |
> | 无符号右移 | 11111110 >> 2 -> 00111111 | 每一位向右移动2位,左边补0,超出位数范围则舍去 |
经典案例1:用最快的速度计算2的3次方; 提示:使用<<
经典案例2:int a =1;int b =2;不借助第三个变量,交换两个数的值; 提示: 使用^
2.8.7 三目(三元)运算符
运算符 | 名称 |
---|---|
? | 吗 |
: | 否则 |
用法:
zhangSanScore > 98 ? “奖励Iphone 8 ” : “没有任何奖励” ;
语法解释:张三的成绩大于98吗?如果大于”奖励Iphone 8 “,否则”没有任何奖励”;
2.8.8 字符串连接运算符
运算符 | 名称 | 用法 | 结果 |
---|---|---|---|
+ | 字符串追加 | String s=”张三”+”是个男孩”; | s -> 张三是个男孩 |
注:只要+的两端有一端是字符串,则这个时候+就变成了字符串连接符
2.9 表达式的值和类型
表达式是符合一定语法规则的运算符和操作数的序列
表达式的类型和值:
类型:表达式的值的数据类型即为表达式的类型
值:对表达式中操作数进行运算得到的结果称为表达式的值
注: 实数常量,(如:1.5)默认类型为 double
整数常量,(如:123)默认类型为 int
表达式的运算顺序
- 首先应按照运算符的优先级从高到低的顺序进行
- 优先级相同的运算符按照事先约定的结合方向进行(一般从左到右)
2.10 变量的作用域
public class MyFirst {
int a = 1;
public void xxx() {
int b = 2;
System.out.println(a);
}
public void yyy() {
int a = 3;
System.out.println(a);
}
}
上述代码中a变量是在class的 { } 中定义的,它的作用域就是这个class内,任意位置都可以访问而变量b是在方法xxx的 { } 中声明的,它作用域就只限于xxx方法中;
在两个不同作用域范围下如果出现同名称变量时;则作用范围小的变量在其作用域内会覆盖作用范围大的变量,上述例子中方法yyy的 { } 中的变量和类中的变量同名,都为a,那么在方法yyy内,a变量的值以方法内声明为准。