数组array

 1.0声明数组

数组属于对象,对象属于引用类型,引用类型的元素是自动初始化的。

在JAVA中,数组是唯一没有对象的类

在JAVA中,数组有length属性,字符串有length方法。

数组是固定长度的,一旦声明就不能修改和删除元素。

1.最简单的声明数组:

 String[] aa1 = new String[3];
        System.out.println(Arrays.toString(aa1));

输出结果为:[null,null,null

其余的声明方式(举几个例子):


        int[] aa2 = {1, 2, 2};


        long[] aa3 = new long[]{1, 2, 3};

        char[] aa4 = new char[4];


        Calendar[] ss = new Calendar[4];

数组的书写方式:

public class Arr3 {
    public static void main(String[] args) {
        int[] aa1 = new int[2];
        int[]      aa2 = new int[2];
        int aa3[] = new int[2];

    }
}

 Java属于强类型语言,声明的什么类型数组,就放什么类型数组,放的不一样会报错

2.如何声明一个什么都可以的数组

var aa = new String[3];

java.lang.Object 系统类

java.lang 系统包

java 所有声明的类,都默认继承Object,是Object的子类 

java开发中使用的类,java.lang包下的类,在任何情况都不导入,可以直接使用

Java所有对象的基类是object类,在Java.lang.Object包下,所有Java的对象和类都默认继承这个

Object[] obs = new Object[5];

obs[0] = 1;

obs[1] = .1;

obs[2] = new Date();

obs[3] = Calendar.getInstance();

obs[4] = new Scanner(System.in);

  }

}

在Object下,可以直接写出定义的类型,无需进行数组格式的定义

        Object o1 = "dfsf";
        Object o2 = "51255";
        Object o3 = "第三个第四个他";
        System.out.println(o2);
        System.out.println(o1);
        System.out.println(o3);

2.0使用操作数组

 遍历:从头到尾,依次访问数组每一个位置,获取每一个位置的元素.

三种遍历方式:

public static void main(String[] args) {
        String[] ns = {"张三", "李四"};
        System.out.println(Arrays.toString(ns));
         //遍历1
        for (var s : ns) {
            System.out.print(s +" ");
        }
        System.out.println();
        //遍历2
        for(var i =0 ;i<ns.length;i++){
            System.out.print(ns[i] +" ");
        }
        System.out.println();
        //倒着遍历
        for(var i =ns.length-1 ;i>=0;i--){
            System.out.print(ns[i] +" ");
        }
    }

结果如下: 

 使用数组实现星期几效果

对于是否需要减一,要看当地的时区,中国时区需要减一

public static void main(String[] args) {
       var wk = new String[]{
        "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
var c = Calendar.getInstance();
var k = c.get(Calendar.DAY_OF_WEEK);
        System.out.println(wk[k-1]);
    }

 计算指定年份是什么生肖年

 String[] ss = new String[]{"猴","鸡","狗","猪","鼠","牛","虎","兔","龙","蛇","马","羊"};
        int kk = 2023;
        System.out.println(ss[kk%12]);

进行控制台输出指定年份的生肖:

tring[] aa = new String[]{"猴","鸡","狗","猪","鼠","牛","虎","兔","龙","蛇","马","羊"};
        //int yy =2023;
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入年份:  ");
        int yy = sc.nextInt();
        System.out.println(aa[yy%12]);

3.0数组Arrays 求数组的最大小值,并在次排序

public static void main(String[] args) {
        int[] nums = new int[10];
        Random rand = new Random();
        for (int i = 0; i < nums.length; i++) {
            nums[i] = rand.nextInt(1, 101);
        }
        System.out.println(Arrays.toString(nums));
        int max = nums[0];
        int min = nums[0];
        for (int i = 1; i < nums.length; i++) {
            max = Math.max(max, nums[i]);
            min = Math.min(min, nums[i]);
        }
        System.out.println("\033[36m最大值是: \033[36m" + max);
        System.out.println("\033[35m最小值是: \033[35m" + min);

        for (int i = 0; i < nums.length; i++) {

            int a = rand.nextInt(nums.length);
            int b = rand.nextInt(nums.length);
            if (a==b) {
                i--;
                continue;
            } else {
                int t = nums[a];
                nums[a] = nums[b];
                nums[b] = t;

            }
        }
        System.out.println(Arrays.toString(nums));
    }


数组Arrays 求数组的排序方式

Integer[] nums = new Integer[10];
          Random rand = new Random();
          for (int i = 0; i < nums.length; i++) {
                nums[i] = rand.nextInt(1, 101);
          }
          System.out.println("排序前:"+Arrays.toString(nums));
          //升序
          Arrays.sort(nums);
          System.out.println("\033[36m排升序:\033[31m"+Arrays.toString(nums));
          //降序
          Arrays.sort(nums,(a,b)->b-a);
          System.out.println("\033[33m排降序:\033[35m"+Arrays.toString(nums));

          //洗牌  乱序
          Arrays.sort(nums,(a,b)->Math.random()>.5?1:-1);
          System.out.println("\033[33m排乱序:\033[35m"+Arrays.toString(nums));

    }


冒泡算法:

  public static void main(String[] args) {
          var ns = new int[10];
          var rand = new Random();
          for ( int i = 0;i <ns.length;i++) ns[i] = rand.nextInt(1,101);
          System.out.printf("排序前:%s%n", Arrays.toString(ns));
          for(int m= 0 ;m<ns.length;m++){

                for(int n = 0 ;n<ns.length-m-1;n++){
                      if (ns[n]>ns[n+1]){
                            int temp =ns[n];
                            ns[n]=ns[n+1];
                            ns[n+1]=temp;
                      }


                }
          }
          System.out.printf("排升序:%s%n", Arrays.toString(ns));

          for(int m= 0 ;m<ns.length;m++){

                for(int n = 0 ;n<ns.length-m-1;n++){
                      if (ns[n]<ns[n+1]){
                            int temp =ns[n];
                            ns[n]=ns[n+1];
                            ns[n+1]=temp;
                      }


                }
          }
          System.out.printf("排降序:%s%n", Arrays.toString(ns));

          for (int i = 0;i<ns.length;i++){
                int a =rand.nextInt(ns.length);
                int b =rand.nextInt(ns.length);

                if (a==b){
                      i--;
                      continue;
                }else {
                      int t = ns[a];
                      ns[a]=ns[b];
                      ns[b]=t;
                }

          }
          System.out.printf("排乱序:%s%n", Arrays.toString(ns));

    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值