从头认识java-14.2 进一步了解数组
这一章节我们来全面了解一下数组。
1.数组在初始化之前。我们不能使用他的引用来做不论什么事情。
package com.ray.ch14;
public class Test {
public static void main(String[] args) {
int[] a;
// System.out.println(a);//error,The local variable a may not have been
// initialized
// a[0]=0;//error,The local variable a may not have been initialized
}
}
上面的错误信息已经说明了观点。
2.数组在初始化的时候,假设是基础类型里面的数值型类型,那么初始化每一个元素为0,假设是char。则是‘空’,假设是boolean。则是false,假设是其它类型(包含不是数值型类型的基础类型)。则初始化每一个元素为null
package com.ray.ch14;
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
int[] a = new int[3];
String[] b = new String[3];
char[] c = new char[3];
boolean[] d = new boolean[3];
MyClass[] myClasses = new MyClass[3];
System.out.println(Arrays.toString(a));
System.out.println(Arrays.toString(b));
System.out.println(Arrays.toString(c));
System.out.println(Arrays.toString(d));
System.out.println(Arrays.toString(myClasses));
}
}
class MyClass {
}
输出:
[0, 0, 0]
[null, null, null]
[ , ,]
[false, false, false]
[null, null, null]
3.创建数组的两种方式。显式new与隐式new
package com.ray.ch14;
public class Test {
public static void main(String[] args) {
MyClass[] a = new MyClass[3];
MyClass[] b = { new MyClass(), new MyClass(), new MyClass() };
}
}
class MyClass {
}
上面两种创建方式是对等的。
4.上面的隐式new事实上就是聚集初始化。可是。他本身有一定的局限性,就是必须在当前位置初始化。我们以下再看看还有一种动态聚集初始化
package com.ray.ch14;
public class Test {
public static void main(String[] args) {
MyClass[] a = new MyClass[] { new MyClass(), new MyClass(),
new MyClass() };
MyClass[] b = { new MyClass(), new MyClass(), new MyClass() };
}
}
class MyClass {
}
观察上面的代码。数组a更加的灵活。
5.数组标识符是一个引用。指向堆里面的对象。
package com.ray.ch14;
public class Test {
public static void main(String[] args) {
int[] ints = new int[] { 1, 2, 3 };
System.out.println(ints);
}
}
输出:
[I@1bab50a
上面的输出事实上就是一个内存地址。
6.基础类型数组存储的是基础类型的值。对象数组存储的是对象的引用(内存地址)
package com.ray.ch14;
public class Test {
public static void main(String[] args) {
int[] ints = new int[] { 1, 2, 3 };
for (int i = 0; i < ints.length; i++) {
System.out.println(ints[i]);
}
MyClass[] myClasses = new MyClass[] { new MyClass(), new MyClass(),
new MyClass() };
for (int i = 0; i < myClasses.length; i++) {
System.out.println(myClasses[i]);
}
}
}
class MyClass {
}
输出:
1
2
3
com.ray.ch14.MyClass@c3c749
com.ray.ch14.MyClass@150bd4d
com.ray.ch14.MyClass@1bc4459
总结:上面总结了数组的多个方面。以及各个方面都做出来举例。
这一章节就到这里。谢谢。
-----------------------------------
从头认识java-14.2 进一步了解数组的更多相关文章
- Java 14带来了许多新功能
本文是作者翻译自java magazine的文章,我也将回持续的关注java的最新消息,即时和大家分享.如有翻译不准确的地方,欢迎大家留言,我将第一时间修改. Java 14包含比前两个发行版更多 ...
- Java IO: 字节和字符数组
原文链接 作者: Jakob Jenkov 译者:homesick 内容列表 从InputStream或者Reader中读入数组 从OutputStream或者Writer中写数组 在java中 ...
- Java 8 到 Java 14,改变了哪些你写代码的方式?
前几天,JDK 14 正式发布了,这次发布的新版本一共包含了16个新的特性. 其实,从Java8 到 Java14 ,真正的改变了程序员写代码的方式的特性并不多,我们这篇文章就来看一下都有哪些. La ...
- Java基础语法Day_05(数组的概念)
第14节 数组 day05_01_数组的概念 day05_02_数组的定义格式一_动态初始化 day05_03_数组的定义格式二_静态初始化 day05_04_数组的定义格式三_省略的 ...
- Java将文件转为字节数组
Java将文件转为字节数组 关键字:文件,文件流,字节流,字节数组,二进制 摘要:最近工作中碰到的需求是,利用http传输二进制数据到服务器对应接口,需要传输userId, file(加密后)等一系列 ...
- Java数据结构和算法之数组与简单排序
一.数组于简单排序 数组 数组(array)是相同类型变量的集合,可以使用共同的名字引用它.数组可被定义为任何类型,可以是一维或多维.数组中的一个特别要素是通过下标来访问它.数组提供了一种将有联系的信 ...
- [改善Java代码]避开基本类型数组转换列表陷阱
开发中经常用到Arrays和Collections这两个工具类. 在数组和列表之间进行切换.非常方便.但是也会遇到一些问题. 看代码: import java.util.Arrays; import ...
- Java中的二维数组
Java 中的二维数组 所谓二维数组,可以简单的理解为是一种"特殊"的一维数组,它的每个数组空间中保存的是一个一维数组. 那么如何使用二维数组呢,步骤如下: 1. 声明数组并分配空 ...
- java学习之二维数组
java当中的二维数组,存储一组比较特殊的对象.他存储一个数组,同时存储的数组当中又存储着元素. java二维数组的声明方式一: class Arr2Demo { public static void ...
- Java 反射 Array动态创建数组
Java 反射 Array动态创建数组 @author ixenos 注:java.lang.reflect.Array 是个反射工具包,全是静态方法,创建数组以多维数组为基准,一维数组只是特殊实现 ...
随机推荐
- [HNOI2011][bzoj 2329] 括号修复 [splay+前缀和]
题面: http://www.lydsy.com/JudgeOnline/problem.php?id=2329 思路: 显然,操作4中输出补全的最小费用是关键 这决定了我们不可能在splay上只维护 ...
- 满汉全席(banquet)
满汉全席(banquet) 题目描述 满汉全席是中国最丰盛的宴客菜肴,有许多种不同的材料透过满族或是汉族的料理方式,呈现在數量繁多的菜色之中.由于菜色众多而繁杂,只有极少數博学多闻技艺高超的厨师能够做 ...
- caffe+Ubuntu14.04.10 +cuda7.0/7.5+CuDNNv4 安装
特别说明: Caffe 官网地址:http://caffe.berkeleyvision.org/ 本文为作者亲自实验完成,但仅限用于学术交流使用,使用本指南造成的任何不良后果由使用者自行承担,与本文 ...
- tomcat defaultServlet
首先所有的请求进入tomcat,都会流经servlet,如果没有匹配到任何应用指定的servlet,那么就会流到默认的servlet. 默认的servlet是配置在$catalina/conf/web ...
- pat 甲级 团体天梯 L3-004. 肿瘤诊断
L3-004. 肿瘤诊断 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 在诊断肿瘤疾病时,计算肿瘤体积是很重要的一环.给定病灶 ...
- c#.net用JavaScript实现 时钟显示
原文发布时间为:2008-10-10 -- 来源于本人的百度文章 [由搬家工具导入] 显示日期,星期,以及时间: JS文件夹与default.aspx在同一个文件夹下 JS文件夹中有date.js文件 ...
- PE笔记之PE基本结构图(PE笔记索引)
PE(Portable Execute) 文件是Windows下可执行文件的总称,常见的有DLL,EXE,OCX,SYS等,事实上,一个文件是否是PE文件与其扩展名无关,PE文件可以是任 何扩展名.那 ...
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---3
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: <Linux命令行与shell脚本 ...
- 把握linux内核设计思想系列【转】
转自:http://blog.csdn.net/shallnet/article/details/47734053 版权声明:本文为博主原创文章,未经博主允许不得转载.如果您觉得文章对您有用,请点击文 ...
- 从零开始学习OpenCL开发(一)架构【转】
转自:http://blog.csdn.net/leonwei/article/details/8880012 多谢大家关注 转载本文请注明:http://blog.csdn.net/leonwei/ ...