1 注释
-
单行注释
// 这是单行注释
-
多行注释
/* * 这是多行注释 * 这是多行注释 */
-
文档注释
/** * @author 标识一个类的作者 * @deprecated 指明一个过期的类或成员 * @exception 标识一个类抛出的异常 * @param 说明一个方法的参数 * @return 说明返回值类型 * @see 指定一个到另一个主题的链接 * @version 指定类的版本 */
2 标识符
-
标识符以字母(A-Z 或 a-z),美元符($)、或下划线(_)开始
-
首字母后可以是字母(A-Z 或 a-z),美元符($)、下划线(_)或数字的任意字符组合
// 合法标识符 age $salary _value __1_value // 非法标识符 123abc -salary #abc
-
不能使用关键字作为变量名或方法名
-
标识符是大小写敏感的
-
可以使用中文命名,但不建议,也不建议使用拼音
3 数据类型
-
强类型语言:要求变量使用要严格符合规定,所有变量都必须先定义后才能使用(强类型语言的安全性更高,但速度较弱类型语言慢)
-
Java的数据类型分为基本类型(primitive type)和引用类型(reference type)
-
long
类型要在数字后加L
,float
类型要在数字后加F
long num1 = 30L; float num2 = 3.14F;
-
整数类型可以以不同的进制表述
int num1 = 10; // 十进制 int num2 = 0b1010; // 二进制,以0b或0B开头 int num3 = 012; // 八进制,以0开头 int num4 = 0xa; // 十六进制,以0x或0X开头
-
Java7之后,数字之间可以使用下划线进行分割
int money = 1_000_000_000;
4 类型转换
-
Java是强类型语言,在计算时需要考虑类型优先级
-
强制转换(转换时需要注意类型的范围)
// 强制转换是由高类型转换为低类型 int i = 128; byte b = (int) i; // 由于byte范围为-128~127,此时b为-128
-
自动转换
// 由低类型转换至高类型时可以直接转换 int i = 128; double d = i;
-
boolean
类型不能转换 -
不能将对象类型转换为不相干的类型
-
高类型和低类型进行运算时,结果会自动转换为高类型值
int a = 1000000000; int b = 2000000000; long result1 = a * b; // 此时先做int的乘法,再转换为long,结果错误 long result2 = (long) a * b; // 此时相当于两个long值相乘,结果正确
5 变量
变量是Java程序中最基本的存储单元,包括变量名、变量类型和作用域
type varName [=value] [{, varName[=value]}];
// 数据类型 变量名 = 值;
// 可以使用逗号隔开声明多个同类型变量(不推荐)
6 变量作用域
public class Variable {
static int allClicks = 0; // 类变量
String str = "Hello World"; // 实例变量
public void method() {
int i = 0; // 局部变量
}
}
-
局部变量:
必须声明和初始化值,在方法内部定义,在定义该局部变量的方法外部无法直接调用
-
实例变量
从属于对象,如果不进行初始化,则为该类型的默认值(数值类型:
0
、0.0
,布尔值:false
,char
类型:\u0000
,引用类型:null
) -
类变量
可以在类中的任意地方直接调用
7 常量
常量(Constant)是一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变,使用final
关键字修饰
final double PI = 3.14;
8 变量的命名规范
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则:
mouthSalary
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:
MAX_VALUE
- 类名:首字母大写和驼峰原则:
Man
、GoodMan
- 方法名:首字母小写和驼峰原则:
run()
、runRun()
9 运算符
Java语言支持如下运算符:
-
算术运算符:
+
、-
、*
、/
、%
、++
、--
int a = 3; int b = a++; // 先给b赋值,再自增 int c = ++a; // 先自增,再给c赋值
-
赋值运算符:
=
-
关系运算符:
>
、>=
、<
、<=
、==
、!=
、instanceof
-
逻辑运算符:
&&
、||
、!
// &&和||是短路运算,如果从第一项中已经可以知道结果,就不会计算后面的内容 int i = 5; boolean b = (c < 4) && (c++ > 10); // 不会执行c++的运算
-
位运算符:
&
、|
、^
、~
、>>
、<<
、>>>
^
:异或,相同二进制位异或结果为0,不同二进制位异或结果为1>>
:右移,移位前最高位是0,右移后补0;移位前最高位是1,右移后补1(符号不变)>>>
:右移,移位后最高位补0<<
:左移,空位补0,移除的高位舍弃
-
条件运算符:
? :
-
扩展赋值运算符:
+=
、-=
、*=
、/=
10 运算符优先级
优先级 | 运算符 | 结合性 |
---|---|---|
1 | () 、[] 、{} | 从左向右 |
2 | ! 、+ (正)、- (负)、~ 、++ 、-- | 从右向左 |
3 | * 、/ 、% | 从左向右 |
4 | + 、- | 从左向右 |
5 | << 、>> 、>>> | 从左向右 |
6 | < 、<= 、> 、>= 、instanceof | 从左向右 |
7 | == 、!= | 从左向右 |
8 | & | 从左向右 |
9 | ^ | 从左向右 |
10 | | | 从左向右 |
11 | && | 从左向右 |
12 | || | 从左向右 |
13 | ? : | 从右向左 |
14 | = 、+= 、-= 、*= 、/= 、&= 、|= 、^= 、~= 、<<= 、>>= 、>>>= | 从右向左 |
11 包机制
-
为了更好地组织类,Java提供了包机制,用于区分类名的命名空间,其语法格式为:
package pkg1[.pkg2[.pkg3...]];
-
一般使用公司域名倒置作为包名:
com.kayne.blog
-
为了能够使用某一个包中的成员,需要在程序中明确导入该包,使用
import
关键字import pkg1[.pkg2...].(classname|*);
12 JavaDoc
在类前或方法前添加文档注释之后,可以通过JavaDoc生成对应的API文档
-
通过命令行生成
javadoc -encoding UTF-8 -charset UTF-8 xxx.java
-
通过IDEA生成(v.2019.3.1)
在选择需要生成文档的代码后:
然后选择文档输出目录,以及设置编码方式: