Java学习笔记 5
java数组 P46-
数组
Attention:此处与C语法不同
静态初始化数组
int[] arr={1,2,3,4,5};
String[] names={"瓜瓜一号","瓜瓜二号","瓜瓜三号"};
即结构为:数据类型[] 数组名(={初始化数据});
数组访问
访问数组:数组名[索引],同C
数组长度:数组名.length,与C格式不同
动态初始化数组
动态初始化举例:
int[] arr=new int[3];
int [0]=10;//后赋值
即:数据类型[] 数组名=new 数据类型[长度];
Attention:动态初始化数组和静态初始化数组不能混合使用
数组内存分配运行逻辑
编译生成的class文件在内存中JVM虚拟机上运行
内存中JVM虚拟机内存被划分为五个部分:1.方法区;2.栈;3.堆;4.本地方法栈;5.寄存器;
重点理解前三个部分:
1.方法区
存放编译的class文件,即字节码文件先加载到此处
2,栈
方法运行时所进入的内存(比如加载main函数),变量也是在这里
3.堆
new出来的东西在堆种开辟空间并产生地址
以下为一例,注意观察数组空间开辟的位置
数组常见案例
数组求最值
package demo;
public class getmx {
public static void main(String[] args) {
int[] ranking={4,-6,2,9,2};
int mx=ranking[0];
for(int i=1;i<ranking.length;i++){
if(ranking[i]>mx) mx=ranking[i];
}
System.out.println(mx);
}
}
数组反转
package demo;
public class reversearr {
public static void main(String[] args) {
int[] ans={4,-6,2,9,2};
for(int i=0,j=ans.length-1;i<j;i++,j--){
int tmp=ans[i];
ans[i]=ans[j];
ans[j]=tmp;
}
for(int i=0;i<ans.length;i++) System.out.print(ans[i]+" ");//打印出来验证一下
}
}
随机排名
//将五个员工随即排名后输出
package demo;
import java.util.Random;
import java.util.Scanner;
public class ranking {
public static void main(String[] args) {
int[] rank=new int[5];
for(int i=0;i<5;i++){
Scanner sc=new Scanner(System.in);
System.out.println("请您输入第"+(i+1)+"个员工的工号:");
int code =sc.nextInt();
rank[i]=code;
}
Random r=new Random();
for(int i=0;i<5;i++){
int idx=r.nextInt(i,rank.length);
int tmp=rank[idx];
rank[idx]=rank[i];
rank[i]=tmp;
}
for(int i=0;i<5;i++){
System.out.print(rank[i]+" ");
}
}
}