Java数组

本章概述

1.一维数组入门
        ①数组定义、特点、内存分配
        ②使用一维数组存储数据
        ③for-each循环
2.一维数组的应用
        ①查询元素
        ②数组类型做形参
        ③查询最大值最小值
        ④添加元素或删除元素
        ⑤冒泡排序
        ⑥Arrays工具类
        ⑦理解main(String args[])
        ⑧可变参数
▪ 3.二维数组:二维数组含义、特点、内存分配、举例
    数组的特征:
         * 1.定义数组必须指定大小
         * 2.数组的每一个元素的内存都是连续的
         * 3.数组的随机访问操作,是一个常量时间 arr[index]
         * 4.每一个数组都内置了一个成员变量 length,表示数组的总长度
         * 5.数组增加元素,涉及增加位置后面的所有元素都要进行移动,所以该操作花费的时间是线性时间
         * 6.数组删除元素,涉及增加位置后面的所有元素都要进行移动,所以该操作花费的是时间线性时间
         * 7.数组的元素查找花费时间为线性时间,逐个遍历

上面的数组的特征转自 java中的数组 - acehm - 博客园

创建数组 (1)

数组是相同类型数据的有序集合.
        – 相同类型的若干个数据,按照一定先后次序排列组合而成。
        – 其中,每一个数据称作一个数组元素
        – 每个数组元素可以通过一个下标来访问它们.
数组特点:
        – 其长度是确定的。数组一旦被创建,它的大小就是不可以改变的。
        – 其元素必须是相同类型,不允许出现混合类型。
        – 数组中的元素可以是任何数据类型,包括基本类型和引用类型。
数组属引用类型
        – length, elements of the array

数组概述 (2)

• 数组是一个变量,存储相同数据类型的一组数据
        声明一个变量就是在内存空间划出一块合适的空间
        声明一个数组就是在内存空间划出一串连续的空间

  

 **数组的定义:**
    数组是*相同类型*数据的*有序*集合。数组描述的是相同类型的若干个数据,
    按照一定的先后次序排列组合而成。其中,每一个数据称作一个元素,
    每个元素可以通过一个索引(下标)来访问它们。
    数组的三个基本特点:
    1、长度是确定的。数组一旦被创建,它的大小就是不可以改变的。
    2、其元素必须是相同类型,不允许出现混合类型。
    3、数组类型可以是任何数据类型,包括基本数据类型和引用类型。
    数组变量属引用类型,数组本身就是对象,数组中的每个元素相当于该对象的成员变量。
    Java中对象是在堆中的,因此数组无论保存基本数据类型还是其他对象类型,数组对象本身是在堆中存储的。
    **数组声明**
    数组的声明方式有两种(以一维数组为例)
    1、type[ ] arr_name;//推荐使用这种方式)
    2、type arr_name[ ] ;
    **注意事项:**
    1、声明的时候并没有实例化任何对象,只有在实例化数组对象时,JVM才分配空间,这时才与长度有关。
    2、声明一个数组的时候并没有数组真正被创建。
    3、构造一个数组,必须指定长度。
    **创建基本类型一维数组:**
    public class Test{
        public static void main(String[ ] args){
            int[ ] s = null; //声明数组
            s = new int[10];//给数组分配空间
            for(int i =0;i<10;i++){
                s[i] = 2*i+1;//给数组元素赋值
                System.out.println(s[i]);
            }
        }
    }

上面的数组的定义转自 数组概述和特点_LeonMathilda的博客-优快云博客_数组的特点

数组概述 3

• 数组只有一个名称,即标识符
• 元素下标标明了元素在数组中的位置,从0开始
• 数组中的每个元素都可以通过下标来访问
• 数组长度固定不变,避免数组越界

 

小结
▪ 下列
类型是什么?

   “刘星”,“夏雨”,“夏雪”   String字符串类型
   8,98,“c”,23               类型不同
   98.1,341.2,34.3          double类型

如何使用数组

使用数组四步走:

                                                               空间             
1、声明数组           int[] a;                                  空间
2、分配空间      a=new int[5];                                  空间
3、赋值               a[0] =8;                                  空间
4、处理数据      a[0] =a[0]*10;                          a[0]——> 0   
                                                                a  

 

声明数组

声明数组: 告诉计算机数据类型是什么
    int[ ] score1;     //Java成绩
    int score2[ ];     //C#成绩
    String[ ] name;    //学生姓名


        数据类型   数组名[ ];       []是 声明数组时不规定数组长度

        数据类型[ ] 数组名 ;

分配空间

分配空间: 告诉计算机分配几个连续的空间                        
score = new int[30];

avgAge = new int[6];

name = new String[30];


声明数组并分配空间
    数据类型[ ] 数组名 = new 数据类型[大小] ;

数组赋值

▪ 赋值:向分配的格子里放数据
score[0] = 89;
score[1] = 79;
score[2] = 76;
……

 方法1: 边声明边赋值
    int[ ] score = {89, 79, 76};
    int[ ] score = new int[ ]{89, 79, 76};
    不能指定数组长度


 方法2:动态地从键盘录入信息并赋值
    Scanner input = new Scanner(System.in);
    for(int i = 0; i < 30; i ++){
        score[i] = input.nextInt();
    }
 

处理数据

    对数据进行处理:计算5位学生的平均分


//成绩单:  60 80 90 70 85
int [ ] score = {60, 80, 90, 70, 85};
double avg;
//访问数组成员:使 用“标识符[下标]”
avg = (score[0] + score[1] + score[2] + score[3] + score[4])/5;
int [ ] score = {60, 80, 90, 70, 85};                
int sum = 0;
double avg;
//数组的length属性
for(int i = 0; i < score.length; i++){
sum = sum + score[i]; //[i]访问成员
}
avg = sum / score.length

使用数组求平均分

public static void main(String[] args){
    int[] scores =new int[5]; //成绩数组
    int sum =0;
    Scanner input = new Scanner(System.in);
    System.out.println("请输入5位学员的成绩:");
    for(int i =0; i<scores.length;i++){
        scores[i] = input.nextlnt();
        sum =sum +scores[i]; //成绩累加
    }
    System.out.println("平均分:"+(double)sum/scores.length);
}

常见错误3-1
public class ErrorDemo1 {
    public static void main(String[ ] args){
        int[] score =new int[]; // 编译出错,没有写明数组的大小
        score[0] = 89;
        score[1] = 63;
        System.out.println(score[0]);
    }
}
常见错误3-2
public class ErrorDemo2 {
public static void main(String[ ] args) {
int[ ] scores = new int[2];
scores[0] = 90;
scores[1] = 85;

scores[2]=65;//编译出错,数组越界

System.out.println(scores[2]);
常见错误3-3
public static void main(String[ ] args){
    int[ ] score = new int[5];
    //编译出错,创建数组并赋值的方式必须在一条语句中完成
    score ={60,80,90,70,85}

    int[ ] score2; 
    //编译出错,创建数组并赋值的方式必须在一条语句中完成
    score2 ={60、80、90、70、85};

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值