- 数组概念:是一种容器,可以同时存放多个数据值
- 数组特点:
- 1.数组是一种引用数据类型
- 2.数组中的多个数据的数据类型必须统一
- 3.数组的长度在程序运行时不可以改变
- 数组创建:
- 1.动态初始化 int[] nums = new int[length]
- 2.静态初始化 int[] nums = new int[]{1,2,3} 或者 int[] nums = {1,2,3}
Java内存模型:
/**
* Created by tianxin on 2020/2/9.
* Java内存模型(简称:JMM,是由JVM(Java虚拟机)定义的):
* 1.栈(Stack):存放的是方法中的局部变量 方法的运行一定要在栈当中运行
* 局部变量:方法中的参数 或者方法{}中的变量
* 作用域:一旦超出作用域 立刻从栈内存中消失
* 2.堆(Heap):凡是new出来的东西,都在堆当中
* 堆内存里面的变量都有一个地址值:16进制
* 堆内存中的数据 具有默认值 规则如下:
* 整数:0
* 浮点数: 0.0
* 字符: '\u0000'
* 布尔:false
* 引用类型:null
* 3.方法区(Method Area):存放.class相关信息,包含方法的信息
* 4.本地方法栈(Native Method Stack):与操作系统有关
* 5.寄存器(pc Register):与CPU相关
*
*
* 数组常见两种异常:
* 1.数组越界异常:ArrayIndexOutOfBound 3:表示没有下标为3的元素
* 2.数组空指针异常:NullPointerException
* 数组是一个引用类型 可以为其赋值为null 表示空指针
* 数组必须进行new操作 才能被使用
* 如果赋值为null,使用的话会出现 NullPointerException空指针异常
*/
public class JavaMemory {
public static void main(String[] args) {
int[] nums1 = new int[3];
System.out.println(nums1); // new int[3]在堆内存中的地址,数组长度不可变
nums1 = new int[5]; // new int[5]在堆内存中重新创建了一个长度为5的数组
System.out.println(nums1); /* 改变了引用变量nums1存储的堆内存地址值,会造成Java中的内存垃圾
长度为3的数组没有变量指向它
*/
//输出结果
//[I@4554617c
//[I@74a14482
}
}
//数组求最大值和次大值 (一次遍历)
public class ArrayMax {
public static void main(String[] args) {
int[] a = {5,3,2,1,4};
int max = a[0];
int submax = Integer.MIN_VALUE;
for (int i=1; i<a.length; i++) {
if(a[i]>max){
submax=max;
max=a[i];
}else{
if(a[i]>submax){
submax=a[i];
}
}
}
System.out.println("max的值="+max);
System.out.println("sub_max的值="+submax);
}
}
//数组求最大值和最小值(一次遍历)
public class ArrayMin {
public static void main(String[] args) {
int[] a = {5,3,2,1,4,6,-2};
int max = a[0];
int min = a[0];
for(int i=1;i<a.length;i++){
if(a[i]>max){
max=a[i];
}else{
if(a[i]<min){
min=a[i];
}
}
}
System.out.println("max的值="+max);
System.out.println("min的值="+min);
}
}