数组与方法

本文详细介绍了Java中的数组,包括定义、初始化、动态与静态初始化的区别、数组元素访问、内存分配以及常见的数组操作问题。此外,还讲解了二维数组的定义、格式、输出方法、初始化方式,并通过实例展示了杨辉三角的实现。最后,简单提及了方法的概念、格式、调用方式以及方法重载的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、数组
1. 定义
数组是存储多个相同类型数据的集合。

2. 格式
数据类型 [ ] 变量名
示例:int [] arr

3. 数组初始化的方式
(1)动态初始化
定义:在初始化数组时只给定数组的长度,不给定具体的数值。

格式:数据类型[] 变量名=new 数据类型[数组长度]
代码如下(示例):

int[] arr=new int[5];
1
(2)静态初始化
定义:在初始化数组时不给定数组的长度,给定具体的数值,让计算机自己算出长度。通常会用到length,具体用法见下面。

代码如下(示例):

int[] arr={1,2,3,4,5,6};
int a=arr.length;//这个就是求长度的代码
1
2
两者初始化的区别:在定义的时候是否写出具体的长度。

4. 数组的元素访问
数组变量访问:数组名
数组內部数据的访问:数组名[索引]

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

5. 内存分配
栈内存:存储局部变量,定义在方法中的变量,例如:arr;使用完毕,立即消失

堆内存:存储new出来的内容(实体,对象)
数组在初始化时,会为存储空间添加默认值
整数:0
浮点数:0.0
布尔:false
字符:空字符
引用数据类型:null
每一个new出来的东西都有一个地址值
使用完毕,会在垃圾回收器空闲时被回收

6. 数组操作的两个常见小问题
(1)索引越界
代码中访问的索引超出范围;
代码如下(示例):

int[] arr={1,2,3,4,5,6};
int a=arr[6];错误
int b=arr[1];//0~5都可以
1
2
3
(2)空指针异常
访问的数组已经不指向之前的堆内存的数据
代码如下(示例):

int[] arr = new int[3];
System.out.println(arr[2]);//把 null赋值给数组
arr = null;//输出元素         
System.out.println(arr[0]);
1
2
3
4
二、二维数组
1. 定义
存储多个一维数组。

2. 格式
数据类型 [ ][ ] 变量名
示例:int[][] arr
二维数组的声明有多种;例如,int[][] y;int[] y[]; int y[][]

3. 输出二维数组
代码如下(示例):

int[][] arr={{1,2,3},{4,5,6}};
for(int i=0;i<arr.length;i++){
    for(int j=0;j<arr[i].length;j++){
        System.out.print(arr[i][j]+"\t");
    }
    System.out.println();//换行
}
1
2
3
4
5
6
7
4. 二数组的动态初始化
格式:数据类型 [ ][ ] 变量名=new 数据类型[ ][ ]

代码如下(示例):

int[][] arr=new int[5][5];
1
注意:每次都要判断(int[ x ][ y])中x是否存在。判空的操作。

5. 实例:杨辉三角
代码如下(示例):

public class project1 {
    public static void main(String[] args) {
        int yanghui[][]=new int[10][];
        for (int i=0;i<yanghui.length;i++){
            yanghui[i]=new int[i+1];
            for (int j=0;j<yanghui[i].length;j++){
                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();
        }

    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
三、方法
1. 定义
将具有独立功能的代码组织成为一个整体,使其具有特殊功能的代码集。

2. 格式
public static void 方法名(){
//方法体
}

3. 方法的调用
格式:方法名();
例如:arr();
方法必须是先定义后调用,否则程序报错。

(1)带参数的方法
格式:
public static void 方法名(参数){…}
单个参数:public static void 方法名(数据类型 变量名){…}
多个参数:public static void 方法名(数据类型 变量名1,数据类型 变量名2,…){…}
调用:方法名(参数)

(2)带返回值的方法
格式:
public static 数据类型 方法名(参数){
return 数据;
}
调用:数据类型 变量=方法名(参数);

3. 方法重载
(1)定义
方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。 

(2)方法重载的运用:
多个方法在同一个类中。 
多个方法具有相同的方法名。 
多个方法的参数不相同,类型不同或者数量不同。
————————————————
版权声明:本文为优快云博主「^_^白心火龙果」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/m0_51064043/article/details/120145178

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值