JavaSE开发基础--包机制&JavaDoc&Scanner&循环结构&方法&数组

包机制

如果文件在包中需要 在文件首行添加 package 地址

package pkg1.pkg2.pkg3

import package1

JavaDoc

    /**
     * @author作者名
     * @version版本号
     * @since指明需要最早使用的jdk版本
     * @param参数名
     * @return返回值情况
     * @throws异常抛出情况
     */

cmd生成doc文档:

javadoc -protected -splitindex -use -author -version -encoding UTF-8 -charset UTF-8 -d G:\Desktop\JavaSE\JavaDoc @C:\Users\Administrator\AppData\Local\Temp\javadoc_args

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tMV1f5Ds-1659764530952)(assets/image-20220611095847-nt0f6i4.png)]

Scanner

public class Demo01 {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);

        // nextLine  以回车键为结束字符
        String str = scanner.nextLine();
        System.out.println("输出的内容为:"+str);

        //next  以空格为结束字符
        String str2 = scanner.next();
        System.out.println("输出的内容为:"+str2);

        //凡是属于IO流的类如果不关闭会一直占用资源,要养成良好的习惯用完就关掉。
        scanner.close();
    }
}

循环结构

IF

public class Demo03 {
    public static void main(String[] args){
        Scanner scanner =  new Scanner(System.in);

        int s = scanner.nextInt();
        if (s==100){
            System.out.println(s);
        }else if (s<100&&s>=80){
            System.out.println(s+"1");
        }else if (s>=0){
            System.out.println("aaaa");
        }else {
            System.out.println("结束");
        }
        scanner.close();
    }
}

switch case

如果case里面没有写break进行跳出,则会发生case穿透。

一下结果为:及格、不及格、级别未知。因为没有在case后加入break

public class Demo04 {
    public static void main(String[] args){
        char result = 'c';
        switch (result){
            case 'a':
                System.out.println("优秀");
            case 'b':
                System.out.println("良好");
            case 'c':
                System.out.println("及格");
            case 'd':
                System.out.println("不及格");
            default:
                System.out.println("级别未知");
        }

    }
}

while

只要条件符合就一直执行

while(条件){
	执行语句
}

do while

与while的区别在先执行后判断。

For

是运行最高效的循环结构

public class Demo01 {
    public static void main(String[] args) {
        for (int i = 1; i <= 9; i++) {
            for (int j = 1;j<=i;j++){
                System.out.print("i"+"*"+"j"+i*j+"\t");
            }
            System.out.println();
        }
    }
}

增强for循环

主要在遍历数组和集合的时候用,jdk5以后才有。

public class ForDemo02 {
    public static void main(String[] args){
        int[]  numbers = {10,20,30,40,50};
        for(int x:numbers){
            System.out.println(x);
        }
    }
}

break continue

break在任何循环语句的主体,均可用break控制循环流程,其作用是强行退出循环,不执行循环中剩余的语句。

continue 语句在循环语句中使用,用于终止某次循环过程,即跳过循环体中未执行的语句,接着进行下一次是否执行循环的判断。

goto

打印三角形

public class SanJiao {
    public static void main(String[] args){
        int num =10;
        for(int i =1;i<=num;i++){
            for (int j=0;j<=50;j++){
                System.out.print(" ");
            }
            for (int j=num;j>i;j--){
                System.out.print(" ");
            }
            for(int j=1;j<=i;j++){
                System.out.print("*");
            }
            for(int j=1;j<i;j++){
                System.out.print("*");
            }
            System.out.println();

        }
    }
}

方法(一般面向对象叫方法,面向过程叫函数)

public static void main

其中 void 是指该方法不返回值,在自定义的方法中可以是任何数据类型 static 是修饰类的表示静态

public class Demo1 {
    public static void main(String[] args){
        System.out.println(add(3, 5));
    }
    public static int add(int a,int b){
        return a+b;
    }
}

return不仅可以用来返回值,也可以用来终止方法运行。

方法重载

就是相同的方法名,参数不同

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gm4Zu3ZL-1659764530953)(assets/image-20220617154437-yt3qzd9.png)]

命令行传参

可以在命令的时候直接传递参数,在接受参数的时候和scanner的text一样遇到空格后即变为下一个参数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7nip11AG-1659764530954)(assets/image-20220617155551-tpyv0ri.png)]

可变参数(不定向参数)

方法声明中,在指定参数类型后加一个省略号(…)

public class Demo03 {
    public static void main(String[] args){
        Demo03 demo03 = new Demo03();
        demo03.test(1,2,3);
    }
    public void test(int... i){
        for (int j =0; j<i.length;j++){
            System.out.println(i[j]);
        }
    }
}

