java数组
1.数组:是一种数据结构,用来储存同一种类型的集合
2.特点:通过一个整形下标可以访问数组中的每一个值
3.定义格式:
A:数据类型 [] 数组名 ;(一般用这个)
B:数据类型 数组名 [] ;
4.数组的初始化
A:动态初始化
只给长度,系统给出默认值
举例:int [] arr = new int[3]
下图是动态初始化的内存图解
B:静态初始化
给出值,系统决定长度
举例:int [] arr = new int[]{1,2,3};
简化版:int [] arr = {1,2,3};(建议这一种)
下图是静态初始化的内存图解
5.java的内存分配
A:栈.储存局部变量
B:堆.存储所有new出来的
C:方法区
D:本地方法区(系统相关)
E: 寄存器(cpu使用)
注意:
a:局部变量 在方法定义中或者方法声明上定义的变量
b:堆内存和栈内存的区别
栈:数据使用完毕,就消失
堆:每一个new出来的东西都有地址
每一个变量都有默认值
byte,short,int,long 0
float,double 0.0
char '\u0000'
boolean false
引用类型 null
数据使用完毕后,在垃圾回收器空闲的时候回收。
上面已经有了定义一个数组,下面我列出来两个数组和三个数组的
两个栈变量指向了同一个堆内存,所以,都可以修改这个堆内存的数据
6.数组常见的遍历操作
A:遍历
方式1:
public static void printArray(int[] arr) {
for(int x=0; x<arr.length; x++) {
System.out.println(arr[x]);
}
}
方式2:
public static void main(String[] args) {
int [] arr = new int[]{1,2,3};
//在最前面加上[
System.out.print("[");
for(int x = 0;x < arr.length;x++){
//如果遍历到了最后一个数组,加上]
if(x == arr.length-1){
System.out.print(arr[x]+"]");
}else{
//否则输出一个后面加一个,
System.out.print(arr[x]+",");
}
}
方式3:
for each循环(增强for)
int [] arr = {10,20,30,40,50};
for (int i : arr) {
System.out.print(i+",");
}
}
方式4:
(补充)利用Arrays的toString方法,返回一个包含数组元素的字符串,这些元素被放置在括号内,用逗号分隔
int [] arr = {10,20,30,40,50};
System.out.println(Arrays.toString(arr));
}
}
B:最值
最大值
public static int getMax(int[] arr) {
int max = arr[0];
for(int x=1; x<arr.length; x++) {
if(arr[x] > max) {
max = arr[x];
}
}
return max;
}
最小值:
public static int getMin(int[] arr) {
int min = arr[0];
for(int x=1; x<arr.length; x++) {
if(arr[x] < min) {
min = arr[x];
}
}
return min;
}
C:逆序
方式1:
int [] arr = {10,20,30,40};
System.out.println("遍历前");
for(int x = 0;x < arr.length;x++ ){
System.out.print(arr[x]+",");
}
System.out.println();
for(int start = 0, end = arr.length-1;start<=end;start++,end--){
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
System.out.println("逆序后");
for(int x = 0;x < arr.length; x++){
System.out.print(arr[x]+",");
}
}
}
方式2:
public static void main(String[] args) {
int [] arr = {10,20,30,40};
//遍历前
System.out.println("遍历前");
for(int x =0;x<arr.length;x++){
System.out.print(arr[x]+",");
}
System.out.println();
for(int x = 0;x < arr.length/2;x++){
int temp = arr[x];
arr[x] = arr[arr.length-1-x];
arr[arr.length-1-x] = temp;
}
//逆序后
System.out.println("逆序后");
for(int x = 0; x<arr.length;x++){
System.out.print(arr[x]+",");
}
}
}
D:基本查找
方式1:
public static void main(String[] args) {
int [] arr = {10,20,30,40};
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//提示
System.out.println("请输出你要查询的数字");
int x = sc.nextInt();
for(int y = 0 ;y<arr.length;y++){
if(x==arr[y]){
System.out.println(y);
}
}
C:快速排序
要想对数值型数组进行排序,可以使用Arrays类中的sort方法
int [] arr = {15,20,14,60,40};
//使用Arrays.sort快速排序
Arrays.sort(arr);
//使用Arrays.toString打印数组
System.out.println(Arrays.toString(arr));