数组是具有相同数据类型的一组数据的集合.在程序设计中,这样的集合称之为数组.数组的每个元素都具有相同的数据类型,在Java中数组也被看为一个对象.

在里,了解了数组的定义之后, 我们知道了,数组并不是简单的由一组数组成的.而是由一组具有相同数据类型的数据组成的,可以是一组整型的数据,也可以是一组字符型的数组,这里的数可以来理解为代表的是数据,而不是数字的意思.


  • 关于一维数组与二维数组

一维数组实际上就是一组相同数据类型的数据的线性集合.

如果一维数组中的每一个元素任然是一个数组的话,那么它就构成了一个二维数组了.二维数组常用于表示表,表中的信息以行和列的形式组织.第一个代表元素的所在列,第二个下标是代表元素所在的列.

在理解上,一维二维,就是线与面的关系,或者说一条数据和一个数据表的关系.面由线组成,表由一条条数据组成.


  • 数组的创建于初始化

  • 一维数组的创建

创建一维数组,我们可以将代表数组的符号[]加在变量或者数据类型关键字后面,在通常情况下,数组的创建,都是使用第二种,及将[]加在数据类型关键字后面,这样在使用上,和在意义表达上也都要更加契合一些.

而数组的创建,不仅要new一个数组出来,我们还的为它分配内存.

int a[]; // 声明int型数组
int[] b=new int[4]; // 声明的同时直接分配内存大小
a = new int [4]; //为其分配内存大小

  • 一维数组的初始化

    在前面我们知道了,数组的每个元素的表示,都是以数组的下标来表示的.那么我们想要对数组中的元素进行操作的化,必然要从数组的下标入手.

  • 静态初始化

    我们可以直接在创建数组的时候使用{}直接为数组初始化赋值,实现一步直接创建并初始化数组赋初值.这样就省略了分配内存的步骤.

int[] b={1,2,3,4};
  • 动态初始化

    我们也可以直接通过数组的下标来直接对数组中的某个元素赋值初始化,称作动态初始化,动态初始化前,我们需要先为数组分配内存空间.
  int[] a;
a =new int[4];
a[0]=1;
a[1]=2;
a[3]=3;

动态初始化给数组赋值时,可以不对数组中的某些元素赋初始值,其将会输出为默认值0.

  • 二维数组的创建与初始化

二位数组前面我们说过了,就是在一维的基础上,再加一维.由线变面.

所以二位数组的创建与初始化与一维数组的大同小异.


int arr[][];
int[][] arr2;
arr2 = new int[2][4]; int[][] c={{2,3},{12,13},{22,23}};
System.out.println(c[0][1]);
int[][] d=new int[3][4];
d[0][0]=1;
d[0][1]=2;
d[0][2]=3;
d[0][3]=4;
d[1][0]=11;
d[1][1]=12;
d[1][2]=13;
d[1][3]=14;

  • 数组操作

  • 遍历数组

    通过for循环遍历数组,将数组内容全部输出.一维数组的遍历十分简单:

int[] a={1,2,3,4,5};
for(int i=0;i<a.length;i++){
System.out.print(a[i]+",");
}
  • 二维数组的遍历

相对的,二维数组的遍历就要稍微复杂一些,我们观察一维数组的遍历,了解到实现原理是通过for循环,来循环输出对应下标的数组元素,每循环一次下标就加1,然后使条件小于数组的长度.

那么二维数组的遍历应当可以使用一样的原理,不过二维数组有两个下标,怎么办呢,想来也是因该使用两个for循环来控制.

  // 二维数组的遍历
int[][] b={{2,3,4,5},{12,13,14,15},{22,23,24,25}};
for(int i=0;i<b.length;i++){ // 通过两个for循环遍历二维数组,外层循环遍历列的下标,
for (int j=0;j<b[i].length;j++){ // 内存循环循环遍历行的下标.
System.out.print(b[i][j]+","); //循环输出对应下标的元素.遍历出整个二维数组.
}
System.out.println(); // 输出换行(每行数据输出红后换行.)
}

  • 替换数组元素

Arrays类中给我们提供了fill方法用来填充后替换数组中的元素.其重载有多种方法提供不同形式的替换方式.fill(int[],int)方法可以将指定值替换(填充)到指定数组的所有元素中.fill(int[],int ,int,int)方法将指定值替换到指定范围的元素中,前两个int参数指定数组下标范围.

  //填充数组
