数组

一、Random随机数【重点】

1)导包
    import java.util.Random;
2)创建Random对象
    Random r=new Random();
3)接收随机数
    int num=r.nextInt(10);//随机数的范围:[0,10)   
    //生成1-100之间的随机数
    int num=r.nextInt(100)+1;   //随机数的范围:[1,100] 

案例1:猜数字小游戏
    生成一个随机数1-100之间的随机数用num,键盘录入一个整数myNum,猜这个数
        如果myNum比num大,输出"猜大了"
        如果myNum比num小,输出"猜小了"
        如果myNum和num相等,输出"恭喜你,猜中了"
    如果猜错了,可以重复猜多次
public class RandomDemo1{
    public static void main(String[] args){
        //生成一个随机数1-100之间的随机数用num
        Random r=new Random();
        int num=r.nextInt(100)+1;

        /*  
            循环的猜这个数
            如果myNum比num大,输出"猜大了"
            如果myNum比num小,输出"猜小了"
            如果myNum和num相等,输出"恭喜你,猜中了"   
        */
        while(true){
            //键盘录入一个整数myNum
            Scanner sc=new Scanner(System.in);
            int myNum=sc.nextInt();
            if(myNum>num){
                System.out.println("猜大了");
            }else if(myNum<num){
                System.out.println("猜小了");
            }else{
                System.out.println("恭喜你,猜中了");
            }
        }
    }
}

二、数组【重点】

概述:数组用于存储多个相同数据类型的元素

1)数组的定义格式
    a:数据类型[] 数组名;
        举例:int[] arr;   【推荐格式】
    b:数据类型  数组名[]; 【不推荐格式】
        举例:int arr[];

2)数组的初始化【重点】
    a:动态初始化
        给定长度,由系统分配元素初始化值
        举例:int[] arr=new int[3];//数组长度为3,每一个元素的初始值为0

    b:静态初始化
        给定元素初始值,由系统分配长度
        举例:int[] arr=new int[]{1,2,3};
              int[] arr={1,2,3};

3)获取数组中的元素【重点】
    数组中每一个元素都有一个索引,索引从0开始,最大索引为长度-1
    举例:
    int[] arr=new int[3];
    arr 存储的是数组的地址值
    arr[0] 表示第一个元素
    arr[1] 表示第二个元素
    arr[2] 表示第三个元素

4)Java的内存分配【了解】
    所有的程序在运行的时候,数据都是存储在内存中,为了方便对数据进行管理和维护,Java把内存分为几块区域
    栈:
        存储的是局部变量(定义在方法中的变量)
        用完了,立即回收
    堆:
        存储的是new出来东西(对象,实体)
        特点:
        a:new出来的东西都有地址值
        b:默认初始值
            byte short int long  0
            float double    0.0
            char    '\u0000'
            boolean  false
            引用类型    null;
        c:使用完毕,会被垃圾回收器空闲的时候回收

    方法区:
        静态数据,常量


5)数组的两个小问题【重点】
    a:ArrayIndexOutofBoundsException,数组索引越界异常
        产生原因:没有找到对应的索引

    b:NullPointerException,空指针异常
        产生原因:数组为null,而去访问数中的元素

三、数组的练习题

1)遍历数组中所有的元素【重点】
    public class ArrayTest1{
        public static void main(String[] args){
            int[] arr={1,2,3,4,5};
            //arr.length: 获取数组的长度
            for(int i=0;i<arr.length;i++){
                System.out.println(arr[i]);
            }
        }
    }

2)定义一个int类型数组,元素为{77,44,55,66,88},求所有元素的和
    public class ArrayTest2{
        public static void main(String[] args){
            //定义一个int类型数组,元素为{77,44,55,66,88}
            int[] arr={77,44,55,66,88};

            //求所有元素的和
            int sum=0;//定义求和变量

            //遍历所有需要求和的元素
            for(int i=0;i<arr.length;i++){
                //和sum累加
                sum+=arr[i];
            }
            System.out.println("所有元素和为:"+sum);
        }
    }
