首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【趣学程序】Java中的数组

【趣学程序】Java中的数组

作者头像
趣学程序-shaofeer
发布2019-07-27 18:29:11
5280
发布2019-07-27 18:29:11
举报

数组简介:

数组(Array)是Java 语言中内置的一种基本数据存储结构,通俗的理解,就是一组数的集合,目的是用来一次存储多个数据。数组是程序中实现很多算法的基础,可以在一定程度上简化代码的书写。

注意

  1. 数组的好处:数组里的每个元素都有编号,编号从0开始,并且依次递增,方便操作这些元素;
  2. 使用Java数组:必须先声明数组,再给该数组分配内存;
  3. 数组对应在内存中一段连续空间。
  4. 数组元素必须是相同数据类型,也可以是引用数据类型,但是同一个数组中的元素必须是同一类数据类型。

一维数组

一维数组:可以理解为一列多行、类型相同的数据,其中每个数据被称为数组元素;

一维数组的声明方式:
type varName[]; 或 type[] varName;(推荐)Eg:int age[]; int []age;
数组的长度一旦确定,就不能改变,数组是定长的;
错误的声明:Eg:int a[5];

数组的初始化

Java中的数组必先初始化才可以使用,所谓初始化就是为数组的数组元素分配内存,并为每个数组元素赋值;

数组初始化的两种方式

  1. 静态初始化:初始化时由我们自己指定每个数组元素的初始值,由系统决定需要的数组长度;
格式:数组名 = new 数组类型[]{元素1,元素2,元素3...元素n};简化语法:数组名 = {元素1,元素2,元素3...元素n};

int[] arr = new int[]{1,2,3,4,5,6};
int[] arr = {1,2,3,4,5,6};
  1. 动态初始化:初始化时由我们指定数组的长度,由系统为数组元素分配初始值;
格式:数组名 = new 数组类型[数组长度];
int arr = new int[20];
注意:设置了20长度即为只能最多保存20个元素。

代码示例