Arrays.fill(c,6);
System.out.println(Arrays.toString(c));
Arrays.fill(c,3,7,10);
System.out.println(Arrays.toString(c));
  • 数组排序

    Arrays类中还提供了排序方法sort()其也重载有多个方法.最简单的排序方法sort(object)参数及需要排序的数组.
 Arrays.sort(c);
System.out.println(Arrays.toString(c));
  • 复制数组

    Arrays类也提供有copyOf()方法和copyOfRange()方法用来将一个数组复制到另一个新数组中.copyOfrange()方法可以指定copy范围.
//copy数组
int[] d=Arrays.copyOf(c,12);
int[] e=Arrays.copyOfRange(c,3,7);
System.out.println(Arrays.toString(d));
System.out.println(Arrays.toString(e));
  • 数组查询

    Arrays类的binarySearch()方法,可使用二分法来搜索指定数组.其也提供有多种重载方式,可以在指定范围搜索数组.返回值为数组所在位置(不是返回其下标).
//数组查询
//数组查询
System.out.println(Arrays.binarySearch(c,10));
System.out.println(Arrays.binarySearch(c,5,7,10));

关于Arrays(数组)类的其他方法,我们可以打开Arrays类进行查看.

关于数组的学习笔记就暂且记录到这里,关于数组的排序,又涉及到排序算法,而排序算法的种类又有很多,之后会专门单独总结一篇文章来系统的学习排序算法.这里就不涉及数组的排序了.

  • 源码
import java.sql.SQLOutput;
import java.util.Arrays; /**
* @outhor xiaoshe
* @date 2019/4/5 - @time 20:40
* 数组
*/
public class Sty_Array { public static void main(String[] args) {
Sty_Array sty_array = new Sty_Array();
sty_array.create_array();
sty_array.TraverArrays(); } // 两种数组的创建,我们可以将代表数组的符号[]加给变量或者数据类型关键字. public void create_array(){
// 一维数组
int[] a;
a =new int[4];
a[0]=1;
a[3]=3;
System.out.println(a[3]);
System.out.println(Arrays.toString(a));
System.out.println(a.length);
char[] b ={'a','b','c','d'};
System.out.println(Arrays.toString(b));
// 二维数组
int[][] c={{2,3},{12,13},{22,23}};
System.out.println(c[0][1]);
int[][] d=new int[3][4];
d[0][0]=1;
d[0][3]=4;
d[1][0]=11;
} // 数组操作
public void TraverArrays(){
//一维数组的遍历
int[] a={1,2,3,4,5};
int[] c={3,6,2,4,1,7,9,8,0};
for(int i=0;i<a.length;i++){
System.out.print(a[i]+",");
}
System.out.println("\n----分界线-----");
// 二维数组的遍历
int[][] b={{2,3,4,5},{12,13,14,15},{22,23,24,25}};
for(int i=0;i<b.length;i++){ // 通过两个for循环遍历二维数组,外层循环遍历列的下标,
for (int j=0;j<b[i].length;j++){ // 内存循环循环遍历行的下标.
System.out.print(b[i][j]+","); //循环输出对应下标的元素.遍历出整个二维数组.
}
System.out.println(); // 输出换行(每行数据输出红后换行.)
}
//数组排序
Arrays.sort(c);
System.out.println(Arrays.toString(c));
//copy数组
int[] d=Arrays.copyOf(c,12);
int[] e=Arrays.copyOfRange(c,3,7);
System.out.println(Arrays.toString(d));
System.out.println(Arrays.toString(e));
//填充数组
Arrays.fill(c,6);
System.out.println(Arrays.toString(c));
Arrays.fill(c,3,7,10);
System.out.println(Arrays.toString(c));
//数组查询
System.out.println(Arrays.binarySearch(c,10));
System.out.println(Arrays.binarySearch(c,5,7,10));
}
}

更新时间:

2019-4-5

23:14

