我是靠谱客的博主 幸福路灯,这篇文章主要介绍小白的过关之路--数组与方法数组方法Debug,现在分享给大家,希望可以做个参考。

小白的过关之路--数组与方法

  • 数组
    • 一维数组
      • 数组概念及定义格式
      • 数组初始化概述
      • 数组动态初始化
      • 数组元素访问及内存分配
      • 数组静态初始化
      • 数组操作常见小问题及常见操作
    • 二维数组
      • 案例:杨辉三角
  • 方法
    • 方法概述
    • 方法的定义和调用
    • 带参数方法的定义和调用
    • 带返回值方法的定义和调用
    • 方法的注意事项
    • 方法重载
    • 方法的参数传递
  • Debug
    • 概述
    • 操作流程

数组

一维数组

数组概念及定义格式

         数组: 是一种用于存储多个相同类型数据的存储模型


         定义格式:
格式一:数据类型[ ] 变量名
范例:              int[ ] arr
定义了一个int类型的数组,数组名是arr

格式二:数据类型 变量名[ ]
范例:             int   arr[ ]
定义了一个int类型的变量,变量名是arr数组

数组初始化概述

Java中的数组必须先初始化,然后才能使用

初始化 :就是为数组中的数组元素分配内存空间,并为每个数组元素赋值

数组动态初始化

动态初始化:初始化时只指定数组长度,由系统为数组分配初始值

格式:数据类型 [ ] 变量名 = new 数据类型[数组长度];
范例:           int[ ] arr = new int[3];

数组元素访问及内存分配

元素访问


数组变量的访问方式
格式 :数组名

数组内部保存的数据的访问方式
格式:数组名[索引]

索引是数组中数据的编号方式
作用:索引用于访问数组中的数据使用,数组名[索引]等同于变量名,是一种特殊的变量名
特征①:索引从0开始
特征②:索引是连续的
特征③:索引逐一增加,每次加1


内存分配


        Java程序在运行时,需要在内存中分配空间。为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。

         数组在初始化时,会为存储空间添加默认值
整数:默认值0
浮点数:默认值0.0
布尔值:默认值false
字符:默认值是空字符
引用数据类型:默认值是null

栈内存:存储局部变量
定义在方法中的变量,例如:arr
使用完毕,立即消失
堆内存:存储new出来的内容(实体,对象)

         每一个new出来的东西都有一个地址值。使用完毕,会在垃圾回收器空闲时被回收

数组静态初始化

静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度
格式:数据类型[ ] 变量名 = new 数据类型[ ] {数据1,数据2,数据3,…};
范例:          int[ ] arr= new int[ ] {1,2,3};

简化格式:数据类型[ ] 变量名 = {数据1,数据2,数据3,…};
范例:                  int[ ] arr = {1,2,3};

数组操作常见小问题及常见操作