package reviewDemo;/** * 声明数组及初始化 */public class Demo3 {    public static void main(String[] args) {        int []age = new int[10];        //动态初始化        for (int i = 0; i < age.length; i++) {            age[i] = i;            System.out.print(age[i]+"     ");        }    }}
输出:0     1     2     3     4     5     6     7     8     9     

数组的使用:

Java语言的数组索引是从0开始的,也就是说数组里的第一个元素的索引是0,第二个元素的索引是1,依次可以类推。

常见操作

给数组元素赋值    数组名[索引] = 数组类型的值 ;    arr[0] = 10;    arr[1] = 11;
访问数组元素    数组类型 变量 = 数组名[索引];    int num = arr[0];
得到数组的长度    int len  = 数组名.length;  //length是数组的属性    int len = arr.length;
遍历数组(备注:length 属性和循环语句)    数组元素的索引范围(0,长度—1) 

代码示例

Eg:判断数组是否重复package reviewDemo;/** * 判断数组是否重复 */public class Demo3 {    public static void main(String[] args) {        int []age = {1,2,3,4,5,6,5};        for (int i = 0; i < age.length-1; i++) {//双层循环,定住一个,再考虑下一个!            for (int j = i+1; j < age.length; j++) {                if(age[i] == age[j]){                    System.out.println("有重复的!"+i+"  "+j);                    break;                }            }        }    }}
求最大值:package reviewDemo;
public class Demo4 {    public static void main(String[] args) {        int age[] = new int[] { 12, 26, 3, 60, 55, 6, 48, 4, 98 };        int max = age[0];        for (int i = 0; i < age.length; i++) {            if (max < age[i]) {                max = age[i];            }        }        System.out.println(max);
    }}
经典用法:冒泡法排序class Bubblesort{    public static void main(String args[])    {        int [] arr={5,1,6,4,2,8,9};        bubble(arr);        printarray(arr);
    }    public static void bubble(int[] arr)    {        for (int i=0;i<arr.length-1 ;i++ )         {            for (int y=0;y<arr.length-i-1 ; y++) //让每一次比较的元素减少,-1是为了防止数组角标越界;            {                if(arr[y]>arr[y+1])  //相邻两元素相比                {                    int temp = 0;                    temp = arr[y];                    arr[y] = arr[y+1] ;                    arr[y+1] = temp;                }            }        }    }    public static void printarray(int[] arr)    {
        for (int i=0;i<arr.length ;i++ )         {            if(i!=arr.length-1)            System.out.print(arr[i]+",");                           else                System.out.println(arr[i]);        }    }
}
//选择排序public class Demo6 {    public static void main(String[] args) {        int []age = {1,2,36,363,56,95,12,32,1232,3263};
        for (int i = 0; i < age.length; i++) {            for (int j = i+1; j <= age.length-1; j++) {                if(age[i] > age[j]){                    int temp = age[i];                    age[i] = age[j];                    age[j] = temp;                }            }        }        System.out.println(Arrays.toString(age));    }}    //输出为:[1, 2, 12, 32, 36, 56, 95, 363, 1232, 3263]

二维数组:

二维数组:(其实是一个一维数组,它的每一个元素又是一个一维数组),

结构:{    {1, 2, 3, 4, 5, 6, 7, 8, 9},    {1, 2, 3, 4, 5, 6, 7, 8, 9},    {1, 2, 3, 4, 5, 6, 7, 8, 9},    {1, 2, 3, 4, 5, 6, 7, 8, 9}}

初始化

  1. 动态初始化
int[ ][ ]  arr = new int[3][2];定义了一个二维数组,其中有3个一维数组,每一个一维数组中有2个元素
  1. 静态初始化
int[ ][ ]  arr = new int[][]{{1,2},{3,4},{5,6}};int[ ][ ]  arr = {{1,2},{3,4},{5,6}};

代码示例

Eg:public class Demo3 {    public static void main(String[] args) {        int age[][] = new int[][]{{1,2},{3,4},{5,6,7}};System.out.println(age[0].length);//2        System.out.println(age[2].length);//3}}

操作数组的工具类-Arrays

常用方法

static int binarySearch(type[] a, type key)     使用二分搜索法来搜索key元素在数组中的索引;    若a数组不包括key,返回负数。(该方法必须已按升序排列后调用)。 
static int binarySearch(type[] a, int fromIndex, int toIndex, type key)     使用二分搜索法来搜索key元素在数组中从fromIndex到toIndex的索引;    若a数组不包括key,返回负数。(该方法必须已按升序排列后调用)。
static boolean[] copyOf(type[] original, int newLength) 复制指定的数组见下面备注
static byte[] copyOfRange(type[] original, int from, int to) 将数组的指定范围复制到一个新数组。 
static boolean equals(type[] a, type[] a2)     如果两个数组长度相等和元素一一相等,则返回 true 
static void fill(type[] a, type val) 将a数组所有元素都赋为val。
static void fill(type[] a, int fromIndex, int toIndex, type val)     将a数组从formIndex 到tiondex索引之间的元素都赋为val。  
static void sort(type[] a) //sort(int[] arr)    对指定的数组按数字升序进行排序。 
static void sort(type[] a, int fromIndex, int toIndex)     对指定数组的从formIndex 到tiondex索引之间的元素按数字升序进行排序。 
static String toString(type[] a)     返回指定数组内容的字符串表示形式。多个数组元素之间用英文逗号或空格隔开。

代码示例

Eg:package reviewDemo;
import java.util.Arrays;
//使用Arrays类public class Demo4 {    public static void main(String[] args) {        int[] age = new int[] { 12, 26, 3, 60, 55, 6, 48, 4, 98 };        System.out.println(Arrays.toString(age));//直接打印出数组的方法
        int []age2 = {1,2,3,4,5,6,98,65,23};        int i = Arrays.binarySearch(age2, 98);        System.out.println(i);    }}

Java5新特性对数组的支持:

增强for循环 → for-each
for (参数类型 参数名 : 数组名) {        代码块}
Eg:package reviewDemo;
public class Demo6 {    public static void main(String[] args) {        int []age = {1,2,3,69,36,636,459};        for (int i : age) {            System.out.println(i);        }    }}    这样就用for-each把数组遍历输出!
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 趣学程序 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数组简介:
    • 一维数组
      • 代码示例
      • 数组的使用:
      • 代码示例
    • 二维数组:
      • 代码示例
    • 操作数组的工具类-Arrays
      • 代码示例
    • Java5新特性对数组的支持:
    相关产品与服务
    数据保险箱
    数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档