`
李灵晖-raylee
  • 浏览: 135873 次
博客专栏
Group-logo
从头认识java
浏览量:0
文章分类
社区版块
存档分类
最新评论

从头认识java-4.8 数组的初始化(1)

 
阅读更多

这一章节我们来讨论一下数组的初始化。

1.数组是一个对象。

package com.ray.ch01;

public class Test {
	public static void main(String[] args) {
		int[] a = {};
		System.out.println(a instanceof Object);
	}
}

输出:

true


2.把数组赋值给变量,其实是把数组的引用赋值给变量。

package com.ray.ch04;

import java.util.Arrays;

public class Test {
	public static void main(String[] args) {
		int[] a1 = { 1, 2, 3, 4, 5 };
		int[] a2;
		a2 = a1;
		System.out.println(a2.equals(a1));
		for (int i = 0; i < a2.length; i++) {
			a2[i] += 1;
		}
		System.out.println(Arrays.toString(a1));
	}
}

输出:

true
[2, 3, 4, 5, 6]

从上面的结果可以看见,a1、a2指向同一个对象,当改变a2时,a1也同时改变。


数组不单可以放基础类型,还可以放对象。

package com.ray.ch04;

public class Test {
	public static void main(String[] args) {
		Integer[] a = { new Integer(1), new Integer(2) };
	}
}



3.读取长度超过数组长度时,抛异常

改动一下上面的代码

package com.ray.ch04;

import java.util.Arrays;

public class Test {
	public static void main(String[] args) {
		int[] a1 = { 1, 2, 3, 4, 5 };
		int[] a2;
		a2 = a1;
		System.out.println(a2.equals(a1));
		for (int i = 0; i <= a2.length; i++) {//改动这里,多了一个=号
			a2[i] += 1;
		}
		System.out.println(Arrays.toString(a1));
	}
}

输出:

true
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at com.ray.ch04.Test.main(Test.java:12)


4.除了上面显性赋值之外,我们还可以使用new来创建数组,但是必须写清楚数组的长度

package com.ray.ch04;

public class Test {
	public static void main(String[] args) {
		int[] a2 = new int[5];//必须写清楚长度
	}
}

这里有可能会有疑问,为什么int也可以使用new,因为它后面加上了“[]”,它代表的不是基础类型的int,而是代表一个放置int类型的数组,数组是对象,所以可以使用new


5.赋值

如果是基础类型,会直接把数据发放到数组里面,如果是类,则会把引用放到数组里面。

基础类型:

package com.ray.ch04;

import java.util.Arrays;
import java.util.Random;

public class Test {
	public static void main(String[] args) {
		int[] a2 = new int[5];
		Random random = new Random(50);
		for (int i = 0; i < a2.length; i++) {
			a2[i] = random.nextInt();
		}
		System.out.println(Arrays.toString(a2));
	}
}

输出:

[-1160871061, -1727040520, -1657178909, -765924271, -1625295794]


对象:

package com.ray.ch04;

import java.util.Arrays;

public class Test {
	public static void main(String[] args) {
		Book[] a2 = new Book[5];
		for (int i = 0; i < a2.length; i++) {
			a2[i] = new Book();
		}
		System.out.println(Arrays.toString(a2));
	}
}

class Book {
}


输出:

[com.ray.ch04.Book@61de33, com.ray.ch04.Book@14318bb, com.ray.ch04.Book@ca0b6, com.ray.ch04.Book@10b30a7, com.ray.ch04.Book@1a758cb]


总结:这一章节简单讨论了数组的几个注意点。


这一章节就到这里,谢谢。

-----------------------------------

目录



版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

    php数组当链表-php数组和链表的区别总结 数组和链表.pdf

    - **数组**:由于元素的连续存储,数组在访问和查找上具有O(1)的时间复杂度,但在插入和删除操作中,时间复杂度可能是O(n),因为可能需要移动大量元素。 - **链表**:链表的插入和删除操作通常是O(1),因为只需要...

    算法面试通关40讲完整课件 05-07 数组、链表

    1. 访问(Access):由于元素的位置是已知的,因此可以使用下标直接访问数组中的任何元素,时间复杂度为O(1)。 2. 插入(Insert):在数组中插入元素通常需要移动后续元素,因此平均时间复杂度为O(n)。在末尾插入...

    mchange-commons-java-0.2.11.zip

    在Java开发中,这样的库可以极大地提高开发效率,因为它封装了常见的功能,开发者可以直接使用,而无需从头编写代码。 描述中的 "mchange-commons-java-0.2.11.jar包" 是该库的主要组成部分,是一个Java归档(JAR)...

    单片机C语言实例-用数组的指针控制P0 口8 位LED流水点亮.zip

    在具体编程时,我们需要初始化P0口为输出模式,并设置初始的LED状态数组。然后,设定一个主循环,每次循环通过指针遍历数组,将数组中的值写入P0口。在写入后,调用延迟函数,使灯光有时间显示出来。循环会一直进行...

    eclipse-java-2021-12-R-win32-x86_64.zip

    1. **代码编辑器**:Eclipse 提供了一个强大的Java代码编辑器,支持语法高亮、自动完成、错误检查以及重构功能。它可以智能感知上下文并提供有用的提示,帮助开发者提高编码效率。 2. **项目管理**:Eclipse IDE...

    数组循环左移

    例如,对于数组`a[0...n-1]`,我们可以用两个指针,一个从头开始,一个从尾开始,同时向中间移动并交换它们指向的元素,直到两个指针相遇。这样就可以实现数组的反转。 以题目中的例子为例,假设数组为`abcdefgh`,...

    api-ntrip-java-client-master.zip_android_ntrip_ntrip java实现_ntr

    1. **源代码结构**:可能包括多个Java源文件,分别负责网络连接、NTRIP协议解析、数据接收与处理等功能。 2. **AndroidManifest.xml**:定义应用的元数据,如权限、活动、服务等。 3. **build.gradle**:构建脚本,...

    aip-java-sdk-4.2.0

    标题 "aip-java-sdk-4.2.0" 指的是一个针对Android平台的AIP(Artificial Intelligence Platform)SDK的特定版本,版本号为4.2.0。这个SDK是百度公司提供的,用于帮助开发者在Android应用程序中集成和使用百度的各种...

    易语言-文本数组排序

    2. 如何在易语言中定义和初始化文本数组。 3. 使用内置或自定义函数进行文本比较和排序。 4. 掌握至少一种排序算法的实现,如冒泡排序或快速排序。 5. 如何读取和使用模块源码来增强程序功能。 6. 处理不同文本特性...

    数据结构基础-数组、链表语法基础复习.pdf

    对于数组的操作,文档举例说明了数组的初始化和赋值方法,以及如何通过下标来访问数组元素。文档详细解释了一维数组和二维数组的存储结构,说明了计算机存储空间的线性特性,以及如何通过数组下标将多维数组映射到一...

    链表及动态数组.zip

    - 初始化数组,分配初始容量的内存。 - 扩展数组,当数组满时,使用`realloc`分配更大的内存,并复制原有元素。 - 缩小数组,如果数组过大,可以减少内存占用,但要注意避免数据丢失。 - 插入和删除元素,可能...

    Java 上机作业2020.4.3

    2. **初始化方法`init(int n)`**: - 这个方法接收一个整数`n`作为参数,表示数组的长度。 - 在方法内部,你应该分配一个大小为`n`的数组,并使用`Scanner`从键盘读取`n`个整数来填充数组。 3. **求最大值`max()`...

    手把手 - 微服务 Windows 开发环境从头搭建 2022-09-05 直播录像 - 软件安装包-2.zip

    【标题】: "手把手 - 微服务 Windows 开发环境从头搭建 2022-09-05 直播录像 - 软件安装包-2.zip" 这个压缩包文件包含了搭建微服务开发环境所需的基础软件,包括JDK(Java Development Kit)和MySQL数据库。...

    java-多文件上传dome

    在Java编程中,多文件...通过这个"java-多文件上传dome"工具包,你可以快速实现上述功能,无需从头编写所有代码。不过,记得在实际项目中,除了功能实现,还要关注性能、安全性和可维护性,确保应用程序的稳定运行。

    Java---笔试题大全

    6. **Servlet生命周期**:Servlet的生命周期包括初始化(init)、服务(service,通过doGet、doPost等方法处理请求)、销毁(destroy)三个阶段。Servlet在服务器中保持活跃,可以处理多个请求,而CGI每次请求都会...

    数组放不重复的随机数

    1. **初始化数组**:首先根据需求确定数组的长度,并创建相应长度的数组。 2. **生成随机数**:使用`Math.random()`函数生成一个介于0(含)至1(不含)之间的随机小数,再通过乘法和取整操作转换为所需的随机整数。...

    java-sdk-master.zip_leancound集成第三方插件_即时通讯

    接下来,根据Leancound的API文档,编写代码来初始化SDK,设置必要的认证信息,然后调用相应的API接口进行操作。 例如,要发送一条文本消息,开发者可能需要如下步骤: 1. 创建一个Leancound客户端对象,设置API密钥...

    JAVA类与对象及数组习题[借鉴].pdf

    11. 数组初始化:正确答案是 A.array2 = array1。 知识点:在 Java 中,数组可以初始化为 null 或一个新的数组,但不能将一个数组赋值给另一个数组。 12. 静态变量和实例变量:正确答案是 C.1。 知识点:在 ...

    传智博客C语言学习笔记

    - **初始化数组**: - 可以在定义数组的同时给数组的元素赋初值。 - **示例**: ```c int array[10] = {1, 2, 3, 4, 5}; // 初始化前五个元素 ``` - **访问数组元素**: - 通过数组名和下标来访问或修改数组中的...

Global site tag (gtag.js) - Google Analytics