这一章节我们来讨论一下数组的初始化。
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]
总结:这一章节简单讨论了数组的几个注意点。
这一章节就到这里,谢谢。
-----------------------------------
目录
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
从头写React-like框架的工程搭建实现 最近在网上看到了 Build your own React 这篇文章,作者从零开始实现了一个简易类 React 框架,虽然没有过多的优化,但 React 中的核心思想 Concurrent Mode,Fiber ...
视频 https://www.bilibili.com/video/BV1914y1s7hi
从头开始学习Java课程-资料来源PillsInformática。
视频 https://www.bilibili.com/video/BV1914y1s7hi
赖世雄英语从头学 下载-附件资源
军工行业2021年度投资策略:而今迈步从头越-20201115-招商证券.pdf
外卖订餐java源码 你会学到什么 通过 Java 片段的构建块,您将能够立即了解 Java 编程的要点。 你需要什么 勇敢地浏览存储库! 或替代开源 JDK 1.8 版本 截至今天,该存储库已通过测试 Oracle JDK 1.8 OpenJDK 1.8 ...
本资料是UCSF DOCK的使用案例分享的输入资料,将使用DOCK 6.11自带的片段库,使用DOCK/RDKit的 DOCK_D3N功能从头设计分子。便于使用者直接从这部分设计工作开始,不需花时间来准备输入文件。
Java-3D游戏引擎与基本游戏Java中使用LWJGL,OpenGL,OpenAL等的3D游戏引擎。 从头开始
乙二醇2020年度策略报告:“熊”关漫道真如铁,而今迈步从头越-20191230-光大期货-36页.rar
因此,对于给定的数组来说,最为暴力的办法就是直接一个个进行比较,从头依次遍历找它后面比他小的元素个数,最后统计最终的结果。但是这样的方法的算法复杂度是O(n2)O(n^2)O(n2),对于题目给定的数据范围肯定是无法...
java实现验证码功能源码 Java Periphery 是一个高性能库,用于用户空间 Linux 中的 GPIO、LED、PWM、SPI、I2C、MMIO 和串行外设 I/O 接口访问。 我没有尝试从头开始构建它并生成 JNI 包装器。 这节省了大量手动编码...
开发人员零java-Mentorama 在此存储库中,将从头开始插入Java Developer模块的Mentorama课程期间开发的所有练习。
该代码设计了一个函数用来删除数组中的元素,要求:数组中删除第i个元素,删除的位置用0代替,然后继续在数组中查找第i个元素,(遇到0继续往下找,到达元素末尾后从头查找)
例如,当我们想从头开始创建RPC框架时,我们需要了解Java动态代理和序列化。 这是清单: 技术 模块/链接 设想 地位 评论 动态代理 动态代理 RPC 智商 完毕 字节程序Java代理, 乐器, 字节好友 字节码程序java-...
3D游戏从头编-网上收集,很基础. 第一回:开发环境 第二回:3D基本概念 第三回:第一个D3D程序 第四回:渲染顶点 第五回:渲染索引顶点 第六回:摄象机 第七回:灯光 第八回:纹理 第九回:3D模型(.x)
java源码字符串缓冲区 这是 Java String 、 StringBuilder和StringBuffer方法/API 的完整指南。 本指南的源代码示例在我们的本地开发环境中进行了良好的测试,您可以将这些示例用作无错误。 您可以在 上了解更多信息...
如果您了解一点C或JavaScript,本指南就是从头开始学习Java。 这是一个正在进行的工作,应该在下一个Java LTS(Java 17)发布时准备就绪。 所有代码都在启用预览功能的Java 14上运行。 注意:如果您只希望查看...
Java机器人 这是一个从头开始编写JavaScript机器人
Java系列13-Spring Boot 实际上,我们将从头开始逐步开发项目。 我们将详细检查Spring Boot开发环境和体系结构。 借助Spring Boot,我们将探索公司Java项目的基础架构。 您可以通过Spring Framework为自己带来美好的...