【JAVA基础教程】-浅谈数组及其内存控制

在用JAVA数据前我们都知道必须要先对数组对象进行初始化。当数组的所有元素都被分配合适的内存空间,当制定了初始值时,数组初始化完成。程序以后将不能重新改变数组对象在内存中的位置和大小。那么:

1.JAVA数组为静态,即一旦初始化后,其长度是不可改变的。

2. 数组变量是引用变量,并不是数组对象本身。

3. 两种初始化方式:

  动态初始化:指定数组的长度,初始值自动生成。

  静态初始化:指定初始值,长度自动生成。

4. JAVA中,引用变量本身无需初始化,引用变量所引用的对象是需要初始化的。

5. 所有局部变量(基本类型变量、引用类型变量)都存于所在方法的栈内存中,引用变量所引用的实际对象(数组对象、Java对象)存放于堆内存中。

  =》引用变量不一定存放于栈内存中,eg,3维数组

*易混淆:引用变量何时指代其本省,何时指代堆内存中其引用的对象?

  未调用其方法或属性,指代其本身;反之,指代堆内存中其引用的对象

6. 基本类型数组:每一个元素都是值类型(基本类型)

  引用类型数组:每一个元素还是引用类型,还需要指向实际对象

7. Java只允许通过引用变量访问堆内存中的数组对象,不允许直接访问堆内存中的数组对象

8. 多维数组按一维数组进行初始化,从最左端开始初始化,每一元素按照引用类型,进一步初始化

  eg:

int[][] a;

a = new int[4][];

a[0] = new int[2];

PS:如有什么问题可以在JAVA群里:457036818提出或者直接留言

时间: 2024-11-02 11:26:25

【JAVA基础教程】-浅谈数组及其内存控制的相关文章

【Java基础】——浅谈堆栈内存

关于内存这一部分的处理,在程序中是极为重要的,这不仅关乎程序运行的速度而且还会对程序能否正常运行,以及对支持程序运行的硬件设备也是同样有需求的.小编也是把自己最近接触到的写出来,如有错误之处,恳请大家斧正. 在程序的运行过程中,会把内存分割成很多部分,这篇文章主要讲解堆栈的问题. 何为栈?     运行时对象区,就是所有在方法中定义的变量,变量的存放区,则为栈内存.随着方法的结束,栈内存也会自然摧毁.     何为堆? 运行时数据区,就是所有在方法中创建对象时,这个对象存放的地方,则为堆内存.在

【Java基础】浅谈常见设计模式

Num1:单例模式 基本概念:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 常见写法: 懒汉式 public class Singleton { /* 持有私有静态实例,防止被引用,此处赋值为null,目的是实现延迟加载 */ private static Singleton instance = null; /* 私有构造方法,防止被实例化 */ private Singleton() {} /* 1:懒汉式,静态工程方法,创建实例 */ public static Singleto

java基础知识回顾之javaIO类--内存操作流ByteArrayInputStream和ByteArrayOutputSteam(操作字节数组)

直接看代码: package cn.itcast.io.p6.bytestream; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; public class ByteArrayStreamDemo { /** * @param args * @throws IOException * 特点 * 1.内存操作流 * 2.不操作底层资源,不调

Java基础教程:面向对象编程

Java基础教程:面向对象编程 Java语言概述 Java语言特点 1.Java为纯面向对象的语言,它能够直接反映现实生活中的对象.总之,Everything is object! 2.平台无关性.Java为解释型语言,编译器会把Java代码变成"""中间代码",然后在JVM上解释执行. 3.Java提供了很多内置的类库,这些类库简化了开发人员的程序设计工作,同时缩短了项目开发时间. 4.Java语言提供了对Web应用的支持. 5.Java语言提供了较好的安全性和健

java基础之概谈xml文件解析

XML已经成为一种很通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.诸多web应用框架,其可配置的编程方式,给我们的开发带来了很大程度的便捷,但细细想来,它们的应用无一不是java bean与xml之间的转换解析.本文将对xml的两种操作标准DOM和SAX,从它们各自的特点.适用范围等方面进行简单介绍. DOM (Document Object Model) :DOM标准中,采用W3C标准表示XML,有多重语言支持,因此其跨平台性很好.采用DOM规范

Java基础教程:JDBC编程

Java基础教程:JDBC编程 快速开始 什么是JDBC JDBC 指 Java 数据库连接,是一种标准Java应用编程接口( JAVA API),用来连接 Java 编程语言和广泛的数据库. JDBC API 库包含下面提到的每个任务,都是与数据库相关的常用用法. 制作到数据库的连接. 创建 SQL 或 MySQL 语句. 执行 SQL 或 MySQL 查询数据库. 查看和修改所产生的记录. 从根本上来说,JDBC 是一种规范,它提供了一套完整的接口,允许便携式访问到底层数据库,因此可以用 J

Java基础教程:HashTable与HashMap比较

Java基础教程:HashTable与HashMap比较 1.  关于HashMap的一些说法: a)  HashMap实际上是一个"链表散列"的数据结构,即数组和链表的结合体.HashMap的底层结构是一个数组,数组中的每一项是一条链表. b)  HashMap的实例有俩个参数影响其性能: "初始容量" 和 装填因子. c)  HashMap实现不同步,线程不安全.  HashTable线程安全 d)  HashMap中的key-value都是存储在Entry中的

浅谈操作系统与内存

浅谈操作系统与内存 对于计算机的发明,相信大家都有耳闻那个占地面积按平米算的第一台计算机.在那个时候,CPU的资源是极其珍贵的,随着这些年突飞猛进的发展,一片指甲盖大小的民用级CPU一秒钟能执行的指令数可以达到上亿级别. 随着计算能力的增长,芯片外围的硬件和配套的软件也是一路高歌,发生了天翻地覆的变化,今天我们简单回顾历史,来看一看操作系统和内存机制的演变,不仅要了解它们是怎样,同时也看看它们为什么会是这样. CPU的运行 一说到CPU(Center processing unit),大家都觉得

Java基础教程 - 组合

1. 什么是组合? 如果一个类的对象和另一个类满足"has-a"关系的话,我们就可以在一个类中,把另一个类的对象作为其对象成员. 什么是"has-a"关系,举个例子:现在有一个类LapTop.class,还有一个是Moniter.class.好显然,Laptop "has-a" Moniter,也就是说,他们是满足"has-a"关系的.这时候,我们就可以把Moniter作为Laptop的一个数据成员. class Laptop