数组
一维数组:储存多个变量的容器
数据类型[ ] 数组名={ }
数据类型[ ] 数组名=[ ]
int [ ] arr=new int[3]
public class Test1 {
public static void main(String[] args) {
int[] []arr=new int [3];//创建一维数组
arr[0]=12;//数组元素赋值
arr[1]=31;
...
int a=arr[0];//赋值
System.out.println(arr[0]);
System.out.println(a);
}
}
二维数组:数组元素为一维数组
数据类型[ ] [ ] 数组名={ }
数据类型[ ] [ ] 数组名=[ ] [ ]
int [ ] [ ] arr=new int[3] [2]
//3表示二维数组的长度
//2表示二维数组里每一个一维数组的长度
public class Test1 {
public static void main(String[] args) {
int[] []arr=new int [3][2];
arr[0][0]=12;
arr[0][1]=31;
int a=arr[0][1];//赋值
arr[1][0]=14;
arr[1][1]=37;
arr[2][0]=17;
arr[2][1]=38;
System.out.println(arr[0][0]);
System.out.println(a);
}
}
内存分配
在Java虚拟机中,执行Java程序过程中,把内存分为不同的数据区域
栈:存放局部变量
堆:存放成员变量(new出来的东西)
画出内存图
public class Test {
public static void leftshift(int i, int j) {
i+=j;
}
public static void main(String[] args) {
int i = 4, j = 2;
leftshift(i, j);
System.out.println(i);
}
}
数组中常见小问题
a:ArrayIndexOutOfBoundsException:数组索引越界异常
原因:你访问了不存在的索引。
b:NullPointerException:空指针异常
原因:数组已经不在指向堆内存了。而你还用数组名去访问元素。
练习:
1、for循环(打印出100以内,能被3整除的所有数)
class A {
public static void main(String[] args) {
for(int i=0;i<=100;i++){
if(i%3==0){
System.out.println("被3整除的数:"+i);
}
}
}
}
2、将下面的数组元素 反向打印 int[] arr = {11,22,33,44,55}; 打印的结果为: [55,44,33,22,11]
class B {
public static void main(String[] args) {
int[] arr={11,22,33,44,55};
for(int i=arr.length-1;i>=0;i--){
System.out.println(arr [i]);
}
}
}
3、将下面的数组元素前后互换 [11, 32,55, 47,79,23] 置换后的数组元素为: [23, 79, 47, 55, 32, 11]
class B {
public static void main(String[] args) {
int[] arr={11,32,55,47,55,79,23};
int j=0;
for(int i=0;i<arr.length/2;i++){
j=arr[i];
arr[i]=arr[arr.length-1-i];
arr[arr.length-1-i]=j;
}
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+",");
}
}
}
4、在数组中 查询数据55第一次出现的位置,打印第一次出现的位置 [11, 32,55, 47,55, 79,23]
class B {
public static void main(String[] args) {
int[] arr={11,32,55,47,55,79,23};
for(int i=0;i<arr.length;i++){
if(arr[i]==55 ){
System.out.println("第一次出现的位置是:"+i);
break;
}
}
}
}
5、编写方法,获取到数组中最大的元素,返回该元素的值
class C {
public static void main(String[] args) {
int arr[]={11,32,55,47,55,79,23};
get(arr);
System.out.println(get(arr));
}
public static int get(int arr[]){
int j=arr[0];
for(int i=1;i<arr.length;i++){
if(j<arr[i]){
j=arr[i];
}
}
return j;
}
}