笔记至第3章【完】
课程重点: * 类 * 集合
* 图形用户界面 * 文件操作 * 多线程 * 数据库
第一章 Java程序设计概述
命令行执行Java程序
1 | javac Test.java //java compile 编译java程序 .java->.class |
第二章 Java语言基础
标识符和关键字
标识符:首字符必须是字母、下划线或美元符号\(,后面可跟字母、数字、下划线和美元符号\)。
关键字:Java预定义的单词。
- 包(package):用于将完成不同功能的类分门别类,放在不同的目录(包)下,包的命名规则:将公司域名反转作为包名。比如www.baidu.com 对于包名:每个字母都需要小写。比如:com.baidu.test;该包下的Test类的全名是:com.baidu.Test.java 。 如果定义类的时候没有使用package,那么java就认为我们所定义的类位于默认包里面(default package)。
- 类:每个单词的首字母都大写,不使用连接符
- 方法:首单词小写,第二个单词起首字母大写,不使用连接符
- 属性:首单词小写,第二个单词起首字母大写,不使用连接符
- 常量:所有字母大写,下划线链接单词
基本数据类型、变量、常量
符号常量
用final声明符号常量
表示这个变量只能被赋值一次,一旦赋值后就不能够再更改。
1 | // final 数据类型 常量名 = 缺省值; |
习惯上,符号常量名采用全部大写,词与词之间用下划线分隔。
变量
变量形式:maMuMu。一般不使用下划线。
运算符
&&是短路与,||是短路或 &是逻辑与,|是逻辑或
表达式的类型转换
将长的类型赋予较短的类型要先强制类型转换
1 | long long x = 100; |
流程控制
方法
函数=方法=模块化设计
Java中所有的方法都必须封装在类中,不能单独出现、使用。
方法的定义
Java中方法定义的基本格式为: [修饰符] 返回值类型 方法名([形式参数列表]){ [方法体] } 修饰符:定义方法在类中的存在属性(如公有/私有、是否可以被重载等)
方法的重载
重载只与参数有关,与返回值无关 * 参数的类型不同 * 参数的个数不同
案例
1 | import java.util.*; |
习题
1 | System.out.println("abc" + 7 + 2) |
输出 abc72
1 | System.out.println(7 + 2 +"abc") |
输出 9abc
第三章 数组
数组的声明、创建、引用
Java中的数组是对象,属于引用类型。
法一: 1
2int[] myArray;
myArray = new int[5];
法二: 1
int[] myArray = new int[5];
法三 匿名数组 1
new int[]{1,2,3,4,5}
1
int sum = getSum(new int[]{1,2,3,4,5});
数组的属性length,存储数组元素的个数
Java能自动检查数组是否越界
一维数组
不定长参数与数组
某些方法的参数个数事先无法确定。 可使用数组参数 * 不定长形参只能处于形参列表的最后 * 一个方法只能包含一个不定长参数 法一 1
void fun(String... args);
1
void fun(String[] args);
二维数组
- 规则二维数组
- 不规则二维数组
声明
1 | int[][] myArray; |
创建
1 | myArray = new int[2][3]; |
1 | myArray = new int[][]{{1,2,3},{4,5,6}}; |
1 | myArray = {{1,2,3},{4,5,6}}; |
不规则二维数组
创建二维数组对象可以进行动态分配
1 | int[][] b = new int[2][]; |
for each循环
用于遍历数组元素 1
2
3for ( 数据类型 迭代变量: 数组 ){
···
}
1 | for(int[] rows:twoDArray){ |
Arrays类
Arrays.sort(int[] a)
优化的快速排序方法 1
2Array.sort(myArray);
System.out.println(Array.toString(myArray));
copyOf()方法
实现数组复制 得到的是一个新的数组对象
1 | copyOf(int[] myArray,int length) |
Arrays.binarySearch(int[] a,int key)方法:折半查找
equals
案例
显示成绩方法 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45public static void show(){ //显示成绩
System.out.print("\t"); //留出显示姓名的位置
for(int i=0; i<courses.length; i++){//输出课程名称
System.out.print(courses[i]+"\t");
}
System.out.println();
for(int i=0; i<score.length; i++){
//显示学生姓名
System.out.print(students[i]+"\t");
//显示该学生成绩
for(int j=0; j<score[i].length; j++){
System.out.print(score[i][j]+"\t");
}
System.out.println();
}
}
字符串比较方法:<kbd>equalsIgnoreCase()</kbd>
控制台命令的读取和控制
```java
public static void run(){
Scanner scn=new Scanner(System.in);
while(true){
System.out.print("请输入命令:");
String command=scn.next();
if(command.equalsIgnoreCase("avg")){//"avg"命令需要一个参数
String parameter=scn.next();
avg(parameter);
}
if(command.equalsIgnoreCase("get")){//"get"命令需要两个参数
String parameter1=scn.next();
String parameter2=scn.next();
get(parameter1,parameter2);
}
if(command.equalsIgnoreCase("sort")){//"sort"命令需要一个参数
String parameter=scn.next();
sortByScore(parameter);
}
if (command.equalsIgnoreCase("exit")){//退出查询系统
System.out.println("退出查询系统!byebye!");
System.exit(0);
}
}
}
查询某人某门课成绩 1
2
3get(String[] students, String[] courses){
···
}