Java数组
//java中使用数组
public class Array {
public static void main(String[] args) {
//动态初始化,只给定数组长度,由系统给出默认初始化值
int[] nums;//声明一个数组,在栈中存放一个地址
nums = new int[3];//创建一个数组,在堆里开辟空间,栈的地址指向堆
//也可以合起来写:int[] nums = new int[3];
nums[0]=1;
nums[1]=2;
nums[2]=3;
//静态初始化
int[] arr1 = new int[]{1,2,3,4,5};//java也支持c语言的这种写法:int arr[5];
//静态初始化的简化写法
int[] arr2 = {1,2,3,4,5};
//不要同时使用静态初始化和动态初始化,也就是说,不要在进行数组初始化时,
//既指定数组的长度,也为每个数组元素分配初始值。int[] nums = new int[3]{1,2,4};会报错
//注意:静态初始化只能合在一起写,分开会出错。
//int[] nums; nums = {1,2,3,4}; 这样写会出现array initializer is not allowed here
//多维数组
int[][] matrix = {{1,3,4},{2,3,4},{3,4,5},{3,3,4}};
//打印二维数组
System.out.println("==================");
for(int i = 0; i < matrix.length; i ++){
for(int j = 0; j < matrix[0].length; j ++){
System.out.print(matrix[i][j] + "\t");
}
System.out.println();
}
//也可以使用foreach语句打印
System.out.println("==================");
for(int[] ints:matrix){
for(int num:ints) {
System.out.print(num+"\t");
}
System.out.println();
}
}
}
上面的静态初始化简化版本很有可能出错,比如:在类的成员变量里声明了一个数组 int[] elementData
,但未进行初始化。 在构造方法里对其初始化,试图这样写
elementData = {1,3,5} ,于是便出现了上述编译错误提示
数组除了用于保存基本数据类型的变量,还可以保存引用数据类型的变量,称为对象数组。
public class Person {
String name;
public Person(String name) {
this.age = age;
}
}
public class ClassArray {
public static void main(String[] args) {
Person[] persons = new Person[]{new Person("Jack"),new Person("Mary"),new Person("Tom")};//静态初始化
//动态初始化:Person[] persons = new Person[3];persons[0]= new Person("Jack");
}
}
Java中的内存分配
区域名称 | 作用 |
---|---|
寄存器 | 给CPU使用,和我们开发无关。 |
本地方法栈 | JVM在使用操作系统功能的时候使用,和我们开发无关。 |
方法区 | 存储可以运行的class文件。 |
堆内存 | 存储对象或者数组,new来创建的,都存储在堆内存。 |
方法栈 | 方法运行时使用的内存,比如main方法运行,进入方法栈中执行。 |