[java初探05]__数组的简单认识及Arrays类的常用方法的更多相关文章

  1. 数组的三种声明方式总结、多维数组的遍历、Arrays类的常用方法总结

    1. 数组的三种声明方式 public class WhatEver { public static void main(String[] args) { //第一种 例: String[] test ...

  2. 数组的三种方式总结 多维数组的遍历 Arrays类的常用方法总结

    一.数组的三种声明方式总结 public class WhatEver { public static void main(String[] args) { //第一种 例: String[] tes ...

  3. 二位数组——扩展:冒泡排序、Arrays类

    1.冒泡排序 速记口诀(升序)   n个数字来排队:两两相比小靠前:外层循环n-1:内层循环n-i-1. 示例:定义一个数组,用冒泡排序将数组进行升序排序 关键代码: 输出结果: 2.Arrays 类 ...

  4. [Java初探08]__简单学习Java类和对象

    前言 在前面的学习中,我们对面向对象的编程思想有了一个基本的了解,并且简单的了解了类和对象的定义.那么类和对象在Java语言中是如何表现的,这次,就从实际出发,学习一下一下类和对象在Java语言中的使 ...

  5. [java初探06]__排序算法的简单认识

    今天,准备填完昨天没填的坑,将排序算法方面的知识系统的学习一下,但是在简单的了解了一下后,有些不知如何组织学习了,因为排序算法的种类,实在是太多了,各有优略,各有适用的场景.有些不知所措,从何开始. ...

  6. [java初探10]__关于数字处理类

    前言 在我们的日常开发过程中,我们会经常性的使用到数字类型的数据,同时,也会有众多的对数字处理的需求,针对这个方面的问题,在JAVA语言中.提供解决方法的类就是数字处理类 java中的数字处理类包括: ...

  7. [java初探09]__关于java的包装类

    前言 在Java语言的学习过程中,我们逐渐的理解了Java面向对象的思想,与类和对象的应用.但是在基本数据类型的使用上,我们无法将其定义为一个对象,通过使用对象的方法来使用它们,但是Java语言的思想 ...

  8. 【java】学习路线3-二维数组声明与初始化、Arrays类

    import java.util.Arrays;public class Learn02{    public static void main(String[] args){        Syst ...

  9. [Java初探07]__关于面向对象的简单认识

    前言 类和对象,在我们学习Java语言的过程中,它们无时无刻不存在着,在我们还远未详细弄明白它们的意义之前,在我们不知不觉的下意识里,我们都会直接或间接的用到它们,这是因为Java是一门面向对象的语言 ...

随机推荐

  1. Eclipse运行wordcount步骤

    Eclipse运行wordcount步骤 第一步:建立工程,导入代码. 第二步:建立文件写入数据(以空格分开),并上传到hdfs上. 1.创建文件并写入数据: 2.上传hdfs 在hadoop权限下就 ...

  2. js获取元素下标

    <!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title> ...

  3. SRM481

    250pt 题意:上帝知道一个“先有鸡还是先有蛋”的答案,上帝和N<=10^6个人说了答案,不过有x个人故意告诉了他们错误的答案,然后有一个人问了这N个人问题的答案,有M个人说先有鸡,N-M个人 ...

  4. CSS 基础 例子 图片拼合技术

    利用background-position xpos ypos 就是以图片的左上角顶点为原点,往下和右都为正,反之为负,移动图片 如: background-position: 15px 20px;( ...

  5. ASP.NET Web API 框架研究 ASP.NET 路由

    ASP.NET Web API 如果采用Web Host方式来寄宿,在请求进入Web API 消息处理管道之前,就会用ASP.NET 自身的路由系统根据注册的路由表,解析出当前请求的HttpContr ...

  6. Oracle EBS R12 XML数据表格的Excel脚本报表

    http://www.cnblogs.com/quanweiru/archive/2012/07/28/2612680.html 一.概述 在EBS系统中,报表是一个非常重要的客户化开发内容,也是系统 ...

  7. 微赞微擎V0.8以上版本:【数据库读写分离】实战教程 [复制链接]

    http://www.efwww.com/forum.php?mod=viewthread&tid=4870 马上注册,下载更多源码,让你轻松玩转微信公众平台. 您需要 登录 才可以下载或查看 ...

  8. 判断闰年的Java算法

    判断方法 普通年能被4整除且不能被100整除的为闰年. 世纪年能被400整除的是闰年 对于数值很大的年份,这年如果能整除3200,并且能整除172800则是闰年.如172800年是闰年,86400年不 ...

  9. js获取select标签选中的值及文本

    原生js方式: var obj = document.getElementByIdx_x(”testSelect”); //定位id var index = obj.selectedIndex; // ...

  10. Python--随机生成指定长度的密码

    在浏览别人博客时学习了random模块,手痒自我练习下,写个随机生成指定长度的密码字符串的函数,拿出来供各位参考: 废话不多说,上代码: # coding: utf-8 import random i ...