数组类型

  数组是一种常见的数据结构,可用于存放多个数据,每一个数组元素存放一个数据,通常可以通过下标进行访问其元素。

  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学习笔记六——数组的更多相关文章

  1. Java学习笔记七——数组工具类Arrays

    数组工具类Arrays Java提供的Arrays类里包含的一些static修饰的方法可以直接操作数组.若将里面的方法用熟的话,那开发效率会大大提高.下面介绍其中的方法. List<T> ...

  2. Java学习笔记六(I/O流)

    1.介绍 在实际开发过程中经常会用到数据的输入/输出操作,本篇博客着重分析一下,java中经经常使用到的有关IO操作的类.而在java中能够将经常使用的流分为两个部分:字节流和字符流. 1.流的抽象基 ...

  3. 【原】Java学习笔记012 - 数组

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // 需求:小店对自己的 ...

  4. 【原】Java学习笔记011 - 数组

    package cn.temptation; import java.util.Scanner; public class Sample01 { public static void main(Str ...

  5. 【原】Java学习笔记010 - 数组

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // 需求:一堆分数,要 ...

  6. Java学习笔记day04_数组

    1.switch case switch语句中表达式的数据类型是有要求的: JDK 1.0 ~ 1.4 , 数据类型接受byte, short, int, char JDK 1.5 , 数据类型接受b ...

  7. 1.14(java学习笔记)数组

    假如我们需要用到1000个相同类型的数据,肯定不可能创建1000个变量, 这样既不方便,也不直观,也不便于我们使用.这时就需要用到数组. 一.数组的声明与使用 public class Array { ...

  8. Java学习笔记六 常用API对象二

    1.基本数据类型对象包装类:见下图 public class Test { public static void main(String[] args){ Demo(); toStringDemo() ...

  9. Java学习笔记 03 数组

    一.数组的创建和使用 数组的创建和使用 >>创建方法1:先声明,再用new关键字分配内存(使用new关键字分配内存,整形数组中各个元素的初始值都为0) String str[]; str= ...

随机推荐

  1. ffmpeg 音频转换: use ffmpeg convert the audio from stereo to mono without changing the video part

    To convert the audio from stereo to mono without changing the video part, you can use FFmpeg: ffmpeg ...

  2. JS valueOf与字符串

    js在处理字符串和数值加运算的时候会转换数值为字符串 然后执行字符串连接 在覆盖String.prototype.valueOf之前,new String(111)这样的字符串与数值加法也是字符串连接 ...

  3. iOS常用库之Masonry

    简单介绍 Masonry 源码地址:https://github.com/Masonry/Masonry Masonry是一个轻量级的布局框架 拥有自己的描述语法 采用更优雅的链式语法封装自动布局 简 ...

  4. django单元测试

        django 单元测试小结 django 测试 从前很少写单元测试了,特别是web应用.最近不知不觉喜欢起来这个事情了,发现单元测试对于软件的模块,正交性有很大促进作用,因为函数,模块写的不合 ...

  5. DNX SDK版本 “dnx-clr-win-x86.1.0.0-beta5”无法安装

    打开VS2015,出现 “DNX SDK版本 “dnx-clr-win-x86.1.0.0-beta5”无法安装,该解决方案将对此会话使用DNX SDK版本“dnx-clr-win-x86.1.0.0 ...

  6. c语言折半查找

    折半查找又称为二分查找,它的前提是线性表中的记录必须是有序的(通常从小到大有序),线性表必须采用顺序存储. 折半查找的基本思想是 : 在有序表中,取中间记录作为比较对象,若给定值与中间记录的关键字相等 ...

  7. php版本引起的const问题

    刚刚遇到一个问题,类中定义了一个常量: const USER = ['aa', 'bb', 'cc']; 在类中的静态函数中调用以上常量不会出错.网站中所有的网页均能正常打开. 而当push到线上后, ...

  8. [Gnu]Centos7 解决 gdb 提示 Missing separate debuginfos

    Centos7 上使用gdb: $ gdb php $ run /home/www/2.php 运行完 run,后面跟着很长的提示: …. Missing separate debuginfos, u ...

  9. RTMP协议中文翻译(首发)(转)

    Adobe公司的实时消息传输协议 摘要 此备忘录描述了 Adobe公司的实时消息传输协议(RTMP),此协议从属于应用层,被设计用来在适合的传输协议(如TCP)上复用和打包多媒体传输流(如音频.视频和 ...

  10. 百度地图定位经纬度返回4.9E-324有关问题

    1.查看你的应用是否有权限查看你的地理位置信息,有可能是你没有加上权限,或者当你第一次打开app时询问你是否给予软件权限查看你的地理位置信息,你选择了否,所以经纬度就一直返回4.9E-324 2.查看 ...