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

目录

 

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 方法名(参数列表){
    方法体...
}

格式组成解释

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

1.3 方法的调用

 

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

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

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

  1. 其实就是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 数组的初始化

为什么要初始化?

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

数组初始化的方式

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

动态初始化格式;

格式:数据类型[] 数组名 = 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 数组中常见的两个小问题

  1. 数组索引越界 ArrayIndexOutOfBoundsException 访问到了数组中的不存在的索引时发生。
  2. 空指针异常 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]+", ");
			}
		}
	
	}
}

结果

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值