Java学习笔记(5)【方法和数组】

Java学习笔记(5)【方法和数组】,第1张

Java学习笔记(5)【方法数组

文章目录
  • 前言
    • 一.方法的分类
      • 1.有返回值的方法
        • 1) 定义方法
        • 2) 调用方法:使用赋值调用(推荐)
        • 3) 相关流程
        • 4) 定义有具体返回值类型的方法注意事项:
      • 2.没有返回值的方法
        • 1) 定义方法
        • 2) 没有返回值的方法调用
        • 3) 简单代码举例
    • 二.数组
      • 1.数组的定义
      • 2.数组的定义格式
        • a) 动态初始化
        • b) 静态初始化
      • 3. 数组中常见的异常
        • 1) 运行时期异常
      • 4. 数组的遍历
        • 1)遍历数组
        • 2)求arr数组中的最大值和使用方法调用
        • 3) 数组的逆序


前言

提示:本文涉及方法(有返回值类型的方法和没有返回值类型的方法)、数组等方面的部分知识


提示:以下是本篇文章正文内容,下面案例可供参考

一.方法的分类 1.有返回值的方法 1) 定义方法

权限修饰符 static 返回值类型 方法名(参数类型1 变量名1, 参数类型2 变量名2, ...){业务代码 return 返回值;}

2) 调用方法:使用赋值调用(推荐)

这里我不太清楚,用自己的语言总结一下格式(具体看代码块)
main方法中调用的格式:
返回值类型 返回值 = 方法名(实际参数1,实际参数2, ...) ;

3) 相关流程

在main方法中定义的叫做实际参数
在自己定义的方法中定义的叫做形式参数
在调用方法时:

  • 首先实际参数会将结果赋给形式参数
  • 接下来通过自己写的业务代码逻辑进行一系列 *** 作
  • 最后return将所要返回的结果返回,在main方法中采用赋值调用的方法调用
    并打印输出语句

详细解释:看代码块注释里面的内容


//需求:求两个数据之和(没有提示啥数据类型,都是int)


class FunctionDemo{
	public static void main(String[] args){
		
		//键盘录入或者直接现在给具体值:实际参数!
		int a = 10 ;
		int b = 20 ;
		
		//调用方法
		//单独调用:用不了,计算出来---但是没有结果
		//add(a,b);
		
		
		//输出调用:不建议,硬编码
		//直接输出结果,如果想要通过获取的结果进行其他需求,就用不了
		//System.out.println("两个数据的结果是:"+add(a,b)) ; //可以输出
		
		//所以,有具体返回值类型的方法的调用---推荐使用 赋值调用(可以使代码更加灵活)
		
		//赋值调用:推荐使用
		//格式:返回值类型 返回值 = 方法名(实际参数1,实际参数2) ;
		int result = add(a,b) ;
		System.out.println("两个数据之和是"+result) ;
		
	}


		//定义求两个数据之和的功能(采用方法)
		
		

	public static int add(int x ,int y){//10,20是实际参数,x,y是形式参数,实际参数将结果赋值给形式参数
		
		//赋值运算
		int result = x + y ;
		
		return result ;
		
		//或者直接这样
		//return x+y ;
	}
}

执行流程分析

4) 定义有具体返回值类型的方法注意事项:
  • 方法和方法是平级关系,不能嵌套,只能在里面去调用

  • 定义方法的时候需要两个明确
    明确返回值类型
    明确参数类型以及参数个数(形式参数类型和几个参数)

  • 在定义方法的时候,形式参数必须携带数据类型,
    因为Java是一个强类型语言!

  • 在实际参数 main中,调用方法的时候,实际参数不需要携带数据类型,因为已经键盘录入,已经定义过了

  • 实际参数和形参参数,传参时,数据类型需要一一对应!

2.没有返回值的方法 1) 定义方法
权限修饰符 静态修饰符 void 方法名(形式参数列表){
		//完成的业务逻辑,输出等 *** 作
		但是不能有return (因为return必须和具有返回值类型的方法一块使用)
	}
2) 没有返回值的方法调用

单独调用

3) 简单代码举例
//需求:在控制台输出 4行5列的*型,使用方法调用完成!

class  FunctionDemo2{
	public static void main(String[] args){
		
		//调用方法:单独调用
		printStar(3,4) ;
		System.out.println("------------------") ;
		printStar(5,6) ;
		
	}

	public static void printStar(int m ,int n){
		//4行5列*
		
		for(int i=1; i<=m ; i++){
			for(int j=1; j<=n ;j++){
				System.out.print("*") ;
			}
			System.out.println() ;
		}
	}

}
二.数组 1.数组的定义

数组就是能够存储同一数据类型的容器!
容器里面的元素必须是同一种类型的元素

2.数组的定义格式
  • 1)数据类型[] 数组名称 ; (推荐第一种方式)
  • 2)数据类型 数组名称[] ;
a) 动态初始化

动态初始化:
给定数组的长度,数组内的元素内容由系统默认初始化!
默认初始化:系统给定的,根据我们数组中存储的数据类型来判定

格式:
数据类型[] 数组名称 = new 数据类型[数组长度] ; (推荐使用这一种)
数据类型 数组名称[] = new 数据类型[数组类型] ;

获取元素内容

