Java学习第二周基础知识总结(二)

    科技2025-08-30  6

    目录

     

    1.方法

    1.1 方法的概念

    1.2 方法的格式

    1.3 方法的调用

    例题

    1.4方法的重载

    定义:

    2.数组

    2.1 数组的概念

    2.2 数组定义的格式

    2.3 数组的初始化

    数组初始化的方式

    动态初始化格式;

    静态初始化格式:

    2.4 数组中常见的两个小问题

    2.5 Java中的内存分配

    2.6 二维数组

    定义格式:

    二维数组的初始化

    练习

    2.7数组的高级排序:冒泡排序

     


    1.方法

    1.1 方法的概念

    就是将一个功能抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能。 当我 们需要这个功能的时候,就可以去调用。这样即实现了代码的复用性,也解决了代码冗余的现象

    1.2 方法的格式

    //1.有返回值类型的方法定义格式 public static 返回值类型 方法名(参数列表){ 方法体... return 返回值; } //2.无返回值的方法定格式: public static void 方法名(参数列表){ 方法体... }

    格式组成解释

    修饰符:目前固定写法 public static 返回值类型  用于限定返回值的数据类型方法名  一个名称,为了方便我们调用方法参数类型  限定调用方法时传入参数的数据类型参数名 是一个变量,接收调用方法时传入的参数方法体  完成功能的代码 return 结束方法以及返回方法指定类型的值返回值  程序被return带回的结果,返回给调用者 

    1.3 方法的调用

     

    有明确返回值的方法调用:

    单独调用,没有意义输出调用,有意义,但是不够好,因为我不一定非要把结果输出赋值调用,推荐方式

    无明确返回值的方法调用:

    其实就是void类型方法的调用 只能单独调用

    例题

    import java.util.Scanner; class Array{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("请输入:"); int[] arr = new int[5]; for(int i=0 ;i <5;i++){ arr[i] = sc.nextInt(); } System.out.println("排序前"); ergodic(arr); //调用无返回值类型方法----遍历 choice(arr); //调用无返回值类型方法----选择排序 System.out.println("排序后"); ergodic(arr); //调用无返回值类型方法----遍历 int result = table(arr); //调用有返回值类型方法---查询 System.out.println("所查元素的索引值为:"+result); } //遍历 public static void ergodic(int[] arr){ System.out.print("{"); for(int i=0; i<arr.length;i++){ if(i==arr.length-1){ System.out.println(arr[i]+"}"); }else{ System.out.print(arr[i]+","); } } } //选择排序 public static void choice(int[] arr){ for(int i=0;i<arr.length-1;i++){ int min=i; for(int j=i+1; j<arr.length;j++){ if(arr[j]<arr[min]){ min = j; } } if(i!=min){ int temp = arr[i]; arr[i] = arr[min]; arr[min] = temp; } } } //查询数组元素索引值 public static int table(int[] arr){ Scanner sx = new Scanner(System.in); System.out.println("请输入需要查询的数字:"); int a = sx.nextInt(); for(int i=0; i<arr.length;i++){ if(a==arr[i]){ return i; } } return 0; } }

    1.4方法的重载

    定义:

    在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。 

    方法名相同,参数列表不同

            1)参数类型一样,参数个数 不一样( 或参数的前后位置不同)

            2)参数类型不同

     

    2.数组

    是我学习的第一个引用类型

    2.1 数组的概念

    数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。数组既可以存储基本数据类型,也可以存储引用数据类型。 

    2.2 数组定义的格式

    格式1:数据类型[] 数组名;

    格式2:数据类型 数组名[];

    //格式一 int[] array;//推荐格式一,其可读性更强 //格式二 int array[];

    2.3 数组的初始化

    为什么要初始化?

    Java中的数组必须先初始化,然后才能使用。所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值

    数组初始化的方式

    动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。 

    动态初始化格式;

    格式:数据类型[] 数组名 = new 数据类型[数组长度]; 

    int[] array = new int[5]; //解释:定义了一个int类型的数组,这个数组中可以存放5个int类型的值。  就是如何取得数组中的元素呢? 

    数组为每个元素都分配了编号,从0开始。获取的时候只要数组名配合编号即可。  最大编号是长度-1。这个编号专业叫法称:索引 

    静态初始化格式:

    格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…}; 

    int[] array = new int[]{1,2,4,5,6,8}; //简写方法 int[] array = {1,2,4,5,6,8}

    解释:定义了一个int类型的数组,这个数组中可以存放6个int类型的值,并且值分别是1,2,4,5,6,8。

    注意:但是一定要注意不能同时进行动态初始化和静态初始化

    2.4 数组中常见的两个小问题

    数组索引越界 ArrayIndexOutOfBoundsException 访问到了数组中的不存在的索引时发生。空指针异常 NullPointerException 数组引用没有指向实体,却在操作实体中的元素时。

    2.5 Java中的内存分配

    Java 程序在运行时,需要在内存中的分配空间。为了提高运算效率,就对空间进行了不同区域的划分, 因为每一片区域都有特定的处理数据方式和内存管理方式。

    栈   存储局部变量堆   存储new出来的东西方法区(面向对象部分讲)本地方法区(和系统相关)寄存器(给CPU使用

    2.6 二维数组

    概述:它就是一个包含多个一维数组的数组!

    定义格式:

    数据类型[] 数组名称[]  ;数据类型[][] 数组名称 ;

    二维数组的初始化

    动态初始化:

    格式1:数据类型[][] 数组名称 = new 数据类型 [m][n];

    m:表示有m个一维数组n:表示每一个一维数组的长度 int[][] arr = new int[3][2] ; int[] arr[] = new int[3][2] ;

    二维数组格式2:     数据类型[][] 数组名称 = new 数据类型[m][] ;     数据类型[] 数组名称[] = new 数据类型[m][] ; 

    int[] arr[] = new int[2][] ;

    静态初始化

     

    二维数组格式3     (标准格式)         数据类型[][]  数组名称   =new 数据类型[][]{{元素1,元素2,...},{元素1,元素2...},{元素1,元素2...}};

    int[][] arr = new int[3][2]{{1,2,3},{4,5,6}} ; //简化 int[][] arr = {{1,2,3},{4,5,6}} ;

    练习

    二维数组的遍历

    class Array2Test3{ public static void main(String[] args){ //定义一个二维数组,静态初始化 int[][] arr = {{1,2,3},{4,5},{6}} ; //编程题 printArray2(arr) ; } //二维数组的遍历 public static void printArray2(int[][] arr){ //输出:"{" System.out.print("{") ; //开始遍历二维数组 //外层循环arr.length :当前整个一维数组的个数 for(int x = 0 ; x < arr.length ; x ++){ System.out.print("{") ; //先输出:一个{ //内层循环:遍历每一个一维数组 for(int y = 0 ; y < arr[x].length ; y ++){ //当前已经取到了最后一个一维数组: 元素内容arr[x][y]以及带一个"}" if(x == arr.length-1){ System.out.print(arr[x][y]+"}") ; }else if( y==arr[x].length-1) { //如果是中间的元素并且是取到一维数组的最后一个元素 System.out.print(arr[x][y]+"}"+",") ; }else{ //中间的每一元素 System.out.print(arr[x][y]+",") ; } } } //输出"}" System.out.print("}") ; } }

     运行结果

    2.7数组的高级排序:冒泡排序

    冒泡排序的思想:             相邻两两比较,大的往后放,第一次比较完毕,最大值就出现在最大索引处,依次这样比较。

    代码

    class TestBubbling{ public static void main(String[] args){ int[] array = {15,16,24,1,19,29,41,13}; Ergodic(array); // 调用遍历 bubbling(array); //调用冒泡排序的方法 Ergodic(array); // 调用遍历 } //冒泡排序方法:从大到小的排序 public static void bubbling(int[] array){ for(int i = 0; i < array.length-1;i++){ for(int j = 0; j < array.length-i-1;j++){ if(array[j]<array[j+1]){ int temp = array[j]; array[j] = array[j+1]; array[j+1] = temp; } } } } //遍历数组 public static void Ergodic(int[] arr){ System.out.print("["); for(int i = 0; i < arr.length; i++){ if(i==arr.length-1){ System.out.println(arr[i]+"]"); }else{ System.out.print(arr[i]+", "); } } } }

    结果

    十一放假了,就学了这么多,面向对象只学了一点等学完在整理

    Processed: 0.015, SQL: 8