java基础Ⅱ
包机制
- 为了更好地组织类
- 语法格式: package …
- 利用公司域名倒置作为包名
- 导入包: import …
- 通配符*: import java.lang.*;
- 生成javadoc: tools/generate javadoc
Scanner
- 创建扫描器对象, 接受键盘数据
- Scanner s = new Scanner(System.in);
- s.close(); 及时关闭, 减少资源浪费
- s.next() 和 s.nextline() 获取输入的字符串
- s.hasNext() 和 s.hasNextLine()判断是否还有输入的数据
Switch
switch(expression){
case value1:
break;
case value2:
break;
default:
}
- value可以为byte, short, int, char, String (本质上均为数字, 从反编译文件可看出)
增强for循环
for(int i:arrays[10]){
}
标签Label
outer: for(int i=101;i<150;i++){
for(;;){
if(flag) continue outer;
}
}
方法
- 语句块, 为了实现某个功能
- 值传递: java中只有值传递, 没有引用传递. 无法改变原值.
- 重载
- 参数个数不同、类型不同、排列顺序不同
- 返回类型不同不足以重载
- 可变参数
- 指定参数类型后,加一个省略号…
- 必须是最后一个参数
- public static void max(double… numbers) —— numbers即为可变长度的数组
递归
- 自己调用自己
- 结构
- 递归头:什么时候跳出递归,获取某个确值
- 递归体:什么时候仍然调用自身
public static void f(int n){
if(n==1){
return 1;
}
else{
return n*f(n-1);
}
}
初始化
int[] a = {1, 2, 3};
Man[] mans = {new Man(1,1),new Man(2,2)};
int[][] b = {{1,2},{2,3},{3,4}};
int[] a = new int[2];
Arrays类
- java.util.Arrays
- 一般使用类名进行调用
- 功能
- 数组赋值:fill()
- 数组排序:sort()
- 数组比较:equals()
- 元素查找:binarySearch()
Arrays(array,0);
Arrays(array,fromIndex:2,toIndex:4,val0)
冒泡排序
- 总共有八大排序
- 依次两两比较,最大数会冒泡到最后
- 时间复杂度O(n2)
- 优化:都没有交换的话, 即已经排序好
boolean flag;
for (int i = 0; i < n-1; i++) {
flag = false;
for (int j = 0; j < n-i-1; j++) {
flag=true;
}
if(!flag){
break;
}
}
稀疏数组
int[][] array1 = new int[11][12];
array1[3][5] = 12;
array1[5][2] = 32;
array1[7][8] = 84;
int sum=3;
int[][] array2 = new int[sum+1][3];
array2[0][0] = 11;
array2[0][1] = 12;
array2[0][2] = sum;
int count = 0;
for (int i = 0; i < array1.length; i++) {
for (int j = 0; j < array1[i].length; j++) {
if(array1[i][j]!=0){
count++;
array2[count][0]=i;
array2[count][1]=j;
array2[count][2]=array1[i][j];
}
}
}
for (int i = 1; i < array2.length; i++) {
System.out.println(array2[i][0]+"\t"+array2[i][1]+"\t"+array2[i][2]);
System.out.println("");
}
int[][] array3 = new int[array2[0][0]][array2[0][1]];
for (int i = 1; i < array2.length; i++) {
array3[array2[i][0]][array2[i][1]]=array2[i][2];
}
for (int[] ints:array3) {
for (int anInt:ints) {
System.out.print(anInt+"\t");
}
System.out.println("");
}