Java-一维数组,二维数组及内存分配

一.一维数组
(一)一维数组定义格式
格式1: 数据类型[] 数组名;
格式2: 数据类型 数组名[];
举例:
int[] a; 定义了一个int类型的数组a;
int a[]; 定义了一个int类型的a数组;
推荐使用第一种定义方式。
(二)一维数组的初始化
Java中的数组必须先初始化,然后才能使用
(1)初始化的分类:
a:动态初始化: 只指定长度,由系统给出初始化值
b:静态初始化: 给出初始化值,由系统决定长度
注意事项: 这两种方式,只能使用一种,不能进行动静结合
(2)动态初始化的格式:
数据类型[] 数组名 = new 数据类型[数组长度];
(3)静态初始化的格式:
格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
举例: int[] arr = new int[]{1,2,3};
简化格式:
数据类型[] 数组名 = {元素1,元素2,…};
举例: int[] arr = {1,2,3};
(三)Java中的内存分配以及栈和堆的区别
A:栈: 存放的是局部变量
局部变量:在方法定义中或者方法声明上的变量都是局部变量。
B:堆: 存放的是所有new出来的东西
特点:
a: 每一个new出来的东西都会为其分配一个地制值。
b: 每一个变量都有一个默认的值
byte,short,int,long – 0
float,double – 0.0
char – ‘\u0000’
boolean – false
引用数据类型 – null
c: 使用完毕就变成了垃圾,等待垃圾回收器对其回收
C:方法区:(面向对象部分讲解)
D:本地方法区:(和系统相关)
E:寄存器:(cpu使用)
(四)a:ArrayIndexOutOfBoundsException:数组索引越界异常
原因:你访问了不存在的索引。
b:NullPointerException:空指针异常
原因:数组已经不在指向堆内存了。而你还用数组名去访问元素。
三.一维数组案例演示。
对输入的一维数组的n个元素进行大小顺序排列并输出(经典冒泡排序)。
public class mytext {
int num = 3;
public static void main(String[] args) {
Scanner scanner=new Scanner ( System.in );
System.out.println (“请输入数组长度n(即数组有多少个元素):”);
int n=scanner.nextInt ();
int[]arr=new int[n];
for (int m=1;m<=n;m++){
System.out.println (“请输入第”+m+“个数:”);
arr[m-1]=scanner.nextInt ();
}
for (int i=1;i<=n;i++){
for(int j=1;j<=n-i;j++){
if(arr[j-1]<=arr[j]){
arr[j-1]=arr[j-1]+arr[j]-(arr[j]=arr[j-1]);
}
}
}
System.out.println (Arrays.toString ( arr ));
}
}
四.二维数组
(一)A:二维数组格式1
数据类型[][] 变量名 = new 数据类型[m][n];
m表示这个二维数组有多少个一维数组
n表示每一个一维数组的元素个数
举例:
int[][] arr = new int[3][2];
定义了一个二维数组arr
这个二维数组有3个一维数组,名称是arr[0],arr[1],arr[2]
每个一维数组有2个元素,可以通过arr[m][n]来获取
表示获取第m+1个一维数组的第n+1个元素
B:注意事项
A:以下格式也可以表示二维数组
a:数据类型 数组名[][] = new 数据类型[m][n];
b:数据类型[] 数组名[] = new 数据类型[m][n];
这两种格式不推荐使用
(二)二维数组举例
定义一个二维数组,输出二维数组的名称和二维数组的的每一个一维数组,然后动态给二维数组赋值一维数组
再次输出二维数组中的每一个一维数组,给二维数组中的元素赋值,输出对应的元素值

public class example {
int num = 3;
public static void main(String[] args) {
int [][]arr=new int [3][];
arr[0]=new int[2];
arr[1]=new int[3];
arr[2]=new int[4];
System.out.println (arr);
System.out.println (arr[0]);
System.out.println (arr[1]);
System.out.println (arr[2]);
arr[0][0]=5;
arr[0][1]=6;
arr[1][0]=7;
arr[1][1]=8;
arr[1][2]=9;
arr[2][0]=10;
arr[2][1]=11;
arr[2][2]=12;
arr[2][3]=13;
for (int i=0;i<=2;i++){
for(int j=0;j<=i+1;j++){
System.out.println (arr[i][j]);
}
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值