0%

Java程序设计01

笔记至第3章【完】

课程重点: * 类 * 集合
* 图形用户界面 * 文件操作 * 多线程 * 数据库

第一章 Java程序设计概述

命令行执行Java程序

1
2
javac Test.java   //java compile 编译java程序 .java->.class
java Test //运行java程序

第二章 Java语言基础

标识符和关键字

标识符:首字符必须是字母、下划线或美元符号\(,后面可跟字母、数字、下划线和美元符号\)

关键字:Java预定义的单词。

  1. 包(package):用于将完成不同功能的类分门别类,放在不同的目录(包)下,包的命名规则:将公司域名反转作为包名。比如www.baidu.com 对于包名:每个字母都需要小写。比如:com.baidu.test;该包下的Test类的全名是:com.baidu.Test.java 。   如果定义类的时候没有使用package,那么java就认为我们所定义的类位于默认包里面(default package)。  
  2. 类:每个单词的首字母都大写,不使用连接符  
  3. 方法:首单词小写,第二个单词起首字母大写,不使用连接符  
  4. 属性:首单词小写,第二个单词起首字母大写,不使用连接符  
  5. 常量:所有字母大写,下划线链接单词

基本数据类型、变量、常量

符号常量

final声明符号常量
表示这个变量只能被赋值一次,一旦赋值后就不能够再更改。

1
2
// final 数据类型 常量名 = 缺省值;
final int STUDENT_NUM = 10;

习惯上,符号常量名采用全部大写,词与词之间用下划线分隔。

变量

变量形式:maMuMu。一般不使用下划线。

运算符

&&是短路与,||是短路或 &是逻辑与,|是逻辑或

表达式的类型转换

将长的类型赋予较短的类型要先强制类型转换

1
2
long long x = 100;
int y = (int) x;

流程控制

方法

函数=方法=模块化设计
Java中所有的方法都必须封装在类中,不能单独出现、使用。

方法的定义

Java中方法定义的基本格式为: [修饰符] 返回值类型 方法名([形式参数列表]){ [方法体] } 修饰符:定义方法在类中的存在属性(如公有/私有、是否可以被重载等)

方法的重载

重载只与参数有关,与返回值无关 * 参数的类型不同 * 参数的个数不同

案例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.*;
public class Test{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
double r,perimeter,area;
System.out.print("Please enter a radius for a circle: ");
// System.out.println是输出并换行 print不换行
r = input.nextDouble();
input.close();
//记得关闭输入
perimeter = 2*Math.PI*r;
area = Math.PI*r*r;
System.out.print("The perimeter is "+ perimeter+" and the area is "+area);
// “+”将变量值转换为字符串

}
}

习题

1
System.out.println("abc" + 7 + 2)

输出 abc72

1
System.out.println(7 + 2 +"abc")

输出 9abc

第三章 数组

数组的声明、创建、引用

Java中的数组是对象,属于引用类型。

法一:

1
2
int[] 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
2
3
int[][] b = new int[2][];
b[0] = new int[3];
b[1] = new int[5];

for each循环

用于遍历数组元素

1
2
3
for ( 数据类型 迭代变量: 数组 ){
···
}

1
2
3
4
5
for(int[] rows:twoDArray){
for(int element:rows){
···
}
}

Arrays类

Arrays.sort(int[] a)

优化的快速排序方法

1
2
Array.sort(myArray);
System.out.println(Array.toString(myArray));

copyOf()方法

实现数组复制 得到的是一个新的数组对象

1
2
3
copyOf(int[] myArray,int length)

copyOf(int[] myArray, int start, int end)

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
45
public 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
3
get(String[] students, String[] courses){
···
}

看到这里的姐妹一看就要暴富暴美,为什么不让这一天提前一点呢ヾ(≧▽≦*)o