zoukankan      html  css  js  c++  java
  • Java-数组

    Java-数组

    1、什么是数组?

      数组是存储同一类型的数据的集合。

      而数据类型又分为两种:
        ①基本数据类型(byte、short、int、long、float、double、char、boolean)
        ②引用数据类型(所有用class定义类都是引用类型)

        如果数组的类型是Object,则所有数据类型的数据都可以存储。(Object是Java中所有类的父类。)
      所有的基本数据类型,都由一个对应的封装类,封装类是Object的子类。
     2、数组的特点:  
      ①数组在定义的时候要记得给指定的长度
      ②数组是一种数据结构。
      ③是一种线性的连续存储空间的数据结构  
      ④数组是所有数据结构中访问速度最快的一种。
      ⑤可以直接通过数组的下标进行定位获取或存储数据。
      ⑥ 数组自身只有一个唯一的属性
        ⑦获取数组能存储多少数据的属性:length
           ⑧但是有从Object父类继承过来的属性和方法。
     
     
    3、数组的创建方法
      ①创建的时候不指定大小  
      如:数据类型[] 数组名 = new 数据类型[]{,,,};
        数据类型[] 数组名 = {,,,}(这个其实就是上面那种的简写)
      ②创建的时候指定大小
      如: 数据类型[] 数组名 = new 数据类型[size]
       定义二维数组与上面类似
     
    4、数组的使用
      
     获取一维数组中能存储的元素总数:数组名.length
     获取或者设置数组的某一个位置的值:数组名[下标]
     数组的length是什么时候开始计数的?从1开始
     数组的下标是从什么时候开始计数的?从0开始
     获取二维数组有多少行:数组名.length
     获取二维数组中某一行有多少列:数组名[行下标].length
     获取二维数组中能存储的元素总数:
     new 数据类型[][]{{值,...},...}:数组名[行下标].length+...
     new 数据类型[行][列]:数组名.length*数组名[行下标].length
     获取或者设置数组的某一个位置的值:数组名[行下标][列下标]
     
    5、练习(建立一个学生类型的数组,并对其名字、年龄、学分进行排序)
    代码如下:
    首先建立一个学生类
    public class Students {
        private String name;
        private int credit;
        private int age;
        public Students(String name,int credit,int age){
            this.name = name;
            this.credit = credit;
            this.age  =age;
        }
        
        public void setName(String name){
            this.name = name;
        }
        public String getName(){
            return name;
        }
        public void setCredit(int credit){
            this.credit = credit;
        }
        public int getCredit(){
            return credit;
        }
        public void setaAge(int age){
            this.age = age;
        }
        public int getAge(){
            return age;
        }
        public void show(){
            System.out.println("Name "+ name+" Credit " + credit+ " Age "+ age+"
    ");
        }
    }

    然后在主方法里面建立一个学生数组,并且通过循环创建学生对象并且往里面输入信息

        public static void main(String[] args){
            String name;
            int age;
            int credit;
            System.out.println("请输入学生个数");
            Scanner sc = new Scanner(System.in);
            int size = sc.nextInt();
            Students[] stuarray = new Students[size];
            for(int i = 0; i < stuarray.length;i++){
                stuarray[i]=new Students();
                System.out.println("请输入学生姓名");
                name = sc.next();
                stuarray[i].setName(name);
    //            System.out.println(stuarray[i].getName());
                System.out.println("请输入学生学分");
                credit = sc.nextInt();
                stuarray[i].setCredit(credit);
                System.out.println("请输入学生年龄");
                age = sc.nextInt();
                stuarray[i].setaAge(age);
            }

    最后通过三大排序方法(选择排序、冒泡排序、插入排序)分别对其姓名、学分、年龄排序

        public void sort1(Students[] stus){
            for(int i = 0; i < stus.length - 1;i++)
            {
                int min_index = i;
                for(int j = i + 1; j < stus.length;j++){
                    if((stus[i].getName()).compareTo((stus[j].getName())) >0 ){
                        min_index = j;
                    }
                    
                }
                //这个地方能够成功转换吗?能!
                if(min_index != i){
                    Students temp = stus[min_index];
                    stus[min_index] = stus[i];
                    stus[i] = temp;
                
                }
            }
        }
        public void sort2(Students[] stus){
            boolean a = true;
            while(a){
                a = false;
                for(int i = 0; i < stus.length - 1;i++){
                    if(stus[i].getCredit() > stus[i+1].getCredit()){
                        Students temp = stus[i];
                        stus[i] = stus[i+1];
                        stus[i+1] = temp;
                        a = true;
                    }
                }
            }
        }
        
        public void sort3(Students[] stus){
            for(int i = 1; i < stus.length;i++){
                Students temp = stus[i];
                int j = i - 1;
                for(;j >=0 && stus[j].getAge() > stus[i].getAge();j--){
                    stus[j+1] = stus[j];
                }
                stus[j+1] = temp;
            }
        }
    SortOfinformation a = new SortOfinformation();
            
            a.sort1(stuarray);
            System.out.println("名字排序以后的输出");
            a.showName(stuarray);
            a.sort2(stuarray);
            System.out.println("学分排序后输出");
            a.showCredit(stuarray);
            a.sort3(stuarray);
            System.out.println("年龄排序后输出");
            a.showAge(stuarray);

    这样就完成了这个小练习了!

     
  • 相关阅读:
    HTML5
    HTML5
    HTML5
    HTML5
    HTML5
    HTML5
    HTML5
    HTML5
    HTML5
    53.Maximum Subarray
  • 原文地址:https://www.cnblogs.com/782687539-nanfu/p/10325873.html
Copyright © 2011-2022 走看看