`
h389301776
  • 浏览: 9399 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

第五章:数组 学习笔记

 
阅读更多

第五章:数组

1.数组概述

数组可以看成是多个相同类型数据组合,对这些数据的统一管理。

数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。

数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型。

一维数组的声明方式:

type  var[] ; type [] var ;

例如:

 int a1[] ;   int [] s2;

 double b[];

 person [] p1;

 Sting s1[];

Java语言中声明数组时不能指定其长度(数组中元素的个数),例如:

  int a[5];//非法

2.数组对象的创建

Java中使用关键字new创建数组对象,格式:

数组名 =  new  数组元素的类型 [数组元素的个数]

例如:

public class Test {

    public static void main(String[] srgs){

        int [] s;

        s = new int[5];

        for (int i = 0;i<5;i++){

            s[i]=i;

            System.out.print(" "+s[i]);

        }

    }

}

// 0 1 2 3 4

 

3.数组的初始化

动态初始化:

public class Test {

public static void main(String[] srgs){

        int a [];

        a = new int[3];

        a[0] = 3; a[1] = 9; a[2] = 8;

        Date days[];

        days = new  Date[3];

        days[0] = new Date(1,4,2004);

        days[1] = new Date(2,4,2004);

        days[2] = new Date(3,4,2004);

    }

 

}

 

class Date{

    int day,month,year;

    Date(int dint m, int y) {

         day = d;

         month = m;

year = y;

    }

}

静态初始化:

public class Test {

public static void main(String[] srgs){

        int a [] = {3,9,8}

        Date days[]={

        new Date(1,4,2004)

        new Date(2,4,2004)

        new Date(3,4,2004)

    }

}

4.数组元素的引用

每个数组都有一个属性length指明它的长度,例如:

a.length的值为数组a的长度(元素个数)。

例子打印出数组:

public class TestArray {

    public static void main(String[] args) {

        int[] a = {2, 4, 6, 7, 3, 5, 1, 9, 8}; //静态初始化

 

              for(int i=0; i<a.length; i++) {

                     System.out.print(a[i] + " ");

              }

    }

}

 

1)数组排序法例子如下:

public class NumSort {

    public static void main(String[] args) {

 

        int[] a  = {2,4,6,7,3,5,1,9,8};

        print(a);

        selectionSort(a);

         print(a);

    }

    private static void selectionSort(int[] a) {  //排序法

        int k, temp;

        for(int i=0; i<a.length; i++) {

            k = i;

            for(int j=k+1; j<a.length; j++) {

                if(a[j] < a[k]) {

                    k = j;

                }

            }

 

            if(k != i) {

                temp = a[i];

                a[i] = a[k];

                a[k] = temp;

            }

        }

    }

    private static void print(int[] a) {

        for(int i=0; i<a.length; i++) {

            System.out.print(a[i] + " ");

        }

        System.out.println();

    }

}

//2 4 6 7 3 5 1 9 8

//1 2 3 4 5 6 7 8 9

 

2)冒泡排序法

public class TestDateSort {

    public static void main(String[] args) {

        Date[] days = new Date[5];

        days[0] = new Date(2006, 5, 4);

        days[1] = new Date(2006, 7, 4);

        days[2] = new Date(2008, 5, 4);

        days[3] = new Date(2004, 5, 9);

        days[4] = new Date(2004, 5, 4);

        bubbleSort(days);

        for(int i=0; i<days.length; i++) {

            System.out.println(days[i]);

        }

          }

 

    public static Date[] bubbleSort(Date[] a){ //冒泡排序法

        int len = a.length;

        for(int i = len-1;i>=1;i--){

            for(int j = 0;j<=i-1;j++){

                if(a[j].compare(a[j+1]) > 0){

                    Date temp = a[j];

                    a[j]=a[j+1];

                    a[j+1]=temp;

                }

            }

        }

        return a;

    }

}

class Date {

    int year, month, day;

    Date(int y, int m, int d) {

        year = y; month = m; day = d;

    }

    public int compare(Date date) {

        return year > date.year ? 1

                : year < date.year ? -1

                : month > date.month ? 1

                : month < date.month ? -1

                : day > date.day ? 1

                : day < date.day ? -1 : 0;

    }

    public String toString() {

        return "Year:Month:Day -- " + year + "-" + month + "-" + day;

    }

}

//Year:Month:Day -- 2004-5-4

//Year:Month:Day -- 2004-5-9

//Year:Month:Day -- 2006-5-4

//Year:Month:Day -- 2006-7-4

//Year:Month:Day -- 2008-5-4

 

3)查找法

数组a12的位置

public class TestSearch {

    public static void main(String[] args) {

        int a[] = { 1, 3, 6, 8, 9, 10, 12, 18, 20, 34 };

        int i = 12;

        System.out.println(search(a, i));

           }

 

    public static int search(int[] a, int num) {

        for(int i=0; i<a.length; i++) {

            if(a[i] == num) return i;

        }

        return -1;

    }

 

  }

//6

4)二分法查找

数组a12的位置

public class TestSearch {

    public static void main(String[] args) {

        int a[] = { 1, 3, 6, 8, 9, 10, 12, 18, 20, 34 };

        int i = 12;

         System.out.println(binarySearch(a, i));

    }

public static int binarySearch(int[]a, int num) {

        if (a.length==0) return -1;

 

        int startPos = 0;

        int endPos = a.length-1;

        int m = (startPos + endPos) / 2;

        while(startPos <= endPos){

            if(num == a[m]) return m;

            if(num > a[m]) {

                startPos = m + 1;

            }

            if(num < a[m]) {

                endPos = m -1;

            }

            m = (startPos + endPos) / 2;

        }

        return -1;

    }

 

}

//6下标值

 

5.二维数组

二维数组可以看成以数组为元素的数组。例如:

int a [] [] = {{1,2},{3,4,5,6},{7,8,9}};

java中多维数组的声明和初始化应按照从高维到低维的顺序进行。

静态初始化:

int a [] [] = {{1,2},{3,4,5,6},{7,8,9}};

动态初始化:

int a[][] = new int [3] [5];

 

6.数组拷贝

使用java.lang.system类的静态方法

例子:

public class TestArrayCopy {

    public static void main(String args[]) {

        String[] s =

                {"Mircosoft","IBM","Sun","Oracle","Apple"};

        String[] sBak = new String[6];

        System.arraycopy(s,0,sBak,0,s.length); //从数组s中的第0个元素开始到s.length个元素拷贝到sBak中第0元素到s.length个位置

        for(int i=0;i<sBak.length;i++){

            System.out.print(sBak[i]+" ");

        }

 

        System.out.println();

        int[][] intArray = {{1,2},{1,2,3},{3,4}};

        int[][] intArrayBak = new int[3][];

        System.arraycopy

                (intArray,0,intArrayBak,0,intArray.length);

        intArrayBak[2][1] = 100;

 

        for(int i = 0;i<intArray.length;i++){

            for(int j =0;j<intArray[i].length;j++){

                System.out.print(intArray[i][j]+"  ");

            }

            System.out.println();

        }

    }

}

//1  2 

//1  2  3 

//3  100 

 

如果源数据数目超过目标数组边界会抛出

IndaxOutofBoundsException异常

分享到:
评论

相关推荐

    java各知识点详细总结(毕向东笔记整理)

    第一章:编程基础 3-11 第二章:数组 11 -31 第三章:面向对象程序开发 31 -74 第四章:异常机制 74 -89 第五章:多线程技术 89 -122122122 第六章:常用类 API 122API 122 API 122API 122API 122API 122API 122-...

    Java开发详解.zip

    020514_【第5章:面向对象基础】_对象数组笔记.pdf 020515_【第5章:面向对象基础】_内部类笔记.pdf 020516_〖第5章:面向对象基础〗_实例讲解—系统登陆笔记.pdf 020517_〖第5章:面向对象基础〗_实例讲解—单向...

    020514_【第5章:面向对象基础】_对象数组笔记.pdf

    java课程学习资料 若有侵权,请联系本人进行移除。

    word源码java-Play-with-Algorithm-Interview-Learningnotes:Play-with-Algori

    第三章:数组中的问题其实最常见 第四章:查找表相关问题 课程源码目录 第二章:面试中的复杂度分析 2-1 究竟什么是大O (Big O) [无代码] 2-2 对数据规模有一个概念 2-3 简单的复杂度分析 2-4 亲自试验自己算法的...

    javascript学习笔记(五) Array 数组类型介绍

    数组的创建 第一种: 代码如下: var colors = new Array(); var colors = new Array(20);//创建包含20项的数组 var colors = new Array(“Greg”);//创建包含1项,即字符串”Greg”的数组 var colors = new Array(...

    Java/JavaEE 学习笔记

    第五章 对象和类(OO思想).........53 第六章 高级语言特性........................59 第七章 异常.............74 第八章 图形用户接口:GUI.............78 第十一章 事件处理模型....................79 第十三...

    【SystemVerilog】路科验证V2学习笔记(全600页).pdf

    第五章 验证的管理 277 6.1 验证的周期检查 277 6.2 管理三要素 291 6.3 验证的收敛 303 6.4 问题追踪 314 6.5 团队建设 321 6.6 验证的专业化 330 第六章 验证平台的结构 48 2.1 测试平台 49 2.2 硬件设计...

    C#学习笔记-数组操作相关笔记(读自C#从入门到精通 第2版)

    int[] a / a = new int[5]{1, 2, 3, 4, 5} / a = new int[5] string[] week = { "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" }; for(int i = 0; i &lt; week.Length; i++) { Console.WriteLine(week[i]);

    J2EE学习笔记(J2ee初学者必备手册)

    第五章 对象和类(OO思想).........53 第六章 高级语言特性........................59 第七章 异常.............74 第八章 图形用户接口:GUI.............78 第十一章 事件处理模型....................79 第十三...

    Visual C#学习笔记光盘

    Visual C#学习笔记光盘 简介:本书由浅入深地讲解Visual C# 2005编程知识,全书内容分为6篇,共27章,第一篇介绍Visual Studio 2005开发环境和C#基础,其中包括Visual C# 2005简介,C#语言基础,面向对象编程...

    lrucacheleetcode-Udemy_LeetCodeInPython:Udemy课程学习笔记:LeetCodeinPython-50

    这是一个学习笔记 [目录] 内容 大多数代码是用Python3编写的。 评论中还给出了在真正的 LeetCode OJ 平台上测得的程序时空性能。 请注意,它们不是很准确,可能会不时发生变化。 算法:二分查找 在排序数组中查找...

    matlab note.docx

    MATLAB 学习笔记 包含基础的MATLAB学习语法等第一部分:计算器功能的实现 2 数值显示格式: 3 第二部分:作为程序语言编程使用 5 自定义函数 6 第三部分:变量与档案存取 8 结构化变量 8 多维数组 9 第四部分...

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

    丛书名: 学习笔记 出版社:清华大学出版社 ISBN:9787302282082 上架时间:2012-5-9 出版日期:2012 年5月 开本:16开 页码:564 版次:1-1 所属分类:计算机 &gt; 软件与程序设计 &gt; JAVA(J#) &gt; Java 编辑推荐   ...

    net学习笔记及其他代码应用

    33.写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的。 答:解1: select top 10 * from A where id not in (select top 30 id from A) 解2: select top 10 * ...

    PL/SQL学习笔记

    第三章 存储过程和函数 什么是过程?所有的pl/sql都叫过程 创建存储过程: create or replace procedure p1 (v1 int ,v2 int)--存储过程的参数列表 as --声明局部变量 begin null; end; 调用过程 1.declare调用 2....

    Shell脚本学习笔记

    第5章 脚本控制 97 5.1 处理信号 97 5.1.1 Linux信号回顾 97 5.1.2 生成信号 97 5.1.3捕获信号 99 5.1.4捕获脚本退出 99 5.1.4移除捕获 100 5.2 以后台模式运行脚本 100 5.3 作业控制 102 5.3.1查看作业 102 5.3.2...

    【c语言基础学习】c语言学习第五天作业和思维导图笔记

    c语言学习第五天作业和思维导图笔记,冒泡排序算法,初识字符数组。

    java从入门到精通视频教程(全94讲)学习笔记整理(齐全).docx

    坦克大战,简易QQ界面......P1第1讲-内容介绍.项目演示.原理剖析 变量.数据类型 -运算符.流程控制 -.流程控制 -类.对象 -成员属性.成员方法 -成员方法.构造方法 -this.类变量 -类方法、封装 -访问修饰符.重载.覆盖 -...

    c#学习笔记.txt

    c#学习笔记(1) 51099在线学习网发布 文章来源:网络收集 发布时间:2006-05-25 字体: [大 中 小] 51099在线学习网 http://www.51099.com 1, 结构(struct) 与 类(class) [attributes] [modifiers] struct ...

    JavaScript高级程序设计(第三版)学习笔记1~5章

    第2章,在html中使用JavaScript ... [removed]两个[removed]之间不应放脚本,因为并不会被执行[removed] [removed]标签有一个defer属性可以延迟脚本执行,但是并不保证会按脚本排列顺序执行 ...第3章,基本概

Global site tag (gtag.js) - Google Analytics