Java学习_Day 06(学习内容:狂神说JAVA零基础2P48-2P57)

2P48 命令行传参

package com.hu.method;

public class P48 {
    public static void main(String[] args) {
        for (int i = 0; i < args.length; i++) {
            System.out.println("args["+ i +"]:" + args[i]);
        }
    }
}

2P49 可变参数

package com.hu.method;

public class P49 {
    public static void main(String[] args) {
        // 可变参数
        // 指定参数类型+一个省略号
        // 一个方法只能有一个可变参数,剩下所有参数都必须在可变参数之前声明
        P49 p49 = new P49();
        p49.test(1);
    }
    public void test(int x,int... i){
        System.out.println(i[0]);
    }
}
package com.hu.method;

public class P49_1 {
    public static void main(String[] args) {
        P49_1 p49_1 = new P49_1();
        System.out.println(p49_1.max(1,2,3,7,58));
    }


    public int max(int... numbers){
        if (numbers.length == 0){
            System.out.println("无参数");
            return 0;
        }
        int maxNumber = 0;
        for (int num : numbers){
            if (num > maxNumber){
                maxNumber = num;
            }
        }
        return maxNumber;
    }
}

2P50 递归

边界条件

package com.hu.method;

public class P50 {
    public static void main(String[] args) {
        // 递归就是方法自己调用自己  递归头(什么时候不调用自身)+递归体(什么时候需要调用自身)
        System.out.println(f(3));
    }

    // 阶乘
    public static int f(int n){
        // 递归头
        if (n == 1){
            return 1;
        // 递归体
        }else {
            return n * f(n-1);
        }
    }
}

计算器

package com.hu.method;

import java.util.Scanner;

public class P50_1 {
    // 写一个加减乘除计算器,循环接收新的数据,通过用户交互来实现
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        P50_1 p50_1 = new P50_1();
        String way = "";

        while (true){
            System.out.println("请选择运算方式:");

            if (scanner.hasNextLine()){
                way = scanner.nextLine();
            }
            switch (way){
                case "add":
                    System.out.println("请输入第一个数字:");
                    double x = scanner.nextDouble();
                    System.out.println("请输入第二个数字:");
                    double y = scanner.nextDouble();
                    System.out.println(x + "+" + y + "计算结果为:"+ p50_1.add(x, y));
                    break;
                case "sub":
                    System.out.println("请输入第一个数字:");
                    x = scanner.nextDouble();
                    System.out.println("请输入第二个数字:");
                    y = scanner.nextDouble();
                    System.out.println(x + "-" + y + "计算结果为:"+ p50_1.sub(x, y));
                    break;
                case "mul":
                    System.out.println("请输入第一个数字:");
                    x = scanner.nextDouble();
                    System.out.println("请输入第二个数字:");
                    y = scanner.nextDouble();
                    System.out.println(x + "*" + y + "计算结果为:"+ p50_1.mul(x, y));
                    break;
                case "div":
                    System.out.println("请输入第一个数字:");
                    x = scanner.nextDouble();
                    System.out.println("请输入第二个数字:");
                    y = scanner.nextDouble();
                    System.out.println(x + "÷" + y + "计算结果为:"+ p50_1.div(x, y));
                    break;
            }
        //scanner.close();
        }
    }

    public double add(double a, double b){
        double sum = 0;
        sum = a + b;
        return sum;
    }

    public double sub(double a, double b){
        double diff = 0;
        diff = a - b;
        return diff;
    }

    public double mul(double a, double b){
        double product = 0;
        product = a * b;
        return product;
    }

    public double div(double a, double b){
        double quotient = 0;
        quotient = a / b;
        return quotient;
    }

}

2P51 什么是数组

相同类型数据的有序集合

2P52 数组的声明和创建

package com.hu.array;

public class P52 {
    // 变量类型 变量名 变量值
    public static void main(String[] args) {
        // 数组类型
        int[] nums; // 声明一个数组
        //int nums2[];  // 不推荐
        // 使用new来创建数组  分配内存空间
        nums = new int[8];

        // 给数组元素赋值
        nums[0] = 1;
        nums[1] = 2;
        nums[2] = 3;
        nums[3] = 4;
        nums[4] = 5;
        nums[5] = 6;
        nums[6] = 7;
        nums[7] = 8;
        //System.out.println(nums[7]);

        // 计算所有元素的和
        int sum = 0;
        for (int i = 0; i < nums.length; i++) {
            sum += nums[i];
        }
        System.out.println("sum为:" + sum);
    }
}

2P53 三种初始化及内存分析

声明、创建和初始化
Java内存(堆、栈、方法区等)

