【Java】Java_17 数组
数组
数组是一种数据类型,属于引用类型。
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 数组的更多相关文章
- 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[ ...
- Java基础——数组应用之StringBuilder类和StringBuffer类
接上文:Java基础——数组应用之字符串String类 一.StringBuffer类 StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和 ...
- JSon_零基础_007_将JSon格式的"数组"字符串转换为Java对象"数组"
将JSon格式的"数组"字符串转换为Java对象"数组". 应用此技术从一个json对象字符串格式中得到一个java对应的对象. JSONObject是一个“n ...
- java将数组中的零放到末尾
package com.shb.java; /** * 将数组中的0放到数组的后边,然后原来的非零数的顺序不改变 * @author BIN * */ public class Demo2{ publ ...
- Java中数组的特性
转载:http://blog.csdn.net/zhangjg_blog/article/details/16116613 数组是基本上所有语言都会有的一种数据类型,它表示一组相同类型的数据的集合,具 ...
- 在java 中,数组与 List<T> 类型的相互转换
在java中,数组与List<T> 之前进行互相转换,转换方法可总结为以下几种: 一. 将 数组转换成List<T> 1. 使用 Collections 的addAll 方法 ...
- Java RGB数组图像合成 ImageCombining (整理)
/** * Java RGB数组图像合成 ImageCombinning (整理) * * 2016-1-2 深圳 南山平山村 曾剑锋 * * 注意事项: * 1.本程序为java程序,同时感谢您花费 ...
- java对象数组
问题描述: java 对象数组的使用 问题解决: 数组元素可以是任何类型(只要所有元素具有相同的类型) 数组元素可以是基本数据类型 数组元素也可以是类对象,称这样的数组为对象数组.在这种情况下 ...
- Java中数组的初始化方式
Java中数组的初始化方式 初始化方式有两种: 1.静态初始化:初始化时由程序猿显式指定每一个数组元素的初始值,由系统指定数组长度 2.动态初始化:初始化时由程序猿仅仅指定数组长度,由系统为数组 ...
- Java动态数组
其中java动态数组: Java动态数组是一种可以任意伸缩数组长度的对象,在Java中比较常用的是ArrayList,ArrayList是javaAPI中自带的java.util.ArrayList. ...
随机推荐
- java类型强转
知乎: 首先基本数据类型不是对象,强转改的是值,分为有损和无损,有损会丢失数据细节. 然后对象,只有继承关系的类才能强转,改变的只是引用,而且向上转型是安全的,把你转为人类是安全的,你还是你,只是现在 ...
- Django 静态文件配置 (Nginx)
初学Django,在访问静态文件时候遇到很多误区,一直配置不成功,在此记录一下. Django静态文件访问分为两种:一种是Debug模式下,测试开发网站时对静态文件的访问,一种是实际生产环境中对静态文 ...
- 杀掉MYSQL死锁进程
vi /usr/local/killmysqlprocess.sh #!/bin/bash #*/1 * * * * /usr/local/src/killmysqlprocess.sh backdi ...
- CSS基本属性—文本属性和背景属性
一.CSS常用文本属性 [css中的颜色表示方式] 1.直接使用颜色的单词表示:red.green.blue 2.使用颜色的十六进制表示:#ff0000,#00ff00: 六位数,两两 ...
- Nodejs微信与Bot framework通过Direct Line连接
背景 最近开发了一个Bot Framework的小工具,能够通过Luis分析出用户输入的文本,对文本中的StyleNo/FabricNo/TrimNo提取出来,并传入另一个小系统进行查询出结果,包括文 ...
- HDU 2162(注意初始化位置!)
Add ‘em Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- Miller-Rabin与Pollard-Rho备忘
Miller-Rabin素性测试算法: 根据费马小定理当p为素数时成立,所以如果存在一个a使x不满足此定理,则x必然不为素数. 但这是充分条件而不是必要条件,所以对于每个a,可能存在满足定理的x,这时 ...
- 【主席树】bzoj2588 Spoj 10628. Count on a tree
每个点的主席树的root是从其父转移来的.询问的时候用U+V-LCA-FA(LCA)即可. #include<cstdio> #include<algorithm> using ...
- 【贪心】【二维偏序】【权值分块】bzoj1691 [Usaco2007 Dec]挑剔的美食家
既然题目中的要求满足二维偏序,那么我们很自然地想到将所有东西(草和牛)都读进来之后,对一维(美味度)排序,然后在另一维(价值)中取当前最小的. 于是,Splay.mutiset.权值分块什么的都支持查 ...
- python3开发进阶-Django框架中的ORM的常用(增,删,改,查)操作
阅读目录 如何在Django终端打印SQL语句 如何在Python脚本中调用Django环境 操作方法 单表查询之神奇的下划线 ForeignKey操作 ManyToManyField 聚合查询和分组 ...