3W1H
What(是什么) : 目的是什么?重点是什么?功能有哪些?规范有什么?
Why(为什么) : 为什么要做?可不可以不做?有没有替代方案?
Where(在哪里) : 范围,地点(地方),切入点
How(如何做) : 方法,如何做
以注释为例:
What : 什么是注释?
Why : 为什么要有注释?可以没有注释吗?
Where : 注释写在哪里?
How : 如何写注释?怎样写注释才规范?
1.注释
// 单行注释,多用于局部变量或方法中的说明
/*
多行注释
......
*/
/**
* 类 文档注释
* @author 作者(创建者)
* @version 版本号
* @data 日期
* ......
*/
/**
* 成员变量 文档注释
*/
/**
* 方法 文档注释
* @param 参数名称: 参数说明
* @return: 返回值说明
* ......
*/
2.数据类型
2.1 基本数据类型
类型名称 | 关键字 | 位数 | 内存 | 默认值 | 取值范围 | 包装类 |
---|---|---|---|---|---|---|
字节型 | byte | 8 | 1 字节 | 0 | -128~127 | java.lang.Byte |
短整型 | short | 16 | 2 字节 | 0 | -32768~32767 | java.lang.Short |
整型 | int | 32 | 4 字节 | 0 | -2的31次方到2的31次方-1 | java.lang.Integer |
长整型 | long | 64 | 8 字节 | 0L | -2的63次方到2的63次方-1 | java.lang.Long |
单精度浮点型 | float | 32 | 4 字节 | 0.0F | 存储小数, 存储 6 到 7 个十进制数字 | java.lang.Float |
双精度浮点型 | double | 64 | 8 字节 | 0.0D | 存储小数,存储 15 位十进制数字 | java.lang.Double |
字符型 | char | 16 | 2 字节 | ‘u0000’ | 0 -> 65535(存储单个字符/字母或ASCII值) | java.lang.Character |
布尔型 | boolean | 8 | 1 字节 | false | true 或 false | java.lang.Boolean |
2.2 String类
使用 String 类来创建和操作字符串,注意:String 类是不可改变的
// 创建字符串
String abc = "abc"; // 等效于如下方式
char data[] = {'a', 'b', 'c'};
String str = new String(data);
// 字符串拼接
String s = "ab" + "cd";
// 常用方法
contains(CharSequence s) // 当且仅当此字符串包含指定的char 值序列时,返回 true
endsWith(String suffix) // 测试此字符串是否以指定的后缀结束
equals(Object anObject) // 将此字符串与指定的对象比较
equalsIgnoreCase(String anotherString)// 字符串比较时,不考虑大小写
indexOf(String str) // 返回指定子字符串在此字符串中第一次出现处的索引
lastIndexOf(String str) // 回指定子字符串在此字符串中最右边出现处的索引
length() // 返回此字符串的长度
matches(String regex) // 告知此字符串是否匹配给定的正则表达式
split(String regex) //根据给定正则表达式的匹配拆分此字符串,返回的是字符串数组
startsWith(String prefix) // 测试此字符串是否以指定的前缀开始
trim() // 返回字符串的副本,忽略前后空白
2.3 数组
// 声明数组变量
// 首选的方法
dataType[] arrayRefVar;
// 或
dataType arrayRefVar[];
// 创建数组
arrayRefVar = new dataType[arraySize];
// 声明并创建
dataType[] arrayRefVar = new dataType[arraySize];
dataType[] arrayRefVar = {value0, value1, ..., valuek};
// 例1 : 基本数据类型数组
double[] myList = new double[10];
myList[0] = 5.6;
// 例2 : String类数组
String[] myList = {"张三", "李四", "王五"};
3.变量
3.1 声明格式
type identifier [ = value][, identifier [= value] ...];
3.2 变量类型
成员变量:
类变量:独立于方法之外的变量,用 static 修饰
实例变量:独立于方法之外的变量
局部变量:形参、方法内局部变量、代码块内局部变量
3.3 实例
// 声明
int a;
// 赋值
a = 1;
// 声明并赋值
int d = 3, e = 4, f = 5;
// 声明数组
double[] doubleArray = new double[10];
// 赋值
doubleArray[0] = 3.14;
// 声明数组并赋予初值
int[] arr = new int[]{3,5,1,7};
int[] arr = {3,5,1,7};
// 声明对象并初始化
Student student = new Student("张三", 18);
4. 修饰符
修饰符用来定义类、方法或者变量,通常放在语句的最前端
4.1 访问控制修饰符
名称 | 使用对象 | 说明 |
---|---|---|
default | 类、接口、变量、方法 | 在同一包内可见,默认不写 |
private | 变量、方法 | 在同一类内可见 |
protected | 变量、方法 | 对同一包内的类和所有子类可见 |
public | 类、接口、变量、方法 | 对所有类可见 |
4.2 非访问修饰符
名称 | 使用对象 | 说明 |
---|---|---|
static | 方法、变量、代码块、静态导入 | 类名.方法/变量 |
final | 类、方法、变量 | 不能被修改 |
abstract | 类,方法 | 抽象类、抽象方法 |
synchronized | 方法上、方法内 | 同一时间只能被一个线程访问 |
transient | 成员变量 | 在序列化时被忽略 |
volatile | 成员变量 | 仅保证可见性,禁止指令重排序 |
5. 运算符
-
算术运算符 : + 、- 、* 、/ 、%、++、–
-
关系运算符 : ==、!=、> 、< 、>=、<=
-
位运算符 : &、|、^、〜、<< 、>>、>>>
-
逻辑运算符 : &&、||、!
-
短路逻辑运算符 : if (denom != 0 && num / denom > 10)
-
赋值运算符 : =、+= 、-= 、*= 、/= 、%= 、<< = 、 >> =、&= 、^ =、| =
-
条件运算符(三元运算符) : variable x = (expression) ? value if true : value if false
6. 条件语句
6.1 if语句
if(布尔表达式 1) {
//如果布尔表达式 1的值为true执行代码
} else if(布尔表达式 2) {
//如果布尔表达式 2的值为true执行代码
} else if(布尔表达式 3) {
//如果布尔表达式 3的值为true执行代码
} else {
//如果以上布尔表达式都不为true执行代码
}
6.2 switch语句
switch(expression){
case value :
//语句
break; //可选
case value :
//语句
break; //可选
//你可以有任意数量的case语句
default : //可选
//语句
}
7 循环结构
7.1 for循环
// 普通for循环
for(初始化 ; 布尔表达式 ; 更新) {
// 代码语句
// break; continue;
}
// 加强for循环
for(类型 变量 : 数组或集合对象) {
// 代码语句
// break; continue;
}
// jdk8及后续版本
集合.forEach(Lambda表达式)
List<String> list = new ArrayList<>();
list.forEach(System.out::println);
Map<String, String> map = new HashMap<>();
map.forEach((k, v) -> System.out.println("k = " + k + ",v = " + v));
int[] myArray = {1,2};
Arrays.stream(myArray).forEach(System.out::println);
// 注意: Arrays.asList()方法传递进去的数组应该是一个对象数组,
// 此处传递进去的参数是一个基本类型数组,它创建了一个数组集合,
// 所以该集合的仅有唯一元素是myArray
Arrays.asList(myArray).forEach(System.out::println); // 不会打印出1,2
// 分开写法
int[] myArray2 = {1, 2};
List<int[]> list = Arrays.asList(myArray2);
list.forEach(System.out::println);
7.2 while循环
while( 布尔表达式 ) {
// 代码语句
}
7.3 do…while循环
do {
// 代码语句
} while ( 布尔表达式 );
8 方法
修饰符 返回值类型 方法名(参数类型 参数名){
...
方法体
...
return 返回值;
}
public class Student {
// 成员变量, 调用方式: Student.age;
public static Integer age = 18;
// 实例变量, 调用方式:
// Student student = new Student();
// student.name;
public String name;
// 无参构造方法, 调用: Student student = new Student();
public Student() {
super();
}
// 有参构造方法, 调用方式: Student student = new Student(“张三”);
public Student(String name) {
this.name = name;
}
// 普通方法, 调用方式:
// Student student = new Student();
// student.sum(1,2);
public int sum(int num1, int num2) {
// 代码语句:局部变量,条件语句,循环结构
return num1 + num2;
}
// 静态方法, 调用方式: Student.getFullName("张",“三”)
public static String getFullName(String first, String second) {
// 代码语句:局部变量,条件语句,循环结构
return first + " " + second;
}
}