java学习笔记六——数组
数组类型
数组是一种常见的数据结构,可用于存放多个数据,每一个数组元素存放一个数据,通常可以通过下标进行访问其元素。
Java数组要求所有数组元素具有相同的数据类型。因此,数组元素的数据类型是唯一的。
数组定义如下:
type[] arrayName; //推荐使用
type arrayName[]; //不推荐使用
通常我们都使用第一种方式。注意:数组的定义不能指定数组长度,只有在初始化时才指定长度。
数组初始化:
int[] intArr = new int[]{,,,,}; //静态初始化
int[] intArr2 = {,,,,}; //静态初始化的简化版,通常使用这种
int[] intArrDy = new int[]; //动态初始化
动态初始化时必须为数组指定长度,系统会自动为数组每个元素指定默认值,默认值与数组元素类型有关,具体如下:
- 整数类型(byte、short、int、long),默认值为0
- 浮点类型(float、double),默认值为0.0
- 字符类型(char),默认值为'\u0000‘
- 布尔类型(boolean),默认值为false
- 引用类型(类、接口和数组),默认值为null
使用数组
访问数组
数组最常用的用法是访问数组,包括对数组元素的读取和赋值。使用下标访问数组元素,如下:
int[] intArr = {,,,,};
intArr[] = intArr[] + intArr[];
System.out.println(intArr[]); //
下标从0开始,最后一个下标是length-1,即数组总长度-1。当下标大于等于数组长度时会产生数组下标越界异常(java.lang.ArrayIndexOutOfBoundsException)。
遍历数组
通常有两种方法遍历数组,如下:
int[] intArr = {,,,,};
//使用for语句
for (int i = ; i < intArr.length; i++) {
System.out.println(intArr[i]); //遍历打印数组元素
}
//使用foreach语句
for (int i : intArr) {
System.out.println(i); //遍历打印数组元素
}
区别在于,前者i表示数组下标,后者表示数组元素。再看下面的例子:
String[] strArr = {"aaa","bbb","ccc"};
//使用for语句
for (int i = ; i < strArr.length; i++) {
System.out.println(strArr[i]); //遍历打印数组元素
}
//使用foreach语句
for (String string : strArr) {
System.out.println(string); //遍历打印数组元素
}
而且,foreach语句一般不能修改元素,否则很容易出错。而且,foreach的效率略低于for语句,当数据量越大时效果越明显,当嵌套循环越多时越明显。
不过foreach编程时会方便一点,所以当数据量不是特别大时,使用foreach会方便点。
最后,给出一种效率最高的方法:
String[] strArr = { "aaa", "bbb", "vvv" };
for (int i = , len = strArr.length; i < len; i++) {
System.out.println(strArr[i]);
}
就是把获取数组长度放在了for语句的语句1的位置,这样就不必每次循环都去读取数组长度了。
java学习笔记六——数组的更多相关文章
- Java学习笔记七——数组工具类Arrays
数组工具类Arrays Java提供的Arrays类里包含的一些static修饰的方法可以直接操作数组.若将里面的方法用熟的话,那开发效率会大大提高.下面介绍其中的方法. List<T> ...
- Java学习笔记六(I/O流)
1.介绍 在实际开发过程中经常会用到数据的输入/输出操作,本篇博客着重分析一下,java中经经常使用到的有关IO操作的类.而在java中能够将经常使用的流分为两个部分:字节流和字符流. 1.流的抽象基 ...
- 【原】Java学习笔记012 - 数组
package cn.temptation; public class Sample01 { public static void main(String[] args) { // 需求:小店对自己的 ...
- 【原】Java学习笔记011 - 数组
package cn.temptation; import java.util.Scanner; public class Sample01 { public static void main(Str ...
- 【原】Java学习笔记010 - 数组
package cn.temptation; public class Sample01 { public static void main(String[] args) { // 需求:一堆分数,要 ...
- Java学习笔记day04_数组
1.switch case switch语句中表达式的数据类型是有要求的: JDK 1.0 ~ 1.4 , 数据类型接受byte, short, int, char JDK 1.5 , 数据类型接受b ...
- 1.14(java学习笔记)数组
假如我们需要用到1000个相同类型的数据,肯定不可能创建1000个变量, 这样既不方便,也不直观,也不便于我们使用.这时就需要用到数组. 一.数组的声明与使用 public class Array { ...
- Java学习笔记六 常用API对象二
1.基本数据类型对象包装类:见下图 public class Test { public static void main(String[] args){ Demo(); toStringDemo() ...
- Java学习笔记 03 数组
一.数组的创建和使用 数组的创建和使用 >>创建方法1:先声明,再用new关键字分配内存(使用new关键字分配内存,整形数组中各个元素的初始值都为0) String str[]; str= ...
随机推荐
- Coursera Machine Learning : Regression 多元回归
多元回归 回顾一下简单线性回归:一个特征,两个相关系数 实际的应用要比这种情况复杂的多,比如 1.房价和房屋面积并不只是简单的线性关系. 2.影响房价的因素有很多,不仅仅是房屋面积,还包括很多其他因素 ...
- 16.10.18学到的Java知识
1. 突然间发现自己忘了关于自增自减运算符放在变量前后的区别是什么了? 于是乎,我查了资料. 如果只对自变量进行加1或减1的时候,放在前面和后面都是没有区别的. 但是,如果自增自减运算符使用在需要赋值 ...
- perl chomp
在寻找k_word时,为了去打末尾的换行符,使用chomp;但 在windows下创建的的文件,读取一行,如一行为 weather 把它赋值为$str,然后print length($str),得 ...
- WIN32_LEAN_AND_MEAN宏
网上说: 不加载MFC所需的模块. 用英语解释:Say no to MFC 如果你的工程不使用MFC,就加上这句,这样一来在编译链接时,包括最后生成的一些供调试用的模块时,速度更快,容量更小. 我们经 ...
- html5 录制mp3音频,支持采样率和比特率设置
13年的时候做过html5录音,一个问题是保存的wav格式文件很大,当初用了一个迂回的方式,上传到服务器后调用 lame 编码器转换,但由于文件大,上传较慢.不得不说,前端技术发展真是日新月异,有人实 ...
- HandlerThread源码分析
其实原本HandlerThread的分析不应该单独开一篇博客的,应该在讲消息机制的那一片中一起分析. 但当时忘记了,而且今天第一次用MarkDown写博客,有点上瘾,就再来一篇,权当滥竽充数过过手瘾. ...
- WNDR3700V4恢复原厂固件(使用TFTP刷网件原厂固件)
WNDR3700v4原厂固件下载地址: http://support.netgear.cn/doucument/More.asp?id=2203 操作方法: 1.将设备断电: 2.按住设备背面的Res ...
- 2-2. Initializing Objects with Initializer Lists
Using Uniform Initialization to Construct a vector #include <iostream> #include <vector> ...
- linux 查看php-fpm 进程数
netstat -napo |grep "php-fpm" | wc -l
- UITableViewCell的highlighted 和selected 属性1
将UITableViewCell的selectedBackgroundView设置为按下图片的状态,同时不支持多选的情况下,遇到如下问题: 如果默认第一个cell处于selected状态,然后再点击其 ...