【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. ...
随机推荐
- location.href、location.assign和location.replace的区别
在写跳转页面的时候遇到个有意思的问题,RT的三个均能用来写跳转,总结了下它们之间的区别. 1.window.location.href=“url”; 改变url地址. location.hr ...
- 【原创】Maven cobertura整合多个子项目下的单测覆盖率报告
今天在调试一个UT job的时候发现找不到cobertural报告文件,后来发现在Maven的自项目里找到了对应的代码覆盖率报告,但都是是分散在每个子项目下面的,看起来很不方便.就在想是不是可以把这些 ...
- 洛谷——P1589 泥泞路
P1589 泥泞路 题目描述 暴雨过后,FJ的农场到镇上的公路上有一些泥泞路,他有若干块长度为L的木板可以铺在这些泥泞路上,问他至少需要多少块木板,才能把所有的泥泞路覆盖住. 输入输出格式 输入格式: ...
- 51nod 更难的矩阵取数问题(动态规划)
更难的矩阵取数问题 给定一个m行n列的矩阵,矩阵每个元素是一个正整数,你现在 在左上角(第一行第一列),你需要走到右下角(第m行,第n列),每次只能朝右或者下走到相邻的位置,不能走出矩阵.然后再从右下 ...
- 微信小程序开发教程(四)线程架构与开发步骤
线程架构 从前面的章节我们可以知道,.js文件是页面逻辑处理层.我们可以按需在app.js和page.js中添加程序在生命周期的每个阶段相应的事件.如在页面的onLoad时进行数据的下载,onShow ...
- POJ 2348 Euclid's Game(博弈论)
[题目链接] http://poj.org/problem?id=2348 [题目大意] 给出两个数,两个参赛者轮流用一个数减去另一个数的倍数,当一个数为0的时候游戏获胜, 求先手是否必胜 [题解] ...
- 【尺取法】【Multiset】bzoj1342 [Baltic2007]Sound静音问题
O(n)地枚举所有长度为k的段,每次暴力转移. 转移的时候只是从最后插入一个数,从前面删去一个数. 计算的时候要取当前的max和min. 用multiset(∵元素是可重的)以上这些操作都是O(log ...
- python3全栈开发-并发编程,多线程
一.什么是线程 在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程 线程顾名思义,就是一条流水线工作的过程,一条流水线必须属于一个车间,一个车间的工作过程是一个进程 车间负责把资源整合 ...
- 6.5(java学习笔记)其他流(字节数组流,数据流,对象流,打印流)
一.字节数组流 之前使用输入输出流的操作的对象是文件,而这里字节数组流操作的对象是内存,内存可以看做是一个字节数组. 使用字节数组流读写就可以看做是从内存A到内存B的读写,对象时内存即字节数组. 1. ...
- Eclipse / Pycharm | 使用过程中的一些问题笔记
最近有比较多的用到这两款工具,其中也遇到一些问题,知道了一些快捷键 快捷键什么的这里就不讲了,去网上搜搜,经常使用下,自然就熟悉了 主要记录一下我遇到的几个问题 文章目录 Pycharm出现的部分快捷 ...