Java千百问_06数据结构(015)_数组和普通对象的引用变量有什么区别

简介:

1、数组和普通对象的引用变量有什么区别

了解什么是数组看这里:java中的数组是什么 
对于Java的数组来说,只有类型兼容(即属于同一数据类型体系且遵守优先级由低到高原则),才能将数组引用传递给另一数组引用,但仍然不能改变数组长度(仅仅只是调整数组引用指针的指向)。 
了解数组传递看这里:数组如何传递

public class TestArrayLength {
    public static void main(String[] args) {
        int[] numbers = { 3, 5, 12 };
        int[] digits = new int[4];
        System.out.println("digits数组长度:" + digits.length);//4
        for(int number : numbers) {
            System.out.print(number + ",");//3,5,12,
        }
        System.out.println("");
        for(int digit : digits) {
            System.out.print(digit + ",");//0,0,0,0,
        }
        System.out.println("");
        digits = numbers;
        System.out.println("digits数组长度:" + digits.length);//3
    }
}

执行结果如下: 
digits数组长度:4 
3,5,12, 
0,0,0,0, 
digits数组长度:3

数组初始化之后在内存中的存储如下图,在中有2个新的数组对象,中有2个分别指向这两个数组对象的引用变量: 
这里写图片描述

在执行digits = numbers赋值后,虽然看似digits的数组长度看似由4变成3,其实只是numbers和digits指向同一个数组对象而已。 
而digits本身失去引用而变成垃圾,等待垃圾回收来回收(但其长度仍然为4)。如图: 
了解java垃圾回收看这里:java垃圾回收机制是什么

这里写图片描述

看这篇文章就能清楚的明白数组在内存中的存储:java数组如何存储在内存中


原文地址:http://blog.csdn.net/ooppookid/article/details/51404629












相关文章
|
16天前
|
Java
Java 变量命名规则
4月更文挑战第6天
|
3天前
|
存储 Java 程序员
Java 数组
4月更文挑战第16天
|
27天前
|
存储 算法 Java
Java数据结构与算法-java数据结构与算法(二)
Java数据结构与算法-java数据结构与算法
76 1
|
1天前
|
存储 Java
JAVA变量类型
JAVA变量类型
7 0
|
5天前
|
存储 供应链 Java
《Java 简易速速上手小册》第3章:Java 数据结构(2024 最新版)
《Java 简易速速上手小册》第3章:Java 数据结构(2024 最新版)
4 1
|
12天前
|
Java API
编码的奇迹:Java 21引入有序集合,数据结构再进化
编码的奇迹:Java 21引入有序集合,数据结构再进化
16 0
|
16天前
|
Java 关系型数据库 MySQL
大厂面试题详解:Java抽象类与接口的概念及区别
字节跳动大厂面试题详解:Java抽象类与接口的概念及区别
40 0
|
25天前
|
Java
java 8 数组转字符串并以逗号分隔
java 8 数组转字符串并以逗号分隔
11 0
|
26天前
|
Java
java的 isEmpty 和 isBlank 区别?
java的 isEmpty 和 isBlank 区别?
8 0
|
27天前
|
XML 存储 算法
Java数据结构与算法-java数据结构与算法(五)
Java数据结构与算法-java数据结构与算法
48 0