数组认识
概念
在内存中是一段连续的内存空间,用来存储不同或同种类型的数据
数组的长度
length---从1开始
数组的名字
给数组取的名字
数组的索引
index 从0开始
数组元素
数组中的数据
数组创建
静态创建
创建的时候同时赋值
数据类型[] 变量名 = {v1,v2,v3};
数据类型[] 变量名 = new 数据类型[]{v1,v2,v3};
public class ArrayDemo {
public static void main(String[] args) {
int arr[] = {1,2,3};
String[] strArr = {"hello","你好","我也好"};
int n = strArr.length;
System.out.println("数组的长度为:"+n);
String string = strArr[1];
System.out.println(string);
strArr[2]="2333333333";
System.out.println(strArr[2]);
strArr[3]="我要进去";
}
}
动态创建
创建的时候只指定长度,不赋值
数据类型[] 变量名 = new 数据类型[数组长度];
public class ArrayDemo2 {
public static void main(String[] args) {
int[] arr=new int[6];
int length = arr.length;
arr[0]=3;
arr[1]=9;
arr[2]=6;
arr[3]=12;
arr[4]=6;
arr[5]=16;
System.out.println(length);
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[3]);
System.out.println(arr[4]);
System.out.println(arr[5]);
}
}
public class DefineArray {
public static void main(String[] args) {
int[] arr= {1,2,3};
int[] arr1=new int[] {1,2,3};
int[] arr2=new int[5];
}
}
栈和堆
堆是jvm中最大的一块内存区域
jvm的内存划分
为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
- Jvm的内存划分

栈
用来存放变量的值,基本数据类型存储的是具体的值,引用数据类型存储的是引用地址。
堆
凡事new出来的都会存到堆中,就会产生一个引用地址,可以赋值给一个变量,存储在堆中。
public class ArrayDemo3 {
public static void main(String[] args) {
int[] arr = {3,5,6,2,7,8,4,9,1};
System.out.println(arr);
}
}
数组的遍历方式
方式1:普通for循环
利用数组的索引,长度获取元素
int[] arr={1,2};
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
public class ArrayDemo4 {
public static void main(String[] args) {
int[] arr=new int[] {5,4,8,9,7,2,6,4,7,2,3,1};
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[3]);
System.out.println(arr[4]);
System.out.println(arr[5]);
System.out.println(arr[6]);
System.out.println(arr[7]);
System.out.println(arr[8]);
System.out.println(arr[9]);
System.out.println(arr[10]);
System.out.println(arr[11]);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
System.out.println(arr);
arr=new int[] {21,23,42,1,34,1,22};
System.out.println(arr);
}
}
方式2:foreach
语法:
for(数据类型 变量名:数组名){
}
变量名:代表数组中的每一个元素
int[] arr={1,2};
for(int e:arr){
System.out.println(e);
}
public class ArrayDemo5 {
public static void main(String[] args) {
int[] arr=new int[] {5,4,8,9,7,2,6,4,7,2,3,1};
for (int i : arr) {
System.out.println(i);
}
}
}
练习
public class ArrayPractice {
public static void main(String[] args) {
int[] arr = new int[] {1,4,7,2,5,8,3,6,9,69,96};
int count=0;
for (int i : arr) {
if(i%3==0) {
count++;
if(count==2){
System.out.println(i);
break;
}
}
}
count=0;
for (int i = 0; i < arr.length; i++) {
if(arr[i]%3==0) {
count++;
if(count==4) {
System.out.println(i);
break;
}
}
}
}
}
import java.util.Arrays;
public class ArrayPractice2 {
public static void main(String[] args) {
int[] arr = new int[] {1,4,7,2,5,158,3,6,9,69,96};
int max=arr[0];
for(int i : arr) {
if(i>max) {
max=i;
}
}
System.out.println(max);
int[] arr1= {3,6,9};
System.out.print("[");
for (int i = 0; i < arr1.length; i++) {
if(i==0) {
System.out.print(arr1[i]);
}else {
System.out.print(","+arr1[i]);
}
}
System.out.println("]");
String str="[";
for (int i = 0; i < arr1.length; i++) {
if(i==arr1.length-1) {
str+=arr1[i]+"]";
}else {
str+=arr1[i]+",";
}
}
System.out.println(str);
str=Arrays.toString(arr1);
System.out.println(str);
char[] cArr= {'a','c','b'};
System.out.println(cArr);
}
}