zoukankan      html  css  js  c++  java
  • java代码库02——数组

    拒绝窘境,当你不停滞不前的时候,就已经在退步了。

    Akino·杜菲     版本声明:原创内容,请勿转载,否则将追究法律责任!

    1.基本数据类型的数组变量,直接打印的结果:

      打印的内容是[I@7852e922这种地址值,注意唯一不同的是,println这个方法对字符型的数组有特殊的处理方式:重载这个方法的结果是打印数组里的所有字符!

    package com.test;
    
    public class Practise2 {
    
        public static void main(String[] args) {
            byte[] a1 = new byte[2];
            short[] a2 = new short[2];
            char[] a3 = {'a','b','6'};
            int[] a4 = new int[5];
            float[] a5 = new float[4];
            long[] a6 = new long[5];
            boolean[] a7 = new boolean[3];
            double[] a8 = new double[3];
            
            System.out.println(a1);
            System.out.println(a2);
            System.out.println(a3);
            System.out.println(a4);
            System.out.println(a5);
            System.out.println(a6);
            System.out.println(a7);
            System.out.println(a8);
            
    
        }
    
    }
    View Code

    2.数组的默认值

      注意:数组的默认值是0,注意如何给数组赋值

    /*
        验证:
            1.数组的默认值:
            2.数组元素的访问方式:
                数组名[索引值]
        练习:定义基本数据类型的数组,有2个元素.考察他们的默认值:
            
    */
    public class ArrayDemo3{
        public static void main(String[] args){
            //定义一个数组
            int[] arr = new int[3];  
            //在堆空间中开辟3个空间,每个空间可以存放一个int型元素.初始值为0.
            //然后把首元素的地址(也就是整个数组的地址)赋值给栈空间中的变量arr
            
            //验证默认值:
            System.out.println(arr[0]);
            System.out.println(arr[1]);
            System.out.println(arr[2]);
            
            //如何对数组元素赋值:
            arr[2] = 10;
            System.out.println(arr[2]);
            
            arr[2] = 20;
            System.out.println(arr[2]);
            
        }
    }
    View Code

    3.数组的默认值

      注意:引用数组默认值为null,就是String[ ]的默认值是null,剩下是0.0,0,false之类

    /*
        考察基本数据类型和引用数据类型的数组的默认值!
        整数:0
        浮点数:0.0
        布尔型:false
        引用数据类型:null
    */
    public class ArrayDemo4{
        public static void main(String[] args){
            byte[] arr1 = new byte[2];
            System.out.println(arr1[0]);
            System.out.println(arr1[1]);
            System.out.println("------------------");
            char[] arr2 = new char[2];
            System.out.println(arr2[0]);
            System.out.println(arr2[1]);
            System.out.println("------------------");
            short[] arr3 = new short[2];
            System.out.println(arr3[0]);
            System.out.println(arr3[1]);
            System.out.println("------------------");
            int[] arr4 = new int[2];
            System.out.println(arr4[0]);
            System.out.println(arr4[1]);
            System.out.println("------------------");
            long[] arr5 = new long[2];
            System.out.println(arr5[0]);
            System.out.println(arr5[1]);
            System.out.println("------------------");
            boolean[] arr6 = new boolean[2];
            System.out.println(arr6[0]);
            System.out.println(arr6[1]);
            System.out.println("------------------");
            float[] arr7 = new float[2];
            System.out.println(arr7[0]);
            System.out.println(arr7[1]);
            System.out.println("------------------");
            double[] arr8 = new double[2];
            System.out.println(arr8[0]);
            System.out.println(arr8[1]);
            System.out.println("------------------");
            //定义字符串数组
            String[] arr9 = new String[2];
            System.out.println(arr9[0]);
            System.out.println(arr9[1]);
            
        }
        
        
    }
    View Code

    4.数组的遍历(1)

      注意:也可以使用增强for更容易

    package com.test;
    
    public class Practise4 {
    
        public static void main(String[] args) {
            int[] arr = { 1, 2, 3, 4, 56, 6, 5, 4, 2, 1, 1 };
    
            for (int i = 0; i < arr.length; i++) {
                System.out.println(arr[i]);
            }
    
        }
    
    }
    View Code

    5.数组的遍历(2)

      注意:数组遍历每个数字之间打个逗号,最后一个数字不需要有逗号,所以需要加入一个判断,就是数组长度 i !=arr.length的时候打逗号

    package com.test;
    
    public class Practise5 {
    
        public static void main(String[] args) {
            int[] arr = {1,2,3,5,6};
            
            printArray(arr);    
    
        }
        
        public static void printArray(int[] arr) {
            for (int i = 0; i < arr.length; i++) {
                System.out.print(arr[i]);
                if(i!=arr.length-1){
                    System.out.print(",");
                }
            }
        }
    }
    View Code

    6.自定义数组的长度,输入最大值和最小值,并自定义取的长度

      方式:定义方法打印、最大值、最小值,然后录入两个数据,求两个数据之间的随机个数的数值,利用了math.random()*(max-min+1)+min

    /*
        数组长度和元素都是随机产生.求最值:
        元素的范围是键盘录入的.
    */
    import java.util.Scanner;
    
    public class ArrayDemo10{
        public static void main(String[] args){
            Scanner s = new Scanner(System.in);
            System.out.print("输入元素的最小值: ");
            int min = s.nextInt();
            
            System.out.print("输入元素的最大值: ");
            int max = s.nextInt();
            
            //随机产生一个数,当成数组的长度
            int len = (int)(Math.random() * 50 + 1);
            //创建数组
            int[] arr = new int[len];
    
            //遍历数组,用随机数给元素赋值
            for(int i = 0;i<arr.length;i++){
                arr[i] = (int)(Math.random() * (max - min + 1) + min);
            }
                    
            //打印随机数组
            System.out.println("产生的随机数组是: ");
            printArray(arr);
            
            //求最值:
            System.out.println("最大值是: "+ getMax(arr));
            System.out.println("最小值是: "+ getMin(arr));
            
        }
        
        //自定义方法,打印数组的元素
        public static void printArray(int[] arr){
            for(int i = 0;i<arr.length;i++){
                System.out.print(arr[i]);
                if(i != arr.length - 1){
                    System.out.print(",");
                }
            }
            //最好在最后加一个换行,
            System.out.println();
        }
        
        //getMax
        public static int getMax(int[] arr){
            int max = arr[0];
            for(int i = 1;i<arr.length;i++){
                if(arr[i] > max){
                    max = arr[i];
                }
            }
            return max;
        }
        
        //getMin
        public static int getMin(int[] arr){
            int min = arr[0];
            for(int i = 1;i<arr.length;i++){
                if(arr[i] < min){
                    min = arr[i];
                }
            }
            return min;
        }
    }
    View Code

    7.获取指定元素的第一次出现的索引值

      思路:定义一个方法判断是否相等返回i还是-1,main函数中加个条件判断,刚才返回的值要是i就有,打印一下,要是-1就每一,索引不会有负数的。

    /*
     *普通查找:获取指定元素第一次出现的索引
     * 普通查找:就是从前往后遍历查找
     * 二分查找:要求数组必须是已经排好序的
     * 
     */
    package com.test;
    
    public class Practise8 {
        public static void main(String[] args) {
            int[] arr = {1,2,3,4,5,30,6};
            int value = 30;
            int res = getIndex(arr, value);
            if(res==-1){
                System.out.println("没有找到");
            }else{
                System.out.println(value+"第一次出现的索引值是:"+res);
            }
        }
    
        public static int getIndex(int[] arr,int value){
            for(int i = 0 ;i<arr.length;i++){
                if(arr[i] == value){
                    return i;
                }
            }
            return -1;
        }
        
        
    }
    View Code

    8.数组的复制

        思路:遍历原数组,然后让新数组的每个元素和原数组相等,然后打印一下,当然java.lang包下也已经为我们写好了一个数组复制,arr.clone();

    /*
    定义方法实现:数组的复制:重点考察是否需要返回值
    
    既然是复制,说明产生了一个新的数组.这个新的数组和源数组的长度一致,各个元素都相同.
    返回值:就是产生的新的数组!! 类型是:int[]
    
    */
    public class ArrayDemo12{
        public static void main(String[] args){
            int[] src = {9,5,2,7};
            //调用方法获取一个src的副本
            int[] copy = copyArray(src);
            
            //
            printArray(src);
            printArray(copy);
            //
            System.out.println(src == copy);//false
        }
        
        //
        public static void printArray(int[] arr){
            for(int i = 0;i<arr.length;i++){
                System.out.print(arr[i]);
                if(i != arr.length -1){
                    System.out.print(",");
                }
            }
            System.out.println();
        }
        
        
        //用于实现:数组的复制
        //返回值类型:int[]
        //形参列表:int[] src
        public static int[] copyArray(int[] src){
            //创建一个和src一样大的数组,遍历源数组,用源数组的元素给新数组元素赋值.
            int[] copy = new int[src.length];
            //遍历
            for(int i = 0;i<src.length;i++){
                copy[i] = src[i];
            }
            //
            return copy;
        }
    }
    View Code

    8.定义方法求阶乘

        思路:for循环,阶乘思想,就是阶乘的值在遍历过程中 i 要从1开始取。

    /*
        1.定义方法,用于计算一个int数值的阶乘
        //返回值类型:int
        //形参列表:int value
    */
    
    public class HomeworkDemo1{
        public static void main(String[] abc){
            //
    
            
            int res = getNum(5);
            System.out.println(res);
            
            //
            System.out.println(getNum(5));
        }
        
        //返回值类型:int
        //形参列表:int value
        public static int getNum(int value){
            //求阶乘思想:
            int res = 1;
            for(int i = 1;i<=value;i++){
                res *= i;
            }
            return res;
        }
    }
    View Code

    9.指定起始值和最终值,随机取一个数

        思路:利用math.random(),

    /*
     * 练习:从键盘录入起始值和结束值,获取指定范围的随机值
     * 定义方法,用于获取指定范围内的一个随机值(int)
     * 
     */
    package com.test;
    
    import java.util.Scanner;
    
    public class Practise11 {
    
        public static void main(String[] args) {
            Scanner scanner= new Scanner(System.in);
            System.out.println("请输入起始值: ");
            int a = scanner.nextInt();
            System.out.println("请输入最终值: ");
            int b = scanner.nextInt();
            System.out.println("随机值是 "+getRandom(a, b));
        }
        
        public static int getRandom(int a,int b){
            return (int)(Math.random()*(a-b+1)+b);
        }
    }
    View Code

    你不愿意改变的时候,往往就是你最需要改变的时候。让你变得更加专业,成为一个it精英。只有经历才能让我们更加认识自己,不经历历练就无法看见阳光。 欢迎加入BigBang高级大数据之路,qq群号:945694891

  • 相关阅读:
    《一线架构师》之Refined Architecture阶段
    可修改性战术分析
    上周学习总结
    软件质量属性之可修改性
    《信息领域热词分析》实现六种质量属性
    质量属性的六个常见属性应用场景(淘宝篇)
    软件架构师如何工作
    信息领域热词分析
    结合ssh谈MVC架构模式
    PythonCPPJava的异同
  • 原文地址:https://www.cnblogs.com/akinodoo/p/10066168.html
Copyright © 2011-2022 走看看