一维数组
1、 数组常用的定义方式
类型 数组名= new 类型[数组长度]
类型 数组名 = {数组元素}
2、、增强for
一般用于对集合或者数组的遍历,用类型+变量的组合去接受集合或者数组中的每一个元素,临时复制给类型+变量的组合。
例子:
for (int num: arr){
sum+=num;
}
3、 数组和内存
java代码经过编译之后,形成的class文件由java解释器中的类加载器去解释,同时java解释器会向内存去申请栈内存和堆内存
这里说的堆栈内存是指jvm的虚拟内存,栈内存是需要和实际的物理内存进行通信的
下图是在运行一个java类时,内存工作机制的一个大概说明,
堆内存主要分为:对象去,方法区,还有常量池。
4、一维数组的几个常见应用场景
求最大值
public class Demo3 {
public static void main(String[] args) {
int[] a = new int [100];
for (int i = 0; i < a.length; i++) {
a[i]=(int)(Math.random()*100);
}
System.out.print("[");//数组最原始的一种打印方式
for (int i = 0; i < a.length; i++) {
if(i==a.length-1){
System.out.println(a[i]+"]");
}else{
System.out.print(a[i]+",");
}
}
//求最大值
int max=-1;
for (int i = 0; i < a.length; i++) {
if(a[i]>max){
max=a[i];
}
}
System.out.println("最大值为:"+max);
}
}
插入数值
public class Demo4 {
public static void main(String[] args) {
int[] a={
99,85,82,63,60};
//第一步,先扩容
// int[] b=new int [a.length+1];
// for (int i = 0; i < a.length; i++) {
// b[i]=a[i];
// }
int[] b=Arrays.copyOf(a,6);//数组的简便扩容方式
System.out.println(Arrays.toString(b));
int num=120;
//从后向前比
//比该数小的后移
//找到比该数大的,则该数在的后面插入
//如果找不到比该数大的,则该数插在首位
boolean isInsert=false;
for (int i =b.length-2; i >=0; i--) {
if(b[i]<num){
b[i+1]=b[i];//比该数小的后移
}else{
isInsert=true;
b[i+1]=num;//找到比该数大的,则该数在的后面插入
break;
}
}
if(!isInsert){
b[0]=num; //如果找不到比该数大的,则该数插在首位
}
System.out.println(Arrays.toString(b));
}
}