递归

通俗点讲就是自己调用自己。但是程序必须有结束的点,不能是死循环。但是Java是栈结构,所以递归层次过多的话效率会低,并且可能内存溢出。

数组

数组按照存入的先后次序进行排列,数组中所有元素类型必须相同。不赋值就是默认值。数组创建必须分配大小,并且一旦创建不可更改

public class ArraryDemo01 {
    public static void main(String[] args){
        int[] nums;  //声明一个数组
        nums = new int[10];  //创建一个数组,规定大小为10.
	//也可以这么表示int[] nums = new int[10];
        nums[0] = 1;//为第一个元素赋值为1,默认为0,不赋值就是0.
        for (int i = 0; i <nums.length ; i++) {
            System.out.println(nums[i]);
        }
    }
}

数组初始化

public class ArraryDemo01 {
    public static void main(String[] args){
        int[] nums1 = {1,2,3,4,5,6};//静态初始化
        int[] nums2 = new int[10];//动态初始化
        }
}

数组的基本特点

  • 长度确定,一旦创建大小不可改变。
  • 元素类型必须相同,不允许出现混合类型。
  • 数组中元素可以是任何数据类型,包括基本类型和引用类型。
  • 数组的变量属于引用类型,数组也可以看成是一个对象。

案例(数组反转)

public class ArrayDemo02 {
    public static void main(String[] args){
        int[] ar = {1,2,3,4,5};
        pringArray(reversalArray(ar));

    }

    public static int[] reversalArray(int[] array){
        int[] result = new int[array.length];
        for (int i = 0,j=array.length-1; i < array.length ; i++,j--) {
            result[i] = array[j];
        }
        return result;
    }

    public static void pringArray(int[] array){
        for (int x:array){
            System.out.print(x+"\t");
        }
    }
}

二维数组

打印

public class ArrayDemo03 {
    public static void main(String[] args){
        int[][] arr = new int[10][4];
        for (int i = 0; i <arr.length ; i++) {
            for (int j = 0; j <arr[i].length ; j++) {
                System.out.print(arr[i][j]+"\t");
            }

        }
    }
}

Arrays类

public class ArrayGj {
    public static void main(String[] args){
        int[] array = {1,2,3,4,5,345,6756,456,234,2311};
        System.out.println(Arrays.toString(array));
        Arrays.sort(array);
        System.out.println(Arrays.toString(array));

    }
}

稀疏数组

public class Demo04 {
    public static void main(String[] args){
        //创建一个二维数组
        int[][] array1 = new int[5][5];
        array1[0][2] = 1;
        array1[1][3] = 2;
        //打印原始数组
        blArray(array1);
        System.out.println("===================");
        System.out.println("打印稀疏数组");
        int[][] array2 = sparseArray(array1);
        blArray(array2);
        System.out.println("===================");
        System.out.println("还原稀疏数组");
        blArray(restoreAyyay(array2));

    }

    //打印二维数组
    public static void blArray(int[][] array){
        for (int[] ints : array) {
            for (int anInt : ints) {
                System.out.print(anInt+"\t");
            }
            System.out.println();
        }
    }

    //稀疏数组转换
    public static int[][] sparseArray(int[][] array){
        int num = 0;
        for (int i = 0; i < array.length ; i++) {
            for (int j = 0; j <array[i].length ; j++) {
                if (array[i][j] != 0){
                    num++;
                }
            }
        }
        //创建稀疏数组
        int[][] array_s = new int[num+1][3];
        //定义稀疏数组的第一行
        array_s[0][0] = array.length;
        array_s[0][1] = array[0].length;
        array_s[0][2] = num;

        //为稀疏数组填充内容
        int line = 1;
        for (int i = 0; i < array.length ; i++) {
            for (int j = 0; j <array[i].length ; j++) {
                if (array[i][j] != 0){
                    array_s[line][0] = i;
                    array_s[line][1] = j;
                    array_s[line][2] = array[i][j];
                    line++;
                }
            }
        }


        return array_s;
    }

    public static int[][] restoreAyyay(int[][] array){
        int[][] array_r = new int[array[0][0]][array[0][1]];
        for (int i = 1; i < array.length ; i++) {
            for (int j = 0; j <array[i].length ; j++) {
                array_r[array[i][0]][array[i][1]] = array[i][2];
            }
        }
        return array_r;
    }

}
posted @ 2022-08-06 13:42  苦蛇  阅读(2)  评论(0编辑  收藏  举报  来源