常见小问题
索引越界:访问了数组中不存在的索引对应的元素,造成索引越界问题
空指针异常:访问的数组已经不再指向堆内存的数据,造成空指针异常
常见操作
遍历:获取数组中的每一个元素输出在控制台。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package itheima_05; /* 遍历 获取数组中的每一个元素输出在控制台 获取数组元素 数组名.length */ public class ArrayTest01 { public static void main(String[] args) { //定义数组 int[] arr = {11,22,33,44,55}; //使用通用的遍历格式 for(int x = 0; x<arr.length; x++) { System.out.println(arr[x]); } } }

二维数组

案例:杨辉三角

复制代码
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package Han; public class YangHui { //编写一个main方法 public static void main(String[] args) { /* 使用二维数组打印一个10行杨辉三角 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 规律: 1.第一行有1个元素,第n行有n个元素 2.每一行的第一个元素和最后一个元素都是1 3.从第三行开始,对于非第一个元素和最后一个元素的元素的值.arr[i][j] arr[i][j] = arr[i-1][j] + arr[i-1][j-1];//必须找到这个规律 */ //因为要打印10行数字,相当于有10个一维数组,所以i=10,但是每一个一维数组中的元素是不确定的所以j先不写 int[][] yangHui = new int[10][]; //遍历yangHui的每个元素 for(int i = 0; i < yangHui.length; i++) { //给每个一维数组(行)开辟空间 yangHui[i] = new int[i+1]; //给每个一维数组(行)赋值 for(int j = 0; j < yangHui[i].length; j++) { //每一行的第一个元素和最后一个元素都是1 if(j == 0 || j == yangHui[i].length - 1) { yangHui[i][j] = 1; }else {//中间的元素 yangHui[i][j] = yangHui[i-1][j] + yangHui[i-1][j-1]; } } } //输出杨辉三角 //还要遍历 for(int i =0; i < yangHui.length; i++) { for(int j = 0; j < yangHui[i].length; j++) {//遍历输出该行 System.out.print(yangHui[i][j] + " "); } //换行 System.out.println(); } } }

方法

方法概述

方法:是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集。

注意
①:方法必须先创建才可以使用,该过程称为方法定义。
②:方法创建后并不是直接运行的,需要手动使用后才执行,该过程称为方法调用。

方法的定义和调用

方法定义
格式:public static void 方法名(){
//方法体
}

范例:public static void isEvenNumber(){
//方法体
}


方法调用
格式: 方法名();
范例:isEvenNumber();
isEvenNumber判断数值是否是偶数

注意
①:方法必须先定义后调用,否则程序将报错

②:定义完方法需要在main方法里进行调用

带参数方法的定义和调用

方法定义

格式:public static void 方法名(参数) {… …}

格式(单个参数):public static void 方法名 (数据类型 变量名) {… …}
范例(单个参数):public static void isEvenNumber(int number) {… …}

格式(多个参数):public static void 方法名 (数据类型 变量名1,数据类型 变量名2) {… …}
范例(多个参数):public static void getMax (int number1,int number2) {… …}

注意
1.方法定义时,参数中的数据类型与变量名都不能缺少,缺少任意一个程序将报错
2.方法定义时,多个参数之间使用逗号(,)分隔


方法调用

格式:方法名(参数);

格式(单个参数):方法名(变量名/常量值);
范例(单个参数):isEvenNumber(5);

格式(多个参数):方法名(变量名1/常量值1,变量名2/常量值2);
范例(多个参数):getMax(5,6);

注意
方法调用时,参数的数量与类型必须与方法定义中的设置相匹配,否则程序将报错


形参和实参
形参:方法定义中的参数
等同于变量定义格式,例如:int number

实参:方法调用中的参数
等同于使用变量或常量,例如: 10 number

带返回值方法的定义和调用

方法定义

格式:public static 数据类型 方法名(参数) {
return数据;
}

范例1:public static boolean isEvenNumber (int number) {
return true;
}

范例2:public static int getMax(int a, int b) {
return 100;
}

注意
方法定义时return后面的返回值与方法定义上的数据类型要匹配,否则程序将报错


方法调用

格式1:方法名(参数);
范例:isEvenNumber(5);

格式2:数据类型 变量名 = 方法名(参数);
范例:boolean flag = isEvenNumber(5);

注意:方法的返回值通常会使用变量接收,否则该返回值将无意义

方法的注意事项

注意事项
1:方法不能嵌套定义(方法是平级关系,不可以嵌套)
2:void表示无返回值,可以省略return,也可以单独的书写return,后面不加数据

定义方法时,要做到两个明确
明确返回值类型:主要是明确方法操作完毕之后是否有数据返回,如果没有,写void;如果有,写对应的数据类型
明确参数:主要是明确参数的类型和数量
调用方法时
void类型的方法,直接调用即可
非void类型的方法,推荐用变量接收调用

方法重载

方法重载概述
方法重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重载
1.多个方法在同一个类中
2.多个方法具有相同的方法名
3.多个方法的参数不相同,类型不同或者数量不同
方法重载特点
1.重载进对应方法的定义,与方法的调用无关,调用方式参照标准格式
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
27
28
29
30
31
32
33
34
package itheima_05; /* 方法重载: 多个方法在同一个类中 多个方法具有相同的方法名 多个方法的参数不相同,类型不同或者数量不同 方法重载与返回值无关 在调用的时候,Java虚拟机会通过参数的不同来区分同名的方法 */ public class MethodDemo { public static void main(String[] args) { //调用方法 int result = sum(10,20); System.out.println(result); double result2 = sum(10.0,20.0); System.out.println(result2); int result3 = sum(10,20,30); System.out.println(result3); } //需求1:求两个int类型数据和的方法 public static int sum(int a, int b) { return a + b; } //需求2:求两个double类型数据和的方法 public static double sum(double a, double b) { return a + b; } //需求3:求三个int类型数据和的方法 public static int sum(int a, int b, int c) { return a + b + c; } }

方法的参数传递

基本类型:对于基本数据类型的参数,形式参数的改变,不影响实际参数的值


代码演示

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package itheima_06; /* 对于基本数据类型的参数,形式参数的改变,不影响实际参数的值 */ public class ArgsDemo01 { public static void main(String[] args) { int number = 100; System.out.println("调用change方法前:" + number); change(number); System.out.println("调用change方法后:" + number); } public static void change(int number) { number = 200; } } 方法定义中的“number”再怎么改变,最后输出的还是方法调用中的“number”

引用类型: 对于引用类型的参数,形式参数的改变,影响实际参数的值


代码演示

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package itheima_06; /* 对于引用类型的参数,形式参数的改变,影响实际参数的值 */ public class ArgsDemo02 { public static void main(String[] args) { int[] arr = {10, 20, 30}; System.out.println("调用change方法前" + arr[1]); change(arr); System.out.println("调用change方法后" + arr[1]); } public static void change(int[] arr) { arr[1] = 200; } } 引用类型我们在方法定义中改变了这个数组中的数值,所以说最后输出的内容会是被我们改变了的数值

Debug

概述

Debug:是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序

操作流程

        Debug调试,又被称为断点调试,断电其实是一个标记,告诉我们从哪里开始查看

① 如何加断点
选择要设置断点的代码行,在行号的区域后面单击鼠标左键即可

② 如何运行加了断点的程序
在代码区域右键Debug执行

③ 看哪里
看Debugger窗口,看Console窗口

④ 点哪里
点Step Into(F7)这个箭头,也可以直接按F7
弄完后点stop结束

⑤ 如何删除断点
选择要删除的断点,单击鼠标左键即可
如果是多个断点,可以每一个再点击一次,也可以一次性全部删除

最后

以上就是幸福路灯最近收集整理的关于小白的过关之路--数组与方法数组方法Debug的全部内容,更多相关小白内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(68)

评论列表共有 0 条评论

立即
投稿
返回
顶部