Java学习第四课

Java学习第四课

快开学了,第四课

1.函数

1.1定义

函数也称为方法,是定义在类里的一段小程序.

1.2格式

1
2
3
4
5
6
7
8
9
修饰符 返回值类型 函数名(参数类型 形式参数1, 参数类型 形式参数2,......)
{
执行语句;
return 返回值;
}
//使用时:
public static void main(String[] args){
函数名(参数一,参数二);
}

1.3详细

  • 函数命名一般是首单词首字母小写,后面单词首字母大写

  • 功能没有具体返回值时,可以直接return;,因为没有具体值,所以**不可以写具体的数据类型,**所以要用关键字void来解决,同时可以省略return;

  • 函数可以让我们自定义一些功能,提高了代码的复用性

  • 函数中只能调用函数,不能定义一个函数,

  • 重载: 在同一个类中,允许存在同名函数,只要函数参数类型不同或者个数不同

2.数组

2.1定义

2.2格式

1
2
3
4
5
6
7
//数组元素类型[] 数组名字 = new 元素类型[数组长度];
int[] arr = new int[5];
arr[0] = 3;
//数组创建后默认每个数据初始为0
//数据编号从0开始,0,1,2,3······
int[] arr = new int[]{};
int[] arr = {};

内存的划分

  1. 寄存器

  2. 本地方法区

  3. 方法区

  4. 栈内存

    储存局部变量,变量的作用域一结束该变量就会被释放.

  5. 堆内存

    存储对象,(属于实体)

    每一个实体都有地址值

    每类实体都有着不同的默认值,整数是0,小数是0.0或者0.0f,布尔是false,char是\u0000

2.3 注意

1
2
3
4
5
6
7
8
int[] arr = new int[3];
/*
此时堆内存会给数组开辟空间,此空间可以用其地址值表示,同时会在栈内存开辟空间储存数组变量arr并将新建数组的地址值赋给他.
*/
arr = null;
/*
此时变量arr指向为空.同时堆内存中的数组空间被标记为垃圾.
*/

3. 数组操作

3.1 遍历

1
2
3
4
5
6
7
8
9
10
11
12
13
int[] arr ={95,56,89,98,53};
//for循环遍历
for(int n =0;n<arr.length;n++){
System.out.println(arr[n]);
}
//for倒序遍历
for (int x=arr.length-1;x>=0;x--){
System.out.println(arr[x]);
}
//foreach
for (int i : arr) {
System.out.println(i);
}

3.2 最值

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
public class FindMax {
public static void main(String[] args){
int[] arr ={38,39,-12,99,99,3948,2,4,0};
int m = getMax(arr);
int n = getMaxIndex(arr);
System.out.println(m+" "+n);
}
public static int getMax(int[] arr){
int max = arr[0]; //定义变量用于记录比较结果
for (int x = 0;x<arr.length;x++){ //遍历数组
if (arr[x]>max){ //比较
max = arr[x];
}
}
return max;
}
public static int getMaxIndex(int[] arr){
int maxIndex = 0;
for (int x = 0;x<arr.length;x++){
if (arr[x]>arr[maxIndex]){
maxIndex = x;
}
}
return arr[maxIndex]; //也可以返回maxIndex
}
}

3.3 选择排序

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
/*选择排序
*
*
*
*
*
*/
public class Sort {
public static void main(String[] arge){
int[] arr = {34,27,91,0,-3,23};
selectSort(arr); //调用函数
}
public static void selectSort(int[] arr){ //无返回值,因为数组是指向内存的
for (int x = 0; x<arr.length-1;x++){ //遍历数值前n-1个数
for (int y =x+1 ;y<arr.length;y++){ //接着遍历比较大小
if (arr[x]>arr[y]){ //交换位置
int t =arr[x];
arr[x]=arr[y];
arr[y]=t;
}
}
}

}
}
public static void selectSort2(int[] arr){
for(int x = 0;x<arr.length-1;x++){
int m = arr[x];
int index= x;
for (int y = x+1;y<arr.length;y++){
if (m>arr[y]){
m = arr[y];
index = y;
}
}
if (index!=x)
swap(arr,index,x);
}
}

3.4 冒泡排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public static void arrBubbleSort(int[] arr){
for (int x = 0;x<arr.length-1;x++){ //规定遍历次数
for (int y = 0;y<arr.length-1-x;y++){ //
if (arr[y]>arr[y+1]){
int t = arr[y];
arr[y] = arr[y+1];
arr[y+1]=t;
}
}
}
}
public static void arrBubbleSort2(int[] arr){
for (int x = arr.length-1;x>0;x--){
for (int y = 0;y<x;y++){
if (arr[y]>arr[y+1]){
int t = arr[y];
arr[y] = arr[y+1];
arr[y+1]= t;
}
}
}
}

3.5 swap

1
2
3
4
5
public static void swap (int[] arr,int a, int b){
int t = arr[a];
arr[a] = arr[b];
arr[b] = t;
}

3.6 查找

评论