数组

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

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. 在windows下搭建爬虫框架,安装pywin32时出错?

    出错原因:pip install pypiwin32(安装文件是pypiwin32而不是pywin32) pip intall pywin32

  2. 如何调用docker swarm service的API来创建及更新服务

    平衡的推进,先作一个原型吧. #!/usr/bin/env python # -*- coding: utf-8 -*- import requests import json #定义docker s ...

  3. CF 612C. Replace To Make Regular Bracket Sequence【括号匹配】

    [链接]:CF [题意]:给你一个只含有括号的字符串,你可以将一种类型的左括号改成另外一种类型,右括号改成另外一种右括号 问你最少修改多少次,才能使得这个字符串匹配,输出次数 [分析]: 本题用到了栈 ...

  4. 14、Django实战第14天:列表筛选功能

    今天完成的是点击这些条件进行机构的筛选 首先来完成城市:当用户点击城市的时候,我们自动给它加一个参数(city.id) 编辑organization.views.py 刷新页面,发现筛选功能已经OK了 ...

  5. 【网络流】【Dinic】【Next Array】Dinic模板

    注意:有时加边不一定要加反向弧. Next Array版. #include<cstdio> #include<cstring> #include<algorithm&g ...

  6. 【小笔记】斜率优化的结论(WC)

  7. c pvr转存pvr.ccz格式 (转 http://www.cnblogs.com/howeho/p/3586379.html)

    pvr.ccz 是把pvr用zlib算法压缩后的图像格式,其优点是可以提升文件读取效率. 大多数情况下我们可以用一些工具来将pvr压缩到pvr.ccz ,下面提供一个c++方法来完成这个过程 int ...

  8. 将Java程序打jar包并运行

    1)接着上篇博客继续说手动编译之后,将代码打成jar包,然后直接“java -jar lz.jar"运行不成功的问题.还是先上代码: 这个是Demo类: package org.lz.dem ...

  9. Linux下的/etc/crontab文件和crontab -e命令区别及Crontab命令详解(转)

    /etc/crontab文件和crontab -e命令区别 1.格式不同 前者 # For details see crontabs # Example of job definition: # .- ...

  10. 使用gettext提取c#中的多语言占位符(nopCommerce示例篇)

    i18n国际化通常的作法是使用gettext,即在源码中使用特殊的关键字来标识这个字符串将可能被翻译,如 @if (Model.IsCustomerForumModerator) { <li c ...