Java核心基础第4篇-Java数组的常规操作

Java数组

image-20210713152724370

一、数组简介

  • 数组是多个相同类型数据的组合,实现对这些数据的统一管理
  • 数组属引用类型,数组型数据是对象(Object)
  • 数组中的元素可以是任何数据类型,包括基本类型和引用类型
  • 数组类型是单一,只能存放相同类型的数据
  • 数组一旦创建,大小就是固定的
  • 数组中每个元素都有自己的位置(下标),从0开始

所以数组一般用来存放大小固定的数据:例如存放班级学生成绩

int scores = {100,90,98,99,88,80}

二、创建数组

关键数组的关键字:[]

int [] aint a[]含义是一样的,[]变量名前后是没有关系的。

2.1 只申明不赋值

type [] var;或者 type var [] ;

例如:

int score[];
int [] score;
Object [] obj;  //Object是java语法中老祖宗

2.2 申明并赋值

type [] var = new type[size]; //创建的是数据,数组的元素为空。值默认的就是该类型的默认值

type [] var = {elm,elem2,elem3,...} //创建的同时,把数据也赋值了

public static void main(String[] args) {

    // 申明 默认值
    int score[] = new int[9];
    for(int i = 0;i<score.length;i++) {
        System.out.print(score[i]+"\t");
    }

    System.out.println("------------");
    //创建并且赋值
    int score2[] = {100,90,88,85,66};
    for(int i = 0;i<score2.length;i++) {
        System.out.print(score2[i]+"\t");
    }
image-20200821091300927

2.3 new数组内存模型

new:java中的关键字,主要作用用来在内存中,开辟新的空间,从而创建新的对象

image-20200821093935851

2.4 下标操作元素

2.4.1 通过下标给元素赋值

int score[] = new int[9];

//指定元素赋值
score[2] = 10;
score[5] = 50;

2.4.2 通过下标获取元素内容

int num2 = score[2];
System.out.println("num2="+num2);

for(int i = 0;i<score.length;i++) {
    System.out.print(score[i]+"\t");
}

2.5 注意事项

  • Java中使用关键字 new 创建数组对象
  • 定义并用运算符 new 为之分配空间后,才可以引用数组中的每个元素;
  • 数组元素的引用方式:数组名[数组元素下标]
    • 数组元素下标可以是整型常量或整型表达式。如a[3] , b[i] , c[6*i];
    • 数组元素下标从0开始;长度为n的数组合法下标取值范围: 0 - n-1;如int a[]=new int[3]; 可引用的数组元素为a[0]、a[1]、a[2]
  • 每个数组都有一个属性 length 指明它的长度,例如:a.length 指明数组 a 的长度(元素个数)
image-20200821094832884

三、遍历数组

遍历数组可以通过下标,或者增强foreach循环来进行元素的遍历

3.1 普通for循环

因为可以使用arr[index]方式访问元素,所以我们可以通过arr.length来循环获取不同索引的值;

但是注意:索引的范围是:0-(length-1),不能大于等于length因为下标是从0开始计算。不然抛出数组越界异常

int score[] = {100,90,88,85,66};
for(int i = 0;i<score.length;i++) {
    System.out.println(score2[i]);
}

以上就是将score数组中所有的元素遍历了一次,并打印出来

3.2 增强for循环

Java有一种功能很强的循环结构,可以用来依次处理数组中的每个元素而不必为指定下标值而分心。
这种增强的for循环的语句格式为:

for(variable : arr)statement

例如:

int score[] = {100,90,88,85,66};
for(int ele:score){
    System.out.println(ele);
}

这种语法和上面普通的for循环达到的效果是一样的。这种for each循环语句显得更加简洁、更不易出错

四、数组拷贝

如果希望将一个数组的所有值拷贝到一个新的数组中去,就要使用Arrays类的copyOf方法:

第2个参数是新数组的长度。这个方法通常用来增加数组的大小

int score[] = {100, 90, 88, 85, 66};

//长度超过原数据的部分:使用默认0替代
int[] newArr01 = Arrays.copyOf(score, 10);

//长度不足的,从前往后取对应的数据
int[] newArr02 = Arrays.copyOf(score, 3);

System.out.println("原数组 = " + Arrays.toString(score));
System.out.println("新数组1 = " + Arrays.toString(newArr01));
System.out.println("新数组2 = " + Arrays.toString(newArr02));
image-20210713155112696

注意事项:

  • 如果数组元素是数值型,那么多余的元素将被赋值为0;
  • 如果数组元素是布尔型,则将赋值为false。
  • 相反,如果长度小于原始数组的长度,则只拷贝最前面的数据元素。

五、数组排序

5.1 Arrays工具类排序

java.util.Arrays:属于工具类,所以在使用之前,必须先导包

public static void main(String[] args) {    int score [] = {99,89,78,88,69,70};    String ch[] = {"B","C","A","F","D"};    System.out.println("排序前:");    for (int i = 0; i < ch.length; i++) {        System.out.print(ch[i]+"\t");    }    System.out.println();    //进行排序    //1.只提供了升序排序 从小到大  没有提供降序。自己去实现    //2.也叫做自然顺序。 A(65) B(66) C(67) D(68)    Arrays.sort(ch);    System.out.println("排序后:");    for (int i = 0; i < ch.length; i++) {        System.out.print(ch[i]+"\t");    }}
image-20200821134539385

4.2 通过算法实现排序(冒泡)

升序为例:

  1. 将相邻的两个数,进行比较,将大的数据往后移动。依次循环进行比较,从而找到最大的数据
  2. 由于每一次循环只能确定一个数据,所以需要多次嵌套循环来完成最终的排序
  3. 详细如下图
冒泡排序
public static void main(String[] args) {    int score [] = {99,89,78,88,69,70};    //i=0 {89,78,88,69,70,99};    //i=1 {78,88,69,70,89,99};    //i=2 {78,69,70,88,89,99};    System.out.println("第原始的结果:");    for (int j = 0; j < score.length; j++) {        System.out.print(score[j]+"\t");    }    System.out.println();    //排序:把前面几次排好了,最后一个自动确定了位置 。少排序一次    //每次选一个最大的    for (int i = 0; i < score.length-1; i++) {        //相邻的两个进行比较,把大的往后移        for (int j = 0; j < score.length-1-i; j++) {            //如果说 前面比后面的大,两者更换位置            if(score[j]>score[j+1]) {                //两两互换,通过临时变量                int temp = score[j];                score[j] = score[j+1];                score[j+1] = temp;            }        }        System.out.println("第"+(i+1)+"次执行的结果:");        for (int j = 0; j < score.length; j++) {            System.out.print(score[j]+"\t");        }        System.out.println();    }}

本博文由 IT蚱蜢哥 原创发布!欢迎转载,注明出处!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 119,988评论 1 241
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 52,451评论 1 202
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 75,316评论 0 168
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 36,762评论 0 128
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 43,589评论 1 207
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 36,153评论 1 127
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 28,125评论 2 209
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 27,241评论 0 120
  • 想象着我的养父在大火中拼命挣扎,窒息,最后皮肤化为焦炭。我心中就已经是抑制不住地欢快,这就叫做以其人之道,还治其人...
    爱写小说的胖达阅读 26,193评论 5 173
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 30,305评论 0 179
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 27,513评论 1 170
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 28,746评论 1 179
  • 白月光回国,霸总把我这个替身辞退。还一脸阴沉的警告我。[不要出现在思思面前, 不然我有一百种方法让你生不如死。]我...
    爱写小说的胖达阅读 23,040评论 0 25
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 25,664评论 2 166
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 29,545评论 3 174
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 24,525评论 0 4
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 24,506评论 0 113
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 30,764评论 2 191
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 31,153评论 2 189

推荐阅读更多精彩内容