No.10 数组

数组的定义:

  • 一维数组的声明方式: type var[]; type[] var;一般使用后者,前者为c/c++语言的书写方法。

(1)声明数组时不能指定其长度(数组中元素的个数)int [] num;
(2)定义数组对象的时候必须指定长度 num = new int[3];
(3)声明和创建数组同时进行int [] num = new int[3];

注意两者的不同:声明和创建数组不同,它是两个过程,只要生成数组对象就要初始化数组长度。

  • 二维数组的声明方式:type[][] var;二维数组对象的定义方式:var = new type[int a][int b];也可以使用:var = new type[int a][];type[0] = new type[int b]...... a代表行数,b代表列数,由于数组空间不是连续分配的,所以每一行的列数可以不同。
    二位数组被Java定义为数组的数组,即行数是一个数组(第一个索引指定有几行),列数是一个数组(第二个索引)指定一行中有几个元素

  • 数组的初始化过程:
    (1)动态初始化(定义数组的同时指定数组长度):
    一维数组的动态初始化:
    int [] num = new int [3];
    num[0] = 0 ;
    num[1] = 1 ;
    num[2] = 2 ;

    先定义好数组,再为数组的指定元素赋值;数组中只能存放相同类型的元素,所以所赋值必须为指定类型;
    二维数组的动态初始化
    type [][]num = new type[1][1];
    num[0][0] = new type(type value);
    num[0][1] = new type(type value);
    num[1][0] = new type(type value);
    num[1][1] = new type(type value);

    二维类型的数组,必须首先为行分配引用空间,然后再顺次为每一行分配空间。而且,必须为每个数组元素单独分配空间。**
    例如:

    String[ ][ ] s= new String[2][ ];
    s[0]= new String[2];//为第一行分配引用空间
    s[1]= new String[2]; //为第二行分配引用空间
    s[0][0]= new String("Good");// 为每个数组元素单独分配空间
    s[0][1]= new String("Luck");// 为每个数组元素单独分配空间
    s[1][0]= new String("to");// 为每个数组元素单独分配空间
    s[1][1]= new String("You");// 为每个数组元素单独分配空间
    (2)静态初始化:
    一维数组的静态初始化
    String[] s = {"abc","def","ghj"};
    二维数组的静态初始化
    int[ ][ ] num={{1,2},{2,3},{3,4,5}};
    注意此时的二位数组第一行有2个元素,第二行有2个元素,地三行有3个元素,如果不是一个3行3列的数组。

    int[][] num = {{1,2},{3,4,5}};
    System.out.println(num[0][2]);//ArrayIndexOutOfBoundsException
    System.out.println(num[1][2]);//5
    

注意:暂且可以理解为有几层{}就是几维数组;
详细的二维数组初始化过程移步

http://blog.csdn.net/chenshijun0101/article/details/6640377

增强for循环输出数组中的元素:

(1) 循环输出一维数组:

    int [] one = {1,2,3,4,4,4};
    for(int a : one){
        System.out.print(a + " ");
    }

(2)循环输出二维数组:

 int[][] num = {{1,2},{3,4,5}};
 for(int[] a : num1){
    for(int b : a){
    System.out.println(b);  
    }
  } 

数组常用操作:

(1)获取数组的长度:数组对象.length;值等于数组中元素的个数,而最后一个元素的索引值+1;
(2)数组的复制:System.arraycopy(源数组, 从源数组第几个元素开始复制, 目的数组, 从目的数组的第几个元素开始复制, 复制元素的个数)。该方法没有返回值。改变了目的数组中的元素值;注意第几个是索引值加1;

int[][] num1 = new int[2][2];
int[][] num = {{1,2},{3,4,5}};
System.arraycopy(num, 1, num1, 0, 1);
  for(int[] a : num1){
        for(int b : a){
            System.out.println(b);//3,4,5,0,0
        }
    }   

(3)数组的排序Array.sort(数组引用);按照默认方法对数组进行排序,若是int则从大到小排列;
(4)在已排序的数组中查找某个元素:Arrays.binarySearch(数组名)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,560评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,585评论 18 139
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,719评论 0 33
  • 题目类型 a.C++与C差异(1-18) 1.C和C++中struct有什么区别? C没有Protection行为...
    阿面a阅读 7,627评论 0 10
  • 最近买了一把尤克里里。 朋友很意外,问我为什么突然想学一门乐器了。其实这也算不上是心血来潮,一直都喜欢那种背着一把...
    ALA3637阅读 711评论 0 1