`

疯狂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课件第四讲----大数值,数组

    斐波那契数列的特点是每一项都是前两项的和,如 `a(n) = a(n-1) + a(n-2)`。 - 使用循环或递归方法来计算斐波那契数列。递归方法涉及函数的自我调用,要注意避免无限递归导致栈溢出。 数组的高级操作: - 使用...

    Java数组与内存控制

    ### Java数组与内存控制 #### 一、Java数组在内存分配方面的知识 ##### 1.1 数组初始化 - **声明数组的时候如何分配内存:** - 在Java中,数组的声明并不直接分配内存,而仅仅是创建了一个数组引用变量。例如: ...

    螺旋数组的java实现----------------------------------------

    螺旋数组的java实现-----------------------------------------------------------------------------------------------------------

    Java中数组实例---一维数组.pdf

    在Java编程语言中,数组是一种特殊的数据结构,用于存储...通过这个实例,我们可以深入理解Java中一维数组的创建、初始化和遍历的基本概念,这对于后续学习更复杂的数组操作,如多维数组和数组操作函数,奠定了基础。

    java代码-使用java解决回文二维数组的源代码

    java代码-使用java解决回文二维数组的源代码 ——学习参考资料:仅用于个人学习使用!

    algorithm-base-java入门 - 数组基础

    github, https://github.com/chefyuan/algorithm-base java入门 - 数组基础 java入门 - 数组基础 java入门 - 数组基础 java入门 - 数组基础 java入门 - 数组基础

    algorithm-base-java入门 - 数组进阶

    github, https://github.com/chefyuan/algorithm-base java入门 - 数组进阶 java入门 - 数组进阶 java入门 - 数组进阶 java入门 - 数组进阶 java入门 - 数组进阶

    Java基础精品课09-方法补充录屏3.对象数组.mp4

    Java基础精品课09-方法补充录屏3.对象数组.mp4

    java-c语法8---非矩形数组---马克-to-win java视频

    java语法 非矩形数组 马克-to-win java视频 二重循环

    java程序设计-第3章-数据运算、流控制和数组

    Java程序设计中的第三章主要涵盖了数据运算、流控制和数组这三个核心概念,它们是编程的基础。首先,我们从数据类型开始。 数据类型是Java中定义变量的类别,它决定了变量可以存储的数据种类以及如何处理这些数据。...

    java数组-基于java实现的环形缓冲数组.zip

    环形缓冲数组的基本概念是数组的首尾相连,形成一个闭合的环。当数组填满时,新的元素会覆盖旧的元素,而不是扩展数组大小。这使得环形缓冲数组在处理流式数据或者需要限制缓冲区大小的应用场景下特别有用,如网络...

    xbox1994#Java-Interview#算法-数组-滑动窗口-最小连续子数组1

    给定一个整形数组和一个数字s,找到数组中最短的一个连续子数组,使得连续子数组的数字和sum>=s,返回这个最短的连续子数组的长度值public int minS

    Java基础语法测试-基础数据类型-注解-数组-inet-反射-oop-Java代码实现

    内容概要:通过带着读者编写Java基础语法测试代码,理解基础数据类型-注解-数组-inet-反射-oop-Java代码实现过程和测试代码 适合人群:初学java语法入门测试代码 能学到什么:①注解、数组、数据类型、inet、method...

    JAVA类与对象及数组习题

    JAVA类与对象及数组习题 JAVA类和对象及数组是JAVA编程语言的基础概念。下面是关于JAVA类和对象及数组的习题,涵盖了构造方法、继承、多重继承、变量声明、数组初始化等方面的知识点。 1. 构造方法的调用方式: ...

    JavaKeeper-java入门 - 数组基础

    需要注意的是,数组索引是从0开始的,所以一个有n个元素的数组,其索引范围是0到n-1。 五、数组特点 1. 数组中的元素类型必须一致。 2. 数组一旦创建,其长度不可改变。 3. 数组是一种引用数据类型,存储在堆区。 ...

    03-Java基础(数组-内存空间的划分

    五、数组与内存效率 数组在内存中是连续分配的,因此访问速度快。然而,如果数组过大,可能会导致内存碎片或内存溢出。合理使用数组大小和适时的内存管理能有效提高程序性能。 总之,Java中的数组是编程中不可或缺...

    Python-100-Days-java入门 - 数组基础

    在“Python-100-Days-java入门 - 数组基础”这一主题下,我们可以预见到将会接触到多个与数组相关的知识点,例如数组的声明和实例化、数组的基本操作、数组的排序与搜索算法、多维数组的应用等。掌握这些知识点能够...

    02-Java基础(数组-常见操作-遍历

    数组作为Java中的基本数据结构,是学习Java编程的基础。本教程“02-Java基础(数组-常见操作-遍历)”将深入讲解Java数组的概念、创建、初始化以及如何进行遍历等核心知识点。 首先,数组是存储同一类型元素的固定...

    Python-100-Days-java入门 - 数组进阶

    本压缩包文件汇集了一系列与Java编程语言相关的学习资料,旨在帮助初学者深入理解Java数组的概念、特性和高级应用。文件集以"Python-100-Days"为标题前缀,表明它可能与Python学习计划有所关联,但核心内容聚焦于...

    java程序控制与数组 详解 java实例20

    本文将深入探讨这两个主题,并通过一个具体的实例——"java程序控制与数组 详解 java实例20"来进一步阐述。 首先,让我们了解程序控制。在计算机科学中,程序控制指的是如何决定代码的执行流程。它包括三大基本结构...

Global site tag (gtag.js) - Google Analytics