java基础梳理:数组

创建数组

  下面这几种方式都可以创建一个数组

1         int[] a;
2         int[] b = new int[5];
3         String c[] = new String[] { "Hello", "World" };
4         double [] d = new double[6];

  我们比较习惯于第二种方式,第一种只是声明了数组并未初始化,使用的时候往往会因为忘记将变量初始化而报错。而第三种、第四种只是写法习惯上的问题。

  对于数组初始化,数字类型的值默认为0,字符串类型默认为null,布尔类型默认为false。java还提供了一种简单的方式,对于这种创建方式,数组的大小就是初始化值的个数。所以使用的时候要注意,因为数组一旦创建就无法改变大小,但是数组元素的值是可以改变的。

        int[] numbers={2005,1007,1994,2015};

  当用做返回值时,我们还可以通过不创建变量的情况下直接创建一个匿名数组

1     public String[] getSomethings(String input) {
2         //TODO: do something ...
3         return new String[]{input};
4     }

数组元素的访问

  数组的中的元素,我们是通过元素的索引去访问的

        int[] numbers = { 2005, 1007, 1994, 2015 };
        System.out.println(numbers[1]);

  一旦访问的下标超过数组的索引,就会报出数组索引超过边界的异常,所以在使用数组的时候这个也是要注意的一点。

  通常我们用for去便利一个数组中的元素,这种方式便于控制数组中的每个元素

        int[] numbers = { 2005, 1007, 1994, 2015 };
        for (int i = 0; i < numbers.length; i++) {
            System.out.println(numbers[i]);
        }

  也可以通过foreach的方式

数组常用的一些基本函数

  对于数组的操作,一般都在java.util.Arrays类中

  1.将数组作为字符串输出

1         int[] numbers = { 2005, 1007, 1994, 2015 };
2         String input = Arrays.toString(numbers);
3         System.out.println(input);

  2.数组的拷贝

        int[] numbers = { 2005, 1007, 1994, 2015 };
        int[] tempNumbers=numbers;//拷贝的是数组的引用
        System.out.println(Arrays.toString(tempNumbers));
        numbers[0]=1999;
        System.out.println(tempNumbers[0]);

  如果是想直接拷贝数组中的所有元素的值,可以通过Arrays.copyOf方法

        int[] numbers = { 2005, 1007, 1994, 2015 };
        int[] tempNumbers=Arrays.copyOf(numbers, 6);//对于多余的元素将被赋予0值
        System.out.println(Arrays.toString(tempNumbers));

  还可以通过System.arraycopy方法

        int[] numbers = { 2005, 1007, 1994, 2015 };
        int[] tempNumbers=new int[5];
        System.arraycopy(numbers, 0, tempNumbers, 1, numbers.length);
        System.out.println(Arrays.toString(tempNumbers));
        numbers[0]=2000;
        System.out.println(tempNumbers[0]);

  3.数组排序

        int[] numbers = { 2005, 1007, 1994, 2015 };
        Arrays.sort(numbers);
        System.out.println(Arrays.toString(numbers));

更多关于Array类可以到API文档查阅http://tool.oschina.net/apidocs/apidoc?api=jdk-zh

多维数组

  对于二维数组和不规则数组,其实就是把数组的元素再看成一个数组来处理就可以。

        String input="";
        int[][] table={{11,15,9},{16,7,10},{15,12,13}};
        for (int i = 0; i < table.length; i++) {
            int[] temp=table[i];
            for (int j = 0; j < temp.length; j++) {
                input+=String.valueOf(temp[j])+" ";
            }
        }
        System.out.println(input);

简单应用

  假设一个ATM机器里有六个钱箱,每个钱箱存放不同的面值,那么我们该如何初始化这些钱箱呢?一般情况下我们会这么做

 1 public class CashUnit {
 2     private int value;
 3
 4     public int getValue() {
 5         return value;
 6     }
 7
 8     public void setValue(int value) {
 9         this.value = value;
10     }
11
12     public int getCount() {
13         return count;
14     }
15
16     public void setCount(int count) {
17         this.count = count;
18     }
19
20     private int count;
21 }

1         CashUnit[] cashUnit=new CashUnit[6];
2         cashUnit[0].setValue(100);
3         cashUnit[1].setValue(50);
4         cashUnit[2].setValue(20);
5         cashUnit[3].setValue(10);
6         cashUnit[4].setValue(5);
7         cashUnit[5].setValue(1);

  我么还可以通过索引对应值的方式去实现

1     public static int[] cashValues = { 100, 50, 20, 10, 5, 1 };
2
3     public static CashUnit[] createCashUnits() {
4         CashUnit[] cashUnit = new CashUnit[6];
5         for (int i = 0; i < cashUnit.length; i++) {
6             cashUnit[i].setValue(cashValues[i]);
7         }
8         return cashUnit;
9     }
时间: 2024-10-05 04:58:45

java基础梳理:数组的相关文章

java基础梳理--朝花夕拾(二)

