一、java关键字:
java中有一些被赋予了特殊含义的英文单字,例如:Class、Interface等。
在java中还有一个保留字的含义,即目前尚未被赋予含义但是保留使用的关键字:goto、const。
二、标识符:
java中用于给类、接口、函数、变量等起名字的一些字符序列。
标识符可以由大小写英文字母、数字、$、下划线组成。其组成规则如下:
1、包名:所有的英文字母要小写。例如:cn.com.package.name
2、类、接口名:每个单词的首字母大写;例如:ClassName
3、方法、变量名:第一个单词的首字母小写,其余单词首字母大写;例如:methodName
4、常量名:所有的字母大写,单词之间用_隔开。例如:CONSTANT_NAME
5、所有的标识符不能以数字开头;不能使用大小写英文字母、数字、$、下划线之外的其他字符;不能使用关键字和保留字
三、注释:开发中要善用注释,一个没有注释或者注释极少的项目是很不利于维护的。
单行注释://
开发过程中不要注释废弃或待未来启用的代码,这是个不好的习惯。应该直接将代码删除,如未来有需要可从版本控制工具中找到被删除的代码将其还原。
多行注释:/* */
单行注释可以嵌套单行注释,多行注释不可以嵌套多行注释,否则编译报错。
文档注释:/** */
文档注释会被javadoc工具解析成一个程序的说明书。
四、常量:
程序运行过程中其值不会发生改变的量。有两种体现形式:
字面值常量,如:135
自定义常量:即使用关键字final修饰的量。
五、数据类型:数据类型分为基本数据类型和引用数据类型
1、基本数据类型:整数型、浮点型、布尔型、字符型
a、整数型包含:
byte(一个字节)【-2^7——(+2^7)-1】【-128——+128】
short(两个字节)【-2^15——(+2^15)-1】【-32768——+32768】
int(四个字节)【-2^31——(+2^31)-1】
long(八个字节)【-2^63——(+2^63)-1】
因为整数型数据默认都是int类型的,所以将一个过大的整数赋值给long的时候,应在数值的末尾加L,防止数据过大长处int型数值范围
b、浮点型包含:
float:(四个字节)
double:(八个字节)
因为浮点型数据默认都是double类型的,所以将一个浮点数赋值给float的时候,应在数值的末尾加F,防止数据精度丢失报错。
c、布尔型:boolean,值为true和false
d、字符型:char(两个字节),在c语言中是一个字节。
2、引用数据类型:类、接口、数组
3、数据类型的转换规则:
数据类型可以由低精度自动转换为高精度数据,但是从高精度转换为低精度数据时可能会发生精度丢失的情况。
强制转换数据类型的方法:目标类型 变量 = (目标类型) 数值;
六、运算符:
运算符分为算术运算符、比较运算符、赋值运算符、逻辑运算符、位运算符和三目运算符。
a、算术运算符:算术运算符中需要注意的就是++i和i++、--i和i--了。
++i和i++都等同于i=i+1,区别在于++号在前则先+1,后赋值;++号在后则是先赋值,而后进行+1运算;--i和i--等同于i=i-1,其运行规则等同于++i和i++;
b、赋值运算符:需要注意的是扩展赋值运算符:a+=b或a-=b的形式,其等同于a = a+b、a=a-b;扩展赋值运算符在计算完后赋值给等号左边的变量的时候会根据变量的类型进行数据类型的自动转换。而赋值运算符不会。
c、逻辑运算符:
与(&):同真才为真,其余皆为假;
或(|):同假才为假,否则为真;
异或(^):运算符两边相同为假,两边不同为真;参与运算时需要转换为二进制,由进制位间进行运算。异或在十进制间进行运算可作为转换符使用。如:c = a^b则b = a ^c 则 a = b^c。
非(!):非真就是假,非假就为真;
双与(&&):和单与相似,只是左边如果判断为假就不会再判断右边了;
双或(||):和单或相似,只是左边如果判断为真就不会再判断右边了;
d、位运算符:位与运算符(&)、位或运算符(|)、位异或运算符(^)、按位取反运算符(~)、左移运算符(<<)、右移运算符(>>)、无符号右移运算符(>>>);
e、三目运算符:(条件表达式) ? 表达式1 : 表达式2 意思为满足条件表达式则运行表达式1,否则运行表达式2
七:语句流:
1.if语句:
a、单if语句:
if(条件表达式) {
语句;
}
b、双if语句:
if(条件表达式) {
语句1;
} else {
语句2;
}
c、多if语句:
if(条件表达是式1) {
语句1;
} else if(条件表达式2) {
语句2;
}else {
语句3;
}
2.switch语句:
switche(条件表达式) {
case 常量1:语句1;
break;
case 常量2:语句2;
break;
......
[default: 语句n+1;]
}
3.for语句:
for(初始化语句;循环条件;控制语句) {
循环体;
}
for(变量名 元素 : 集合或者数组) {
循环体;
} 注意:foreach语句中的集合或者数组不可为空。
4.while语句:
while (循环条件) {
循环体;
}
5.do...while语句:
do{
循环体;
} while (循环条件) ;
其与while语句的区别是do...while语句无论循环条件是否成立都会至少循环一次。
6.break、continue、return的区别:
a、break:结束所在的所有循环。仅在switch和循环体中使用;
b、continue:结束本次循环,继续下次循环。尽在循环中使用;
c、return:结束所在方法,回到上层调用当前方法的位置,如果有返回值会将返回值返回
d、break和continue还可以在循环嵌套中指定所要结束和继续的循环位置。只需要在想要结束和继续的位置添加标签名,然后让break和continue指向该标签名即可。格式:标签名:语句块; break(continue) 标签名;
7.在实际开发过程中尽量避免使用循环嵌套和if语句嵌套的书写习惯,可以适当性的将嵌套的“箭头型”代码转换为逆向的判断思维方式,举例:
箭头型代码:
if(a == b) {
if(c == d) {
if(e == f) {
flag = false;
}
}
}
return true;
转换后:
if(a != b) {
return true;
}
if(c != d) {
return true;
}
if(e != f) {
return true;
}
return false;
甚至在开发过程中也不要将循环层层嵌套,可以适当的抽出独立的函数块。这样能够使代码逻辑更加清晰,降低代码的维护成本。尤其不要将循环语句、判断条件等复杂逻辑层层嵌套,这会极大的增强维护难度,甚至成为“代码禁区”。
八、变量:包含成员变量、局部变量、静态变量(全局变量):
变量名称 | 定义位置 | 存储位置 | 生命周期 |
---|---|---|---|
成员变量 | 定义在类中的方法(方法声明、方法体)或者语句等的代码块内。 | 存储在栈内存中。没有默认初始值。 | 随着它所在的作用域的加载而存在,随着作用域的结束而消失。 |
局部变量 | 直接定义在类中方法外。 | 存储在对象所在的堆内存中。有默认初始值。 | 随着对象的建立而存在,随着对象的结束而消失。 |
静态变量(全局变量) | 加static定义在类中方法外。 | 存储在方法区的静态区。有默认初始值。 | 随着类的建立而存在,随着类的结束而消失。 |