通过数组名称[索引值(角标值)] 获取
索引值:从0开始

int[] arr = new int[3] ;
arr[0] 第一个元素
arr[1] 第二个元素
arr[2] 第三个元素

class ArrayDemo{
	
	public static void main(String[] args){
		int[] arr = new int[3] ;
		
		//解析上面的格式
		//= 左边
		//int :表示当前数组中存储元素为int类型数据(基本数据类型)
		//[] :表示一维数组(当前没有明确什么数组,都是一维数组)
		//arr :表示当前数组的对象名称(变量名) 叫 arr
		
		//= 右边
		//new: 创建对象(跟jvm内存图解有关:(在堆内存中))
		//int: 创建的对象是一个int类型的数组
		//[]: 表示创建的是一个一维数组
		//3: 表示给定的数组长度是3
		
		//直接输出arr
		System.out.println(arr) ; //输出结果是:[I@6d06d69c
		//解析:	[ :一维数组
			//	@ :地址值标记 @
			//	6d06d69c:十六进制数据
			
		//通过数组名称[索引值]获取元素内容
		System.out.println(arr[0]) ; //0
		System.out.println(arr[1]) ; //0
		System.out.println(arr[2]) ; //0
		
		//赋值
		arr[0] = 10 ;
		arr[1] = 20 ;
		arr[2] = 30 ;
		System.out.println(arr[0]) ; //10
		System.out.println(arr[1]) ; //20
		System.out.println(arr[2]) ; //30
		
	}
}
b) 静态初始化

静态初始化
​ 我们给定元素的内容,由系统来默认分配长度

格式:
数据类型[] 数组名称 = new 数据类型[] {元素1,元素2,元素3...} ;(推荐)。
数据类型 数组名称[] = new 数据类型[] {元素1,元素2,元素3...}

简化格式:
数据类型[] 数组名称 = {元素1,元素2,元素3....};(推荐使用)
数据类型[] 数组名称 = {元素1,元素2,元素3....};

创建数组的时候,不能即动态初始化了,还静态初始化了(动静结合:不行!)

3. 数组中常见的异常 1) 运行时期异常

​ a)数组角标越界异常----程序运行的时候出现异常

​ ArrayIndeexOutOfBoundsException 类名

​出现这个异常原因:
我们访问了数组中不存在的索引值报错!

解决方案: 改变索引值

b) 实际开发中,经常会出现 空指针异常 NullPointerException

​就是当前我们在访问某个对象的时候,对象已经是null,然后还要适用对象中的某个功能—出现空指针了

解决方案: 对当前这个对象进行非空判断

4. 数组的遍历 1)遍历数组

就是将数组中的元素一一输出




class ArrayTest{
	
	public static void main(String[] args){
		
		//方法1)创建一个数组,静态初始化
		int[] arr = {11,22,33,44,55,} ;
		int[] array = {1,2,3,4,5,6,7,8,9,10,11,12} ;
		
		//遍历arr数组
		//原始的做法
		//通过数组名称来访问
		//arr[角标]
		System.out.println(arr[0]) ;
		System.out.println(arr[1]) ;
		System.out.println(arr[2]) ;
		System.out.println(arr[3]) ;
		System.out.println(arr[4]) ;
		System.out.println("------------------------") ;
		//方法二)这样代码的冗余量很大---使用循环思想改进
		
		for(int x=0; x<5 ; x++){
			System.out.println(arr[x]) ;
		}
		System.out.println("-------------------------------") ;
	

		//在数组中有一个属性length:可以很掳爱获取数组长度 数组名称.length
		
		//继续优化代码
		for(int y=0; y 
2)求arr数组中的最大值和使用方法调用 


class ArrayTest2{
	public static void main(String[] args){
		
		//定义一个数组,静态初始化
		int[] arr = {10,20,30,40,50} ;
	
		//调用方法
		printArray(arr) ;
		
		System.out.println("---------------------") ;
		int max = maxArray(arr) ;
		System.out.println("最大值"+max) ;
	}
	
	
	public static void printArray(int[] array){
		
		//打印一个"[" 不换行
		System.out.print("[") ;
		
		//遍历数组
		for(int x=0 ; x max ){
					max = array[x] ;
				}
			}return max ;
	}

}

3) 数组的逆序
class ArrayTest3{
public static void main(String[] args){
	
	int[] arr = {11,22,33,44,55} ;
	
	
	System.out.println("逆序前:") ;
	printArray(arr) ;
	System.out.println("逆序后:") ;
	reverse(arr) ;
	
	//遍历输出结果:
	printArray(arr) ;
	}
	
	//先遍历数组,输出逆序之前的数组
	public static void printArray(int[] array){
		System.out.print("[") ;
		for(int x = 0 ;x < array.length ; x ++){
			if(x == array.length-1){
				System.out.println(array[x] +"]") ;
			}else{
				System.out.print(array[x] +", ") ;
			}
		}
	}
	
	//遍历数组,定义两个变量,起始索引和最终索引
	//起始索引从0开始,最终索引:arr.length-1开始,起始索引不断++,最终索引不断--
	//起始索引 < 最终索引
	public static void reverse(int[] arr){
		
		for(int start=0 ,end = arr.length-1;start

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zaji/5694575.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-17

发表评论

登录后才能评论

评论列表(0条)

    保存