`

疯狂java基本功16讲(1)----数组与内存控制

阅读更多
重点讲述问题:
   (1)、Java数组在内存分配方面的知识
   (2)、Java数组的静态特征,即Java数组一旦初始化完成,该数组长度将不可改变
   (3)、Java数组静态初始化、动态初始化的内存分配细节


(2)、Java数组的静态特征
      Java数组是静态的,即当数组被初始化后,该数组的长度是不可变的。

(3)、Java数组静态初始化、动态初始化
      Java程序中的数组必须经过初始化才可使用。所谓初始化,就是为数组对象的元素分配内存空间,并为每个元素指定初始值。

      静态初始化:初始化时由程序显式指定每个数组元素的初始值,由系统决定数组长度。

      动态初始化:初始化时只指定数组长度,由系统为数组元素分配初始值。


     
package com.crazyjava;

public class OneArray {
	public static void main(String[] args) {
		//采用静态初始化方式初始化数组
		String[] books = new String[]{
			"Java编程思想",
			"操作系统",
			"计算机网络"
		};
		//采用静态初始化简化形式初始化数组 
		String[] names = {
			"孙悟空",
			"唐僧",
			"猪八戒"
		};
		//采用动态初始化数组
		String[] strArr = new String[5];
		System.out.println("第一个数组长度:"+books.length);
		System.out.println("第二个数组长度:"+names.length);
		System.out.println("第三个数组长度:"+strArr.length);
	}
}


     

(1)、Java数组在内存分配方面的知识
   执行动态初始化时系统为数组元素分配初始值:
       (1)数组元素类型为整数类型(byte,short,int,long),为0.
       (2)数组元素类型为浮点类型(float,double),为0.0.
       (3)为布尔型(boolean),为false
       (4)为引用类型,为null

   Java的数组是静态的,一旦为数组初始化完成,数组元素的内存空间分配即结束,程序只能改变数组元素的值,而无法改变数组的长度。


   Java的数组变量是引用类型的变量,它并不是数组对象本身,只要让数组变量指向有效的数组对象,程序中即可使用该数组变量。

   所有局部变量都是放在栈内存里保存的,不管其是基本类型的变量,还是引用类型的变量,都是存储在各自的方法栈区中;但引用类型变量所引用的对象则总是存储在堆内存中。

   堆内存中的对象通常不允许直接访问,只能通过引用变量。

分享到:
评论

相关推荐

    疯狂Java:突破程序员基本功的16课-高清扫描版带书签

    本书把容易被Java程序员所忽视的内容整理成书,介绍了Java的对象、数组的内存分配,介绍了常见集合的实现细节、内存回收的细节、表达式、流程控制、面向对象、异常的“陷阱”,常用的数据结构和算法的实现以及其他...

    《疯狂Java 突破程序员基本功的16课》PDF版本下载.txt

    根据提供的文件信息,我们可以推断出这是一本关于Java编程技术的书籍——《疯狂Java突破程序员基本功的16课》。尽管没有提供具体的章节内容,但基于书名及其描述,我们可以合理推测这本书的主要内容是帮助程序员提升...

    疯狂JAVA 突破程序员基本功的16课

    《疯狂JAVA 突破程序员基本功的16课》是一部专为初学者和进阶者设计的编程教程,旨在通过一系列深入浅出的课程,帮助读者巩固和提升JAVA编程的基础技能。这本书的配套源代码提供了丰富的实例,让读者能够在实践中...

    疯狂Java_突破程序员基本功的16课.pdf

    《疯狂Java_突破程序员基本功的16课》是一本专为Java程序员设计的技能提升指南,旨在通过16个关键课程帮助读者巩固和提升Java编程基础。这本书深入浅出地探讨了Java语言的核心概念和技术,是提升Java编程能力的理想...

    疯狂Java 突破程序员基本功的16课

    在标题和描述中提到的“疯狂Java 突破程序员基本功的16课”,我们可以详细了解到几个关键的知识点。首先,课程的主要目标是帮助程序员强化其Java基础技能。这说明本课程将围绕Java编程语言的基础知识、关键概念、...

    突破程序员基本功的16课.part2

    第1课 数组与内存控制 1.1 数组初始化 1.1.1 Java数组是静态的 1.1.2 数组一定要初始化吗 1.1.3 基本类型数组的初始化 1.1.4 引用类型数组的初始化 1.2 使用数组 1.2.1 数组元素就是变量 1.2.2 没有多维...

    常用的内部排序相关代码.rar

    《疯狂JAVA:突破程序员基本功的16课第12章》这本书可能会详细解释这些排序算法的实现细节、时间复杂度和空间复杂度分析,帮助读者深入理解每种排序方法的优缺点及其适用场景。 在实际编程中,开发者需要根据数据...

Global site tag (gtag.js) - Google Analytics