开始重新找工作了,但是感觉基础比较薄弱,所以拿出点时间复习以下以前的知识,一步一步打好基础,让步子走的更稳健一些,虽然基层差,但我是每天都在进步的,而且进步的很快!
内容、代码等部分参考《Thinking in Java》和《疯狂Java讲义》
数据类型
基本数据类型(Primitive Type)和引用数据类型(Reference Type)
基本数据类型
布尔类型和数值类型,数值类型又可分为整数类型和浮点类型
- 整数类型
byte 1个字节
short 2个字节
int 4个字节
long 8个字节 - 字符类型
char 2个字节 - 浮点型
double 8个字节
float 4个字节 - 布尔类型
boolean 1个字节
整型
整数常量有4种:十进制,二进制,八进制,十六进制//以0开头的是八进制 \n
int octalValue = 013
//以0x或0X开头的整数常量是十六进制的整数
int hexValue1 = 0x13;
int hexValue2 = 0XaF;
字符型
字符常量有3种表示形式
- 直接通过单个字符来指定字符型常量,例如’a','4'
- 通过转义字符表示特殊字符型常量,例如‘\n','\t'
- 直接使用Unicode值来表示字符型常量,格式是'\uXXXX’
范围在0~65535内,char类型和int类型可以互相转换
浮点型
固定的表数范围与长度,字段长度和表数范围与机器无关。
- float 第1位是符号位,接下来8位表示指数,接下来23位表示尾数
- double 第1位是符号位,接下来的11位表示指数,接下来52位表示尾数,小数默认类型
高精度数字
BigInteger支持任意精度的整数
BigDecimal支持任意精度的定点数
浮点数有两种表示形式
- 十进制数形式:简单的浮点数,例如 5.12,512.0
- 科学计数法形式:例如5.12e2,5.12E2
3个特殊的浮点数:正无穷大、负无穷大和非数
布尔型
只能是true或false,不能用0或者非0代表。
- 基本类型的类型转换
自动类型转换:当把一个表数范围小的数值或变量直接赋值给另一个表数范围大的变量时,系统将进行自动类型转换。
强制类型转换:自动转换图右边往左边转。语法格式:(tragetType)value
表达式类型的自动提升
- 所有的byte类型、short类型和char类型将被提升到int类型
整个算术表达式的数据类型自动提升到与表达式中最高等级操作数同样的类型。
引用数据类型
空类型、类、接口和数组
操作符
- 赋值运算符
- 算术运算符
+,-,*,/,%,++,-- - 关系运算符
<,>,<=,>=,==,!= - 逻辑运算符
与(&&),或(||),非(!),异或(^)
不短路:&,|, - 位运算符
&(按位与),|(按位或),~(按位非),^(按位异或),<<(左移运算符),>>(右移运算符),>>>(无符号右移运算符) - 三目运算符
(expression)? if-true-statement : if-false-statement;
流程控制
顺序结构
程序从上到下逐行执行
分支结构
if条件语句
使用布尔表达式或布尔值作为分支条件进行控制
第一种形式
if ( logic expression){
statement...
}
第二种形式
if (logic expression){
statement...
}else{
statement...
}
第三种形式
if (logic expression){
statement...
}else if(logic expression){
statement...
}...可以多个else if
else{
statement
}
switch选择语句
switch语句后面表达式的数值类型只能是byte,short,char,int四个整数类型和枚举类型,不能是布尔类型,Java7允许switch控制语句为String类型
switch( integral-selector){
case integral-value1 : statement: break;
case integral-value1 : statement: break;
case integral-value1 : statement: break;
case integral-value1 : statement: break;
//...
default : statment;
}
循环结构
一般可能包含下面四个部分
- 初始化语句(init_stattement)
- 循环条件(test_expression)
- 循环体(body_statement)
- 迭代语句(iteration_statement)
while
[init_stattement]
while (test_expression){
body_statement
[iteration_statement]
}
do-while
[init_stattement]
do{
body_statement
[iteration_statement]
}while(test_expression);
for
for ( [init_stattement];[test_expression]; [iteration_statement] ){
body_statement;
}
Foreach
Java SE5引入了一种更加简洁的for语法用于数组和容器。不必创建int变量去访问项构成的序列进行计数,foreach将自动产生每一项
控制循环结构
return——结束方法
return关键字有两方面的用途:一方面指定一个方法的返回什么值,另一方面它会导致当前的方法退出,并放回这个值
break和continue——结束循环
break用于强行退出循环,不执行循环中剩余的语句。
continue停止当前执行当前的迭代,然后退回循环起始处,开始下一次迭代。
break语句不仅可以结束其所在循环,还可以直接结束其外层循环。
outer:
for(int i = 0 ; i < 5; i++){
for(int j = 0; j < 4; j++){
break outer;
}
}
continue语句标签于break相似,只是功能上是结束外层循环的本次循环。
在java里需要使用标签的唯一理由就是因为有循环嵌套的存在,而且想从多层嵌套中break或continue