数组

数组是一种数据类型,属于引用类型。

1.定义数组

type[] arrayName;
type arrayNmae[];

以上2种定义数组方式的区别:

type[] arrayName:语义强,可读性好(推荐使用)

type arrayName[]:语义差,可读性差

注意:定义数组时布恩那个指定数组的长度。

2.数组的初始化

静态初始化:初始化由程序员显示指定每个数组元素的数据类型,由系统决定数组的长度

动态初始化:初始化由程序员只指定数据长度,由系统为数组元素分配初始值

静态初始化的语法如下:

arrayName = new Type[]{element1,element2...element4...}

简化后写法:

type[] arrayName = {element1,element2...element4...}

动态初始化:

arrayName = new type[length];

执行动态初始化时,程序员只需要指定数组的长度,即为每个数组元素指定所需的内存空间,系统将负责为这些元素分配初始值。指定初始值时,系统将按如下规则分配初始值。

  • 数组元素的基本类型是基本类型种的整数类型(byte、short、int、long),则数组元素的值为0;
  • 数组元素的基本类型是基本类型种的浮点类型(folat、double),则数组元素的值是0.0
  • 数组元素的基本类型是基本类型种的字符类型(char),则数组元素的值是'\u0000'
  • 数组元素的基本类型是基本类型种的布尔类型(boolean),则数组元素的值是false
  • 数组元素的基本类型是引用类型(类、接口、数组),则数组元素的值是null

3.数组的使用

3.1 读取数组元素

定义一个数组,并打印数组中的第一个值

package com.oliver.test;

public class TestArray {
public static void main(String[] args) {
//定义一个Object数组类型的变量,变量名为ObjArr
Object[] ObjArr;
//初始化数组变量,定义数组时所指定的数组元素的子类
ObjArr = new String[] {"jack","Alice"};
System.out.println(ObjArr[0]);
}
}

打印数组中的每个元素

package com.oliver.test;

public class TestArray {
public static void main(String[] args) {
//定义一个Object数组类型的变量,变量名为ObjArr
Object[] ObjArr;
//初始化数组变量,定义数组时所指定的数组元素的子类
ObjArr = new String[] {"jack","Alice"};
//循环打印数组元素
for(int i=0;i<ObjArr.length;i++){
System.out.println(ObjArr[i]);
}
}
}

错误一:java.lang.ArrayIndexOutOfBoundsException: 10

错误源码:

package com.oliver.test;

public class TestArray {
public static void main(String[] args) {
//定义一个Object数组类型的变量,变量名为ObjArr
Object[] ObjArr;
//初始化数组变量,定义数组时所指定的数组元素的子类
ObjArr = new String[] {"jack","Alice"};
System.out.println(ObjArr[10]);
}
}

错误分析:导致该错误的原因是因为需要打印的数组元素不存在(数组索引越界异常)

3.2 foreach循环

使用foreach循环,这种循环遍历无需获取数组和集合长度,无需根据索引来访问数组元素和集合元素,foreach循环自动遍历数组和集合的每个元素

语法:

for(type variableName : array | collection)

{

//variableName 自动迭代访问每个元素...

}

代码示意:

package com.oliver.test;

public class TestForeach {
public static void main(String[] args) {
String[] s = {"张三丰","张无忌","张飞"};
for(String n : s){
System.out.println(n);
} }
}

