这一章节我们来讨论一下数组的初始化。
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]
总结:这一章节简单讨论了数组的几个注意点。
这一章节就到这里,谢谢。
-----------------------------------
目录
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
- **数组**:由于元素的连续存储,数组在访问和查找上具有O(1)的时间复杂度,但在插入和删除操作中,时间复杂度可能是O(n),因为可能需要移动大量元素。 - **链表**:链表的插入和删除操作通常是O(1),因为只需要...
1. 访问(Access):由于元素的位置是已知的,因此可以使用下标直接访问数组中的任何元素,时间复杂度为O(1)。 2. 插入(Insert):在数组中插入元素通常需要移动后续元素,因此平均时间复杂度为O(n)。在末尾插入...
在Java开发中,这样的库可以极大地提高开发效率,因为它封装了常见的功能,开发者可以直接使用,而无需从头编写代码。 描述中的 "mchange-commons-java-0.2.11.jar包" 是该库的主要组成部分,是一个Java归档(JAR)...
在具体编程时,我们需要初始化P0口为输出模式,并设置初始的LED状态数组。然后,设定一个主循环,每次循环通过指针遍历数组,将数组中的值写入P0口。在写入后,调用延迟函数,使灯光有时间显示出来。循环会一直进行...
1. **代码编辑器**:Eclipse 提供了一个强大的Java代码编辑器,支持语法高亮、自动完成、错误检查以及重构功能。它可以智能感知上下文并提供有用的提示,帮助开发者提高编码效率。 2. **项目管理**:Eclipse IDE...
例如,对于数组`a[0...n-1]`,我们可以用两个指针,一个从头开始,一个从尾开始,同时向中间移动并交换它们指向的元素,直到两个指针相遇。这样就可以实现数组的反转。 以题目中的例子为例,假设数组为`abcdefgh`,...
1. **源代码结构**:可能包括多个Java源文件,分别负责网络连接、NTRIP协议解析、数据接收与处理等功能。 2. **AndroidManifest.xml**:定义应用的元数据,如权限、活动、服务等。 3. **build.gradle**:构建脚本,...
标题 "aip-java-sdk-4.2.0" 指的是一个针对Android平台的AIP(Artificial Intelligence Platform)SDK的特定版本,版本号为4.2.0。这个SDK是百度公司提供的,用于帮助开发者在Android应用程序中集成和使用百度的各种...
2. 如何在易语言中定义和初始化文本数组。 3. 使用内置或自定义函数进行文本比较和排序。 4. 掌握至少一种排序算法的实现,如冒泡排序或快速排序。 5. 如何读取和使用模块源码来增强程序功能。 6. 处理不同文本特性...
对于数组的操作,文档举例说明了数组的初始化和赋值方法,以及如何通过下标来访问数组元素。文档详细解释了一维数组和二维数组的存储结构,说明了计算机存储空间的线性特性,以及如何通过数组下标将多维数组映射到一...
- 初始化数组,分配初始容量的内存。 - 扩展数组,当数组满时,使用`realloc`分配更大的内存,并复制原有元素。 - 缩小数组,如果数组过大,可以减少内存占用,但要注意避免数据丢失。 - 插入和删除元素,可能...
2. **初始化方法`init(int n)`**: - 这个方法接收一个整数`n`作为参数,表示数组的长度。 - 在方法内部,你应该分配一个大小为`n`的数组,并使用`Scanner`从键盘读取`n`个整数来填充数组。 3. **求最大值`max()`...
【标题】: "手把手 - 微服务 Windows 开发环境从头搭建 2022-09-05 直播录像 - 软件安装包-2.zip" 这个压缩包文件包含了搭建微服务开发环境所需的基础软件,包括JDK(Java Development Kit)和MySQL数据库。...
在Java编程中,多文件...通过这个"java-多文件上传dome"工具包,你可以快速实现上述功能,无需从头编写所有代码。不过,记得在实际项目中,除了功能实现,还要关注性能、安全性和可维护性,确保应用程序的稳定运行。
6. **Servlet生命周期**:Servlet的生命周期包括初始化(init)、服务(service,通过doGet、doPost等方法处理请求)、销毁(destroy)三个阶段。Servlet在服务器中保持活跃,可以处理多个请求,而CGI每次请求都会...
1. **初始化数组**:首先根据需求确定数组的长度,并创建相应长度的数组。 2. **生成随机数**:使用`Math.random()`函数生成一个介于0(含)至1(不含)之间的随机小数,再通过乘法和取整操作转换为所需的随机整数。...
接下来,根据Leancound的API文档,编写代码来初始化SDK,设置必要的认证信息,然后调用相应的API接口进行操作。 例如,要发送一条文本消息,开发者可能需要如下步骤: 1. 创建一个Leancound客户端对象,设置API密钥...
11. 数组初始化:正确答案是 A.array2 = array1。 知识点:在 Java 中,数组可以初始化为 null 或一个新的数组,但不能将一个数组赋值给另一个数组。 12. 静态变量和实例变量:正确答案是 C.1。 知识点:在 ...
- **初始化数组**: - 可以在定义数组的同时给数组的元素赋初值。 - **示例**: ```c int array[10] = {1, 2, 3, 4, 5}; // 初始化前五个元素 ``` - **访问数组元素**: - 通过数组名和下标来访问或修改数组中的...