Java笔记之数组与方法

本文详细介绍了Java中的数组概念,包括定义、初始化、动态与静态初始化、元素访问、内存分配以及常见的数组操作如遍历、获取最值、数组扩充、倒序和元素交换。此外,还讲解了方法的定义、调用、形参与实参、返回值以及方法重载的原理。最后,简述了debug工具的使用,包括断点设置、程序执行流程查看等。
摘要由CSDN通过智能技术生成

提示:本篇文章为学习笔记


一、数组

数组(array)是一种用于存储多个相同类型的数据的存储模型。

1.数组的定义格式

  • 格式1:数据类型[ ] 变量名(推荐)
int[] arr;
  • 格式2:数据类型 变量名[ ]
int arr[];

2.数组初始化之动态初始化

Java中的数组必须先初始化,然后才能使用。初始化是指为数组中的每个元素分配空间并赋值。

  • 动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。
    格式1:数据类型[ ] 变量名 = new 元素类型[数组长度]

    int[] arr = new int[5];
    nums = {1,2,3,4,5};
    
  • 静态初始化:初始化时指定每个元素的初始值,由系统决定数组长度。
    格式2:元素类型[ ] 变量名 = new 元素类型[ ]{元素1,元素2……} (全定义)

    int[] arr = new int[5]{1,2,3,4,5};
    

    格式3:元素类型[ ] 变量名 = {元素1,元素2……} (简化定义)

    int[] arr = {1,2,3,4,5};
    

3.数组元素访问

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

数组内部的元素访问
格式:数组名[索引]

4.内存分配

  • 栈内存:存储局部变量
    使用完毕后会立即消失

  • 堆内存:存储new出来的内容(实体、对象)
    使用完毕后会在垃圾回收器空闲时回收

5.多个数组指向相同内存地址

我们可以定义一个数组来承接之前的数组,即是说用将之前的数组赋值给后定义的数组这样它们指向的就是相同的内存地址,修改后定义的数组的元素,之前定义好的数组的元素就会相应的发生改变。

6.数组操作的常见问题

  • 索引越界:访问数组中不存在的索引对应的元素,造成索引越界的问题。
  • 空指针异常:访问的数组已经不再指向堆内存中的数据,造成空指针异常。
    (null:空值,引用数据类型的默认值,表示不指向任何有效对象。)

7.数组常见操作

7.1 遍历

获取数组中的每个元素

  • 获取数组元素的数量
    格式:数组名.length

7.2 获取最值

获取数组中的最大值或最小值

思路:
//1.定义一个变量,用于保存最大值(或最小值)
int max;
//2. 取数组中的第一个数据作为变量的初始值
max = arr[0];
//3. 与数组中的数据进行逐个比对,每次保留最大值(或最小值)
for(int i=1;i<arr.length;i++){
	if(max < arr[i]){
	max = arr[i];
	}
}

7.3 数组扩充

		int[] nums = {1,11,22};
        //因为数组一旦定义长度后就不能修改
        int[] newNums = new int[nums.length * 2 ];
        for (int i=0;i<nums.length;i++){
            newNums[i] = nums[i];
        }
        //旧数组引用新数组
        nums = newNums;
        for (int i=0;i<nums.length;i++){
            System.out.println(nums[i]);
        }

7.4 数组倒序

		int[] nums = new int[]{1,3,89,23,11,33};
        //遍历一半是因为倒序就是前后位置两两对应交换
        for (int i=0;i<nums.length / 2;i++){
            int temp = nums[nums.length-1-i];
            nums[nums.length-1-i] = nums[i];
            nums[i] = temp;
        }

7.5 数组元素交换

		int[] nums = {1,11,22}; 
        int temp = nums[2];
        nums[2] = nums[0];
        nums[0] = temp;

二、方法

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

  • 方法需要先创建才能使用,称为方法的定义;
  • 方法需要手动执行,称为方法的调用。

1.方法的定义

格式:

public static void 方法名(){
	//方法体
}

//单个参数方法定义
public static void 方法名(数据类型 参数名){ }

//多个参数方法定义
public static void 方法名(数据类型 参数名1,数据类型 参数名2,……){ }

//带返回值的方法定义
public static 数据类型 方法名(参数){
	return 数据;
}

注意:多个参数之间使用逗号分隔。

2.方法的调用

格式:

方法名();

//单个参数
方法名(数据类型 参数名);

//多个参数
方法名(数据类型 参数名1,数据类型 参数名2,……);

注意:参数的个数和类型应与定义时的个数和类型相匹配。

3.形参和实参

  • 形参:方法定义时放入的参数
  • 实参:方法调用时传入的参数

4.带返回值方法和调用

格式:

public static 数据类型 方法名(参数){
	return 数据;
}
//数据类型与数据之间要匹配

调用格式:

1.方法名(参数);

2.数据类型 变量名 = 方法名(参数);

5.方法的注意事项

  • 方法不能嵌套定义
  • void表示该方法无返回值,若书写return则后面不能跟数据

6.方法重载

6.1 方法重载的概述

方法重载指同一个类中定义的多个方法之间的关系,满足如下条件,则构成方法的重载:

  • 多个方法在同一个类中
  • 多个方法拥有相同的方法名
  • 多个方法的参数不同、数量不同或者类型不同

6.2 方法重载的特点

  • 重载对应方法的定义,与方法的调用无关。
  • 重载仅针对同一个类中方法的名称与方法的参数进行识别,与方法的返回值无关,即是说不能通过方法的返回值来确定方法是否进行了重载。

7.方法的参数传递

7.1 基本类型的参数传递

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

7.2 引用类型的参数传递

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

三、debug工具*

1.debug介绍

debug:是供程序调试的工具,可以用于查看程序的执行流程,也可以用于追踪程序执行流程来调试程序。

2.debug操作流程

debug调试,又称为断点调试。可以查看程序执行流程和方法调用。

1. 如何加断点:
在选择需要调试的地方,在行号后面的区域单击鼠标左键。

2. 加断点后怎样运行程序:
在代码区域单击鼠标右键的debug。

3. 在哪看程序执行流程:
程序运行后,看debuger窗口。还要看Console窗口了解程序的运行结果。

4. 如何向下执行:
点F7的小箭头,或者按F7键。执行完后,点stop结束。

5. 删除断点:
选择要删除的断点,单击左键即可。

加油!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值