目录
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数组的高级排序:冒泡排序
格式组成解释
修饰符:目前固定写法 public static 返回值类型 用于限定返回值的数据类型方法名 一个名称,为了方便我们调用方法参数类型 限定调用方法时传入参数的数据类型参数名 是一个变量,接收调用方法时传入的参数方法体 完成功能的代码 return 结束方法以及返回方法指定类型的值返回值 程序被return带回的结果,返回给调用者
有明确返回值的方法调用:
单独调用,没有意义输出调用,有意义,但是不够好,因为我不一定非要把结果输出赋值调用,推荐方式无明确返回值的方法调用:
其实就是void类型方法的调用 只能单独调用在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
方法名相同,参数列表不同1)参数类型一样,参数个数 不一样( 或参数的前后位置不同)
2)参数类型不同
是我学习的第一个引用类型
格式1:数据类型[] 数组名;
格式2:数据类型 数组名[];
例
//格式一 int[] array;//推荐格式一,其可读性更强 //格式二 int array[];为什么要初始化?
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。
注意:但是一定要注意不能同时进行动态初始化和静态初始化
Java 程序在运行时,需要在内存中的分配空间。为了提高运算效率,就对空间进行了不同区域的划分, 因为每一片区域都有特定的处理数据方式和内存管理方式。
栈 存储局部变量堆 存储new出来的东西方法区(面向对象部分讲)本地方法区(和系统相关)寄存器(给CPU使用概述:它就是一个包含多个一维数组的数组!
动态初始化:
格式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("}") ; } }运行结果
冒泡排序的思想: 相邻两两比较,大的往后放,第一次比较完毕,最大值就出现在最大索引处,依次这样比较。
代码
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]+", "); } } } }结果