1.Java语言语法规则和文件格式: 第一个Java程序:/** 第一个Java程序:控制台输出Hello world!*/public class Test{    //访问修饰符 class关键词用于声明类使用 后面跟类名   public static void main(String args[]){//程序的入口,主函数main方法:        System.out.println("Hello world!");// 输出语句   }} Java语言区分大小写:publ

Java基础学习——数组初识(1)

Java基础学习--数组初识(1) 1什么是数组 Java中常见的一种数据结构就是数组,数组可以分为一维数组.二维数组和多维数组. 数组是由一组相同的变量组成的数据类型,数组中每个元素具有相同的数据类型,数组中的每个元素都可以用一个统一的数组名和下标来确定. 2 数组的使用 数组的一般使用步骤: 声明数组 分配内存给该数组 下面是一维数组为例: 数据类型  数组名 []: 数组名 = new 数据类型 [数据个数]: 2.1一维数组的声明与赋值 1.数组的声明 int  num [];    

java基础梳理--朝花夕拾(三)

1.了解面向对象的编程思想以及面向对象的特性: 对象: EveryThing is Object: 万物皆是对象,在程序中,我们可以将类.接口.方法.属性等都认为是对象: 面向对象: 是一种程序设计方法,它以对象作为基本的单元来构建系统,它利用对象将系统的复杂性隐藏在对象里(即封装),从而构建大型的工业级系统和大型系统. 面向对象包括三个过程: 面向对象分析(OOA).面向对象设计(OOD).面向对象编程(OOP). 面向对象的三个特性: 继承.封装.多态 面向对象和面向过程的区别? 面向过程就

Java基础:数组

转载请注明出处:jiq?钦's technical Blog 一.数组初始化 无论如何,当你要实例化一个数组对象的时候,必须要指定其大小. 不能在提供了initializer的情况下再去指定数组的维度!!! 正确的初始化方式有: 方式1:Int[][] array =new int[][]{{1,2},{3,4},{5},{2,4,2,1}}; 方式2:Int[][] array ={{1,2},{3,4},{5},{2,4,2,1}}; 方式3: Int[][] array =new int[

java 基础概念 -- 数组与内存控制

问题1: Java在声明数组的过程中,是怎样分配内存的? 在栈内存中 建一个数组变量,再在堆内存中 建一个 数组对象.至于详细的内存分配细节,还得看 该初始化是 数组动态初始化 还是 数组静态初始化. 问题2: Java数组的初始化方式 有哪几种? 两种:动态初始化 和 静态初始化.动态初始化 指的是 仅仅指定数组的长度,不指明每个数组的元素.  静态初始化 指的是 详细指定数组的每个元素. 问题3: Java 的基本类型数组 和 应用类型数组 之间,在初始化时的内存分配机制有什么差别? Jav

Java基础梳理之-IO操作

回想最开始学习Java IO相关的操作时, 被各种Reader/Stream绕晕. 现在再回头梳理这一块的知识点,感觉清晰了很多. Java作为编程语言,大部分东西都是从系统层面带来的, 所以学习的知识点虽然在Java, 但是背后的答案却在操作系统层面. 首先理解核心概念:IO, 究竟什么是IO? 所谓IO就是内存与外设相关的数据传输.常用的外设有硬盘,网卡,打印机, 鼠标...我们接触最频繁的IO操作是硬盘上文件的读写,所以学习IO基本上都是以文件操作为例子.IO作为操作系统的核心,知识点相当

Java基础总结--数组

---数组的定义---组织存储一组数据1.存放相同类型数据的集合--就是一种容器本质上变量也是一种容器--区别就是只存储了一个数据的容器--面对容器,而不是分散的数据eg.买一盘鸡蛋--蛋托其实就是容器2.数组可以开始从0自动编号--进而可以通过下标方便的访问每个数据3.数组本质就是对象,数组名就是存储该数组对象的地址,数组的元素相当于对象的成员变量--会被进行默认初始化4.数组声明和初始化格式--*直接声明并初始化(静态初始化方式) int[] arr = {1,2,3};*先创建再初始化 i

Java基础之数组(六)

数组变量属引用类型,数组可以看成是对象,数组中的每个元素相当于该对象的成员变量. 数组中的元素可以是任何数据类型,包括基本类型和引用类型. Java语言中声明数组时不能指定其长度(数组中元素的个数),声明数组时,仅创建一个引用变量,该变量存在栈中,并没有在堆中分配内存,此时引用变量的值为null. 数组对象的创建,new 数组元素的类型[数组元素的个数],创建数组对象时,才在堆中分配内存,因此也可以指定数组元素的个数,同时将对象的堆内存地址赋值给数组引用变量.创建时,没有初始化数组元素,此时为默

java基础之数组常用操作

常用的对数组进行的操作 1.求数组中最大值,最小值 思路:假设下标为0的元素是最大值,遍历数组,依次跟max进行比较,如果有元素比这个max还大,则把这个值赋给max.最小值同样 1 public class TestArray{ 2 public static void main(String[] args){ 3 int[] arr={23,45,234,576,34,87,34,12,67}; 4 int max=arr[0]; 5 int min=arr[0]; 6 for(int i=