javaSE第四天
复习:
种类:
1.赋值语句:x = 9;
2.方法调用语句:System.out.println();
stu.study();
Math.max();
3.import,package
4.分支:if switch
if(boolean)
int x = 9;
int y = 10;
else
int z = 11;
switch(byte,short int char String enum)
5.循环:
for while do-while
原理
6.嵌套循环:
外出循环一次,内层循环全部
7.跳转语句:
break,continue
8.标号语句:
out:for()
in:for()
break in;
---------------------------------------------------------
数组:main(String[] agrs)
1.什么是数组:存储相同数据类型的容器
2.特点:相同数据类型,有序的(下标,从0开始),
长度是不可变的(length)
3.声明数组
数据元素的类型[] 数组名;
int[] nums;
int nums [];
4.创建数组(申请内存)
数组名 = new 数据元素的类型[长度];
nums = new int[10];
5.存放数据
nums[0] = 1;
nums[9] = 2;
6.使用数组
System.out.println(nums[0]);
for(int i = 0;i<nums.length;i++){
System.out.println(nums[i]);
}
增强for循环
for(int n : nums){
System.out.println(n);
}
Arrays.toString(nums);
7.main方法的args数组的使用
//练习:求数组元素的和
// Integer.parseInt(args[i]);
int sum = 0;
for(String str : args){
sum += Integer.parseInt(str);
}
System.out.println(sum);
---------------------------------------------------
8.数组的拷贝和扩容
//数组的拷贝
//arraycopy
//第一个参数:原数组
//第二个参数:原数组元素的起始位置
//第三个参数:目标数组
//第四个参数:目标数组元素的起始位置
//第五个参数:长度
//练习: b={0,0,3,4,0,.....}
System.arraycopy(a, 2, b, 2, 2);
System.out.println(Arrays.toString(b));
//数组扩容
//copyOf
//第一个参数:原数组(拷贝)
//第二个参数:扩容之后的长度
String[] names = {"张三"};
names = Arrays.copyOf(names, names.length+1);
names[1] = "李四";
System.out.println(Arrays.toString(names));
------------------------------------------------------------
9.数组元素的排序:
冒泡排序:两两比较,大的沉下去,小的浮上来,从小到大
4
23,56,22,15 i 0 j 3
23,22,15,56 1 2
22,15,23 2 1
15,22
选择排序:
23,56,22,15
56,23,22,15
23,22,15
22,15
for(int i = 0;i<3;i++){
for(int j = i+1;j<4;j++){
if(nums[i]<nums[j] {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
}
---------------------------------------------------
10.二维数组[]
声明:
int[][] arrays;
int[] arrays [];
int arrays [][];
创建:
arrays = new int[2][3];
赋值:
arrays[0][2] = 1;
0 0 1
0 0 0
使用数组元素,使用嵌套循环
for(int i = 0;i<arrays.length;i++){
for(int j = 0;j<arrays[i].length;j++){
print(arrays[i][j]+"\t");
}
println();
}
---------------------------------------------
练习:
1.对角线求和
1 2 3 1 [0][0] 3 [0][2]
1 2 2 2 [1][1] 2 [1][1]
3 2 2 2 [2][2] 3 [2][0]
2.矩阵转置
1 2 3 [0][0] [0][1] [0][2]
4 5 6 [1][0] [1][1] [1][2]
1 4 [0][0] [0][1]
2 5 [1][0] [1][1]
3 6 [2][0] [2][1]
3.杨辉三角
1j=0
1j=0 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
特点:每一行的开始和结束都是1;其余位置的元素是计算:
arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
输入一个数字n表示行数,输出对应的前n行
-----------------------------------------------------------
方法:
1.方法的定义
[访问修饰符 修饰符] 方法返回类型 方法名(形参列表){方法体;}
public private 没有修饰符 protected
static
public static
返回类型:无返回值void,有返回值的 任何数据类型
public static void sum(){
System.out.println("求和");
return ; 表示方法结束
}
如果方法有返回值,那么必须有return 返回值;
public static double sum(){
return 1+2.0;
}
public static int[] f(){ return new int[1];}
方法名:同变量名
形参列表:同变量定义,多个参数用,分开
public static int sum(int x,int y){
return x+y;
}
方法体:就是方法完成的功能代码
2.方法的调用
方法名(实参列表)
sum(21,56);
3.方法重载
同一个类(继承关系)
方法名形同,参数列表不同(个数,类型,顺序),一组方法叫方法重载
和方法的返回类型无关
public void f(int x){}
public int f(int y){return 1;}
public void f(int x,int y){return x+y;}
4.值传递
--------------------------------------------
内存:堆,栈,方法区,本地方法栈,寄存器