、
3)定义一个int[]数组,元素为{77,44,55,66,88},求数组中元素的平均值
    public class ArrayTest3{
        public static void main(String[] args){
            int[] arr={77,44,55,66,88};

            //定义一个和值
            int sum=0;
            //遍历数组
            for(int i=0;i<arr.length;i++){
                //获取每一个元素arr[i]和sum累加
                sum+=arr[i];
            }
            //求平均值
            int avg=sum/arr.length;
            System.out.println("数组中元素的平均值为:"+avg);
        }
    }

4)获取数组中元素的最大值
    int[] arr={77,88,66,99,55};
    /*
        思路:
            a:获取数组中的某一个元素,假设它是最大值max
            b:遍历所有元素和max进行比较,把大的值赋值给max
            c:遍历完成之后,max记录的就是最大值。
    */
    public class ArrayTest4{
        public static void main(String[] args){
            int[] arr={77,88,66,99,55};
            //获取数组中的某一个元素,假设它是最大值max
            int max=arr[0];
            //遍历所有元素和max进行比较,把大的值赋值给max
            for(int i=0;i<arr.length;i++){
                if(arr[i]>max){
                    //把大的值赋值给max
                    max=arr[i];
                }
            }
            //遍历完成之后,max记录的就是最大值。
            System.out.println("最大值为:"+max);
        }
    }


5)定义长度为8的int类型数组,随机生成8个范围在[1,100]的元素,求所有元素的和,以及平均值
    public class ArrayTest5{
        public static void main(String[] args){
            //定义长度为8的int类型数组
            int[] arr=new int[8];
            //随机生成8个整数,赋值给数组中的元素
            for(int i=0;i<arr.length;i++){
                Random r=new Random();
                int num=r.nextInt(100)+1;
                //把生成的随机数,赋值给每一个元素
                arr[i]=num;
            }

            //求数组中所有元素的和
            int sum=0;//定义求和变量
            //遍历所有需要求和的元素
            for(int i=0;i<arr.length;i++){
                //和sum累加
                sum+=arr[i];
            }
            //求平均值
            int avg=sum/arr.length;
            System.out.println("所有元素的和为:"+sum);
            System.out.println("所有元素的平均值为:"+avg);               
        }
    }
选择排序

冒泡排序

二分法

四、二维数组【了解】

理解:数组中的元素也是一个一维数组
1)二维数组的定义格式
    a:动态初始化
        数据类型[][] 数组名=new 数据类型[m][n];
        m:二维数组中有多少个一维数组
        n:每一个一维数组中有多少个元素
        举例:
            int[][] arr=new int[3][2];
            //定义一个二维数组,数组名为arr
            //二维数组中有3个一维数组
            //每一个一维数组有2个元素
    b:静态初始化
        数据类型[][] 数组名=new 数据类型[][]{{元素...},{元素...},{元素...}...};
        简化格式:
            数据类型[][] 数组名={{元素...},{元素...},{元素...}...};
        举例:
            int[][] arr={{1,2,3},{4,5},{6}};

2)获取二维数组中的元素
    数组名[索引]:  一维数组地址值
    数组名[索引][索引]:二维数组的元素

3)二维数组练习题
    a:定义一个二维数组,自己指定任意元素,遍历输出数组中的每一个元素
        int[][] arr={{1,2,3},{4,5},{6}};

        for(int i=0;i<arr.length;i++){
            //arr[i]表示二维数组中的每一个一维数组,继续遍历
            for(int j=0;j<arr[i].length;j++){
                System.out.print(arr[i][j]+" ");
            }
            System.out.println();
        }

    b:定义一个二维数组,自己指定任意元素,求所有元素的和
        int[][] arr={{1,2,3},{4,5},{6}};
        //定义和值
        int sum=0;
        for(int i=0;i<arr.length;i++){
            //arr[i]表示二维数组中的每一个一维数组,继续遍历
            for(int j=0;j<arr[i].length;j++){
                System.out.print(arr[i][j]+" ");
                sum+=arr[i][j];
            }
            System.out.println();
        }
        //输出sum的值
        System.out.println("所有元素的和为:"+sum);

进制的转换

 


posted @ 2018-06-01 19:58  吃奶滴虫虫  阅读(160)  评论(0编辑  收藏  举报