分为动态初始化和静态初始化

在这里插入图片描述

package com.hu.array;

public class P53 {
    public static void main(String[] args) {
        // 静态初始化  创建+赋值
        int[] a = {1, 2, 3, 4, 5, 6};
        System.out.println(a[0]);

        // 动态初始化
        int[] b = new int[10];
        b[0] = 10;
        System.out.println(b[0]);

        // 数组也是引用类型,数组元素相当于类的实例变量  int默认是0
        System.out.println(b[1]);
    }
}

2P54 下标越界及小结

  • 数组一旦创建,大小不可改变
  • 数组元素必须是相同类型
  • 数组元素可以是基本数据类型和引用数据类型
  • 数组变量属于引用类型
  • 数组对象是在堆中的

数组下标越界会出现ArrayIndexOutofBounds错误

2P55 数组的使用

  • 普通for循环
  • for each循环
  • 数组作入参
  • 数组作返回值
package com.hu.array;

public class P55 {
    public static void main(String[] args) {
        int[] arrays = {1,2,3,4,5};
        // 打印数组元素

        for (int i = 0; i < arrays.length; i++) {
            System.out.println(arrays[i]);
        }

        System.out.println("============");
        // 计算数组元素和
        int sum = 0;
        for (int i = 0; i < arrays.length; i++) {
            sum = sum + arrays[i];
        }
        System.out.println("sum为" + sum);

        // 查找最大元素
        int max = arrays[0];
        for (int i = 0; i < arrays.length; i++) {
            if (arrays[i] > max){
                max = arrays[i];
            }
        }
        System.out.println("最大元素为:" + max);
    }
}
package com.hu.array;

public class P55_1 {
    public static void main(String[] args) {
        int[] arrays = {1, 2, 3, 4, 5};
        // 省略了下标,适合打印输出,不适合操作
//        for (int array : arrays) {
//            System.out.println(array);
//        }
        // printArray(arrays);
        int[] reverse = reverse(arrays);
        printArray(reverse);
    }

    // 打印数组元素
    public static void printArray(int[] arrays){
        for (int i = 0; i < arrays.length; i++) {
            System.out.print(arrays[i] + " ");
            
        }
    }

    // 反转数组
    public static int[] reverse(int[] arrays){
        int[] result = new int[arrays.length];
        for (int i = 0,j = result.length-1; i < arrays.length; i++,j--) {
            result[j] = arrays[i];
        }

        return result;
    }
}

2P56 二维数组

数组嵌套数组

package com.hu.array;

public class P56 {
    public static void main(String[] args) {
        // [3][2]
        int[][] array = {{1,2}, {2,3}, {3,4}};

//        printArray(array[0]);
//        System.out.println(array[0][0]);
//        System.out.println(array[0][1]);
//        System.out.println(array.length);
//        System.out.println(array[0].length);

        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[0].length; j++) {
                System.out.println(array[i][j]);
            }
        }


    }
    public static void printArray(int[] arrays){
        for (int i = 0; i < arrays.length; i++) {
            System.out.print(arrays[i] + " ");

        }
    }
}

2P57 Arrays类

这里关于数组类有一些常用方法可以学习一下

package com.hu.array;

import java.util.Arrays;

public class P57 {
    public static void main(String[] args) {
        int[] a = {1, 2, 3, 4, 589, 777, 12};

        System.out.println(a);
        // 打印数组元素
        // System.out.println(Arrays.toString(a));
        // printArray(a);
        Arrays.sort(a);
        System.out.println(Arrays.toString(a));
        Arrays.fill(a, 0);
        System.out.println(Arrays.toString(a));
        Arrays.fill(a, 2, 4, 1);
        System.out.println(Arrays.toString(a));
    }
    // 重复造轮子
    public static void printArray(int[] a){
        for (int i = 0; i < a.length; i++) {
            if (i == 0){
                System.out.print("[");
            }
            if (i == a.length-1){
                System.out.println(a[i] + "]");
            }else {
                System.out.print(a[i] + ",");
            }

        }
        
    }
}

2P58 冒泡排序

嵌套循环时间复杂度O(n2)

package com.hu.array;

import java.util.Arrays;

public class P58 {
    public static void main(String[] args) {
        int[] a = {75, 34, 17, 25, 36};
        System.out.println(Arrays.toString(sort(a)));
    }

    public static int[] sort(int[] a){
        for (int i = 0; i < a.length-1; i++) {
            for (int j = 0; j < a.length-i-1; j++) {
                if (a[j] > a[j+1]){
                    int temp = a[j];
                    a[j] = a[j+1];
                    a[j+1] = temp;

                }
            }

        }
        return a;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值