Java数组与内存控制
2014-03-27 22:16
253 查看
今天看了一下Java的数组,作个记录
一、数组的初始化
Java数组是静态的
两种初始化方式:(不管哪种方式初始化Java数组,一旦初始化完成,该数组的长度不可改变,Java语言允许通过数组的length属性来访问数组的长度)
1、静态初始化
2、动态初始化
运行结果:
Java语言的数组变量时引用类型的变量,str,company ,strArray这三个变量以及各自引用的数组在内存中的分配如图:
二、Java数组的引用可以被改变
运行结果:
数组在内存中的示意图:
三、引用类型数组的初始化
运行结果:
为数组元素赋值后的存储示意图:
四、数组的使用
当数组引用变量指向一个有效的数组对象后,程序就可通过该数组引用变量来访问数组对象。
Java语言避免直接访问内存中的数据可以保证程序更加健壮,如果程序直接访问并修改堆内存中数据,可破坏内存中的数据完整性,从而导致程序Crash。
五、多维数组
N维数组是数组元素是N-1维数组的数组。
Java允许将多维数组当成一位数组处理。
一、数组的初始化
Java数组是静态的
两种初始化方式:(不管哪种方式初始化Java数组,一旦初始化完成,该数组的长度不可改变,Java语言允许通过数组的length属性来访问数组的长度)
1、静态初始化
2、动态初始化
public class ArrayTest{ public static void main(String args[]){ //采用静态初始化方式初始化第一个数组 String[] str = new String[]{ "java", "java EE", "XML" }; //采用静态初始化的简化形式初始化第二个数组 String[] company = { "百度", "阿里巴巴", "腾讯" }; //采用动态初始化方式初始化第三个数组 String[] strArray = new String[5]; //访问三个数组的长度 System.out.println("第一个数组的长度是:" + str.length); for(int i = 0; i < str.length; i++){ System.out.println(str[i]); } System.out.println("第二个数组的长度是:" + company.length); for(int i = 0; i < company.length; i++){ System.out.println(company[i]); } System.out.println("第三个数组的长度是:" + strArray.length); for(int i = 0; i < strArray.length; i++){ System.out.println(strArray[i]); } } }
运行结果:
Java语言的数组变量时引用类型的变量,str,company ,strArray这三个变量以及各自引用的数组在内存中的分配如图:
二、Java数组的引用可以被改变
public class ArrayTest2{ public static void main(String args[]){ //采用静态初始化方式初始化第一个数组 String[] str = new String[]{ "java", "java EE", "XML" }; //采用静态初始化的简化形式初始化第二个数组 String[] company = { "百度", "阿里巴巴", "腾讯" }; //采用动态初始化方式初始化第三个数组 String[] strArray = new String[5]; //让str数组变量、strArray数组变量指向compamy所引用的数组 str = company; strArray = company; //改变srt数组变量所引用的数组的第二个元素的值 str[1] = "淘宝"; //访问三个数组的长度 System.out.println("第一个数组的长度是:" + str.length); for(int i = 0; i < str.length; i++){ System.out.println(str[i]); } System.out.println("第二个数组的长度是:" + company.length); for(int i = 0; i < company.length; i++){ System.out.println(company[i]); } System.out.println("第三个数组的长度是:" + strArray.length); for(int i = 0; i < strArray.length; i++){ System.out.println(strArray[i]); } } }
运行结果:
数组在内存中的示意图:
三、引用类型数组的初始化
class Person{ private int age; private double height; public Person(int age,double height){ this.setAge(age); this.setHeight(height); } public void setAge(int age){ this.age = age; } public void setHeight(double height){ this.height = height; } public int getAge(){ return this.age; } public double getHeight(){ return this.height; } public void info(){ System.out.println("我的年龄是:" + this.age + ",我的身高是:" + this.height); } } public class ReferenceArrayTest { public static void main(String args[]){ //定义一个students数组变量,其类型是Person[] Person[] students; //执行动态初始化 students = new Person[2]; System.out.println("student所引用的数组的长度是:" + students.length); //创建一个Person实例并将这个Person实例赋给Tsang变量,并为Tsang所引用的Person对象的属性赋值 Person Tsang = new Person(18,180.8); //创建一个Person实例并将这个Person实例赋给Chan变量,并为Chan所引用的Person对象的属性赋值 Person Chan = new Person(19,176.8); //将Tsang和Chan变量的值分别赋给第一,第二个数组元素 students[0] = Tsang; students[1] = Chan; Tsang.info(); //下面两行代码的结果完全一样,因为Chan和students[1]指向的是同一个Person实例 Chan.info(); students[1].info(); } }
运行结果:
为数组元素赋值后的存储示意图:
四、数组的使用
当数组引用变量指向一个有效的数组对象后,程序就可通过该数组引用变量来访问数组对象。
Java语言避免直接访问内存中的数据可以保证程序更加健壮,如果程序直接访问并修改堆内存中数据,可破坏内存中的数据完整性,从而导致程序Crash。
五、多维数组
N维数组是数组元素是N-1维数组的数组。
Java允许将多维数组当成一位数组处理。
相关文章推荐
- java从数组中删除数组元素,数组与内存控制
- Java数组与内存控制
- Java数组与内存控制(转)
- Java数组与内存控制
- JAVA--数组及其内存控制
- Java数组与内存控制
- 【JAVA基础教程】-浅谈数组及其内存控制
- Java学习系列(三)Java运算符、控制语句、数组及其在内存中的运行分析
- Java---数组与内存控制
- java:浅谈数组与对象的内存控制
- Java——数组与内存控制
- Java学习系列(三)Java运算符、控制语句、数组及其在内存中的运行分析
- (一)Java数组与内存控制
- 尚硅谷第四课0722班 java-特殊流程控制 -数组元素的默认初始化-数组操作常见问题-Java内存的结构
- Java进阶---数组与内存控制
- java 基础概念 -- 数组与内存控制
- Java基础复习笔记 数组,内存形式,父子,内存控制01
- Java数组与内存控制
- 疯狂java之数组与内存控制
- Java学习系列(三)Java运算符、控制语句、数组及其在内存中的运行分析