【Java】Java_17 数组的更多相关文章

  1. java中数组的相关知识

      1. 2.数组的命名方法 1)int[]ages=new int[5]; 2) int[]ages; ages=new int[5]; 3)int[]ags={1,2,3,4,5}; 4)int[ ...

  2. Java基础——数组应用之StringBuilder类和StringBuffer类

    接上文:Java基础——数组应用之字符串String类 一.StringBuffer类 StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和 ...

  3. JSon_零基础_007_将JSon格式的"数组"字符串转换为Java对象"数组"

    将JSon格式的"数组"字符串转换为Java对象"数组". 应用此技术从一个json对象字符串格式中得到一个java对应的对象. JSONObject是一个“n ...

  4. java将数组中的零放到末尾

    package com.shb.java; /** * 将数组中的0放到数组的后边,然后原来的非零数的顺序不改变 * @author BIN * */ public class Demo2{ publ ...

  5. Java中数组的特性

    转载:http://blog.csdn.net/zhangjg_blog/article/details/16116613 数组是基本上所有语言都会有的一种数据类型,它表示一组相同类型的数据的集合,具 ...

  6. 在java 中,数组与 List<T> 类型的相互转换

    在java中,数组与List<T> 之前进行互相转换,转换方法可总结为以下几种: 一. 将 数组转换成List<T> 1. 使用 Collections 的addAll 方法 ...

  7. Java RGB数组图像合成 ImageCombining (整理)

    /** * Java RGB数组图像合成 ImageCombinning (整理) * * 2016-1-2 深圳 南山平山村 曾剑锋 * * 注意事项: * 1.本程序为java程序,同时感谢您花费 ...

  8. java对象数组

    问题描述:     java 对象数组的使用 问题解决: 数组元素可以是任何类型(只要所有元素具有相同的类型) 数组元素可以是基本数据类型 数组元素也可以是类对象,称这样的数组为对象数组.在这种情况下 ...

  9. Java中数组的初始化方式

    Java中数组的初始化方式    初始化方式有两种: 1.静态初始化:初始化时由程序猿显式指定每一个数组元素的初始值,由系统指定数组长度 2.动态初始化:初始化时由程序猿仅仅指定数组长度,由系统为数组 ...

  10. Java动态数组

    其中java动态数组: Java动态数组是一种可以任意伸缩数组长度的对象,在Java中比较常用的是ArrayList,ArrayList是javaAPI中自带的java.util.ArrayList. ...

随机推荐

  1. ajax按钮改变数据状态

    1.html代码 <td> @if($project->done_deal==) <button type="button" class="btn ...

  2. Linux上安装Redis教程

    Redis的安装步骤: 步骤1.安装redis必须已经安装了gcc,如果没安装gcc 就使用命令 yum install -y gcc步骤2.下载redis包 下载地址:http://download ...

  3. 【转载】Linux中profile、bashrc、bash_profile之间的区别和联系

    如果你想对所有的使用bash的用户修改某个配置并在以后打开的bash都生效的话可以修改这个文件,修改这个文件不用重启,重新打开一个bash即可生效.~/.bash_profile:每个用户都可使用该文 ...

  4. 简单的curl抓取数据

    工欲善其事,必先利其器,数据抓取同样也是如此,PHP数据抓取常用CURL. CURL是一个使用libcurl库与各类服务器进行通讯,支持很多协议,如HTTP.FTP.TELNET等. curl_ini ...

  5. POJ 1776 Task Sequences(竞赛图构造哈密顿通路)

    链接:http://poj.org/problem?id=1776 本文链接:http://www.cnblogs.com/Ash-ly/p/5458635.html 题意: 有一个机器要完成一个作业 ...

  6. hdu4757(可持久化 Trie )

    hdu4757 题意 给出一棵树,每个节点有权值,每次查询节点 \((u, v)\) 以及 \(x\) ,问 \(u\) 到 \(v\) 路径上的某个节点与 \(x\) 异或最大的值是多少. 分析 T ...

  7. 51nod 最长公共子序列问题(动态规划)(LCS)(递归)

    最长公共子序列问题 输入 第1行:字符串A 第2行:字符串B (A,B的长度 <= 1000) 输出 输出最长的子序列,如果有多个,随意输出1个. 输入示例 abcicba abdkscab 输 ...

  8. 13、Django实战第13天:分页列表功能

    我们看课程 机构列表页是需要分页的 为了完成分页功能,我们需要用到Django的一个开源开发库django-pure-pagination workon mxonline pip install dj ...

  9. 3Sum Smaller -- LeetCode

    Given an array of n integers nums and a target, find the number of index triplets i, j, k with 0 < ...

  10. 【KM】POJ2195/HDU1533-Going home

    //最近没什么时间quq据说长得帅的人都在切八中,然而长得丑的人只能水水裸题 [题目大意] 给出一张地图及人和房屋的位置,求出每个人回到不同房屋所具有的最小代价和. [思路] 最小权匹配,先O(n^2 ...