具体返回值类型的方法&&数组

本文详细介绍了Java中具有返回值类型和无返回值类型的方法定义与调用,包括方法的参数类型、返回值类型明确、递归调用等概念。此外,还讲解了数组的定义、初始化、遍历及异常处理,包括动态初始化和静态初始化两种方式,并展示了如何处理数组越界和空指针异常。最后,通过实例展示了数组元素的访问和遍历方法。
摘要由CSDN通过智能技术生成

1. 具有返回值类型的方法的使用!

	定义有具体返回值类型的方法的定义的注意事项:
		1)方法和方法平级关系,不能嵌套使用!
			特殊:方法递归(IO流后面讲):方法调用方法本身的一种现象!
		2)定义方法注意两个明确
			明确返回值类型
			明确参数类型以及参数个数
		3)定义方法的时候:
				参数类型必须携带的!
			public static int add(x,y){}  错误的:
			因为Java是一种强类型语言:语法非常严谨的,以及格式是有要求的!		
		4)定义方法的时候,()后面不要出现; (目前来说没意义的方法!) 
		5)调用方法的时候,实际参数不需要携带数据类型
class Demo{

	public static void main(String[] args){	
		//定义两个变量
		//实际参数
		int x = 10 ;
		int y = 20 ;
		
		//调用方法的时候,实际参数不需要携带数据类型
		//int result = add(int x,int y) ;//错误写法
		int result = add(x,y) ;
		System.out.println("两个数据之和是:"+result);
	}
	
	//定义两个数据求和的功能:默认int类型

	public static int add(int x,int y){//形参需要携带数据类型
		return  x + y ;
	}
}

2.没有具体返回值类型的方法定义以及调用

	方法定义:
		public static 返回值类型  方法名(形式参数列表(包含数据类型+变量名)...){
			要么 return 结果;		
			要么没有具体结果;
		}
		
	Java的语法:
		方法本身的定义:需要返回值类型,但是如果需求本身就没有具体返回结果,如何定义方法呢?
				语法要求:如果没有具体返回值结果,使用void 来代替 返回值类型(位置)	
			注意:Java中不存在void类型(替代词)
				
	没有具体返回值类型的方法的定义格式:
	public static void 方法名(形式参数类型1 变量名1,形式参数类型2 变量名2...){
		直接输出语句或者其他业务操作;
	}
	
	没有具体返回值类型的方法调用
		单独调用
		赋值调用
		输出调用
class Demo{
	public static void main(String[] args){//固定格式
		//打印4行5列的*	
		for(int x = 0 ; x < 4 ; x ++){//行数
			for(int y = 0 ; y < 5 ; y ++){//列数
				System.out.print("*") ;
			}
			System.out.println() ;
		}
		System.out.println("---------------------") ;
		
		
		//赋值调用
		//void result = printStar(5,6) ;非法的表达式开始
		//System.out.println(printStar(5,6)) ;
		//单独调用
		printStar(5,6) ;
		System.out.println("---------------------") ;
		printStar(9,9) ;
	}
	
	/*
		将上面n行n列的*形 方法改进
		public static void 方法名(形式参数类型1 变量名1,形式参数类型2 变量名2...){
		直接输出语句或者其他业务操作;
	}
	
	两个明确:
		1)明确返回值类型: 没有具体返回值类型---使用 void代替
		2)明确参数类型以及参数个数
			int类型 2个
				
	*/
	public static void printStar(int m,int n){//m:行数,n表示列数
			for(int x = 0 ; x < m; x ++){
				for(int y = 0 ; y < n ; y ++){
					System.out.print("*") ;
				}
				System.out.println() ;
			}
		
	}
}

3.没有有返回值类型的方法的使用

import java.util.Scanner ;
class Demo{
	public static void main(String[] args){
		//键盘录入两个数据,求两个数据中的最大值
		//创建键盘录入对象
		Scanner sc = new Scanner(System.in) ;
		//提示并录入两个数据
		System.out.println("请输入第一个数据:") ;
		int a = sc.nextInt();
		System.out.println("请输入第二个数据:") ;
		int b = sc.nextInt();
		//调用求两个数据最大值的方法
		int  max = getMax(a,b) ;
		//输出
		System.out.println("两个数据中的最大值是:"+max) ;
		System.out.println("-------------------------------") ;
		
	//键盘录入两个数据,比较两个数据是否相等
	//分析:结果:相等:true,不相等:false	
		System.out.println("请输入第一个数据:") ;
		int firstNum = sc.nextInt();
		
		System.out.println("请输入第二个数据:") ;
		int secNum = sc.nextInt();
		
		//调用方法
		boolean flag = compare(firstNum,secNum) ;
		System.out.println("flag:"+flag) ;		
	}
	/*
	键盘录入两个数据,比较两个数据是否相等
		两个明确:
			1)明确返回值类型:boolean类型
			2)明确参数类型以及参数个数
					int类型,2个参数
	*/
	public static boolean compare(int a,int b){//形参
		//简写方式
		//return a==b ; //== :比较两个数据值是否相等! ==
		return (a==b)? true: false ;
	}
	/*
		定义方法:
		两个明确
			1)明确返回值类型: int
			2)明确参数类型以及参数个数
			  int类型,两个参数
	*/
	//方式1:三元运算符
	public static int getMax(int a,int b){
		//比较a和b的最大值	
		return (a > b) ? a: b ;
	}
	
	//方式2:if...else 语句
	public static int getMax2(int a,int b){
		//定义max变量
		int max ; 
		if(a> b){
			max = a ;
		}else{
			max = b ;
		}	
		return max ;
	}
}

4.数组定义

数组:是可以存储元素的一种容器!
	
	前提:元素的数据类型必须一致的!	
	
	如何定义呢?
			格式:
					数据类型[] 数组名称 ;
					数据类型 数组名称[] ;
					
			举例:
					int[] arr; (习惯于第一种) 定义了一个int类型数组arr变量
					int arr[] ;定义了一个int类型的arr数组
	数组的初始化:
			1)动态初始化:指定了数组长度,系统默认给定数组的元素值!
			2)静态初始化:指定了具体的元素的内容,系统默认指定数组的长度!
			
	动态初始化:
		数据类型[]  数组名称 =  new 数据类型[数组长度] ;
		数据类型 数组名称[] = new 数据类型[数组长度] ;
		
		举例:
			int[] arr = new int[3] ;  //创建了一个数组对象,分配3个长度
			int arr[] = new int[2] ;//.创建了一个数组对象,分配2个长度
			
			数组中元素的的访问方式:
				数组名称[角标]来访问
					角标(下标/索引):都是从0开始记录元素的!
class Demo{
	public static void main(String[] args){
		//测试:创建一个数组对象:默认:int类型
		int[] arr = new int[3] ;

		System.out.println(arr) ;//[I@6d06d69c
		//[:一维数组    I :int类型  @:地址值标记   6d06d69c十六进制数据
	
		System.out.println(arr[0]) ; //0
		System.out.println(arr[1]) ;//0
		System.out.println(arr[2]) ;//0
		System.out.println("----------------------") ;
		
		//自己显示初始化
		//重新赋值
		arr[0]  = 100 ;
		arr[1] = 50 ;
		System.out.println(arr) ;
		System.out.println(arr[0]) ; 
		System.out.println(arr[1]) ;
		System.out.println(arr[2]) ;
	}
}

5.数组的静态初始化

数组的静态初始化 :指定数组的元素内容,系统给它默认长度
	
	格式:
		标准格式:
			数据类型[] 数组名称 = new 数据类型[]{元素1,元素2,元素3....} ;
			数据类型 数组名称[] = new 数据类型[]{元素1,元素2,元素3....} ;
			
		举例:
				int[] arr = new int[]{11,22,33} ;
				
		简化格式:
				数据类型[] 数组名称  ={元素1,元素2,元素3....} ;
				数据类型 数组名称[]  ={元素1,元素2,元素3....} ;
class Demo{
	public static void main(String[] args){
		
		//创建一个数组:静态初始化
		int[] arr = {11,22,33,44,55} ;
		
		System.out.println(arr) ;//地址值
		System.out.println(arr[3]) ;
		System.out.println(arr[0]) ;
	}
}

6.数组中出现的异常

异常: 后期Throwable:异常的总称
		程序出问题了!
	严重问题:
			error : 内存异常了 (通过一些第三方工具避免了!)
			
			举例:  一些软件通过一些特殊的操作:造成软件崩溃了!
			
	异常:
			Exception: 能够通过本身代码来解决问题
				
				编译时期异常:只要不是运行时期的异常都属于编译时期(不解决,编译通过不了)
				RuntimeExcetion:运行时期异常
							在执行过程中,由于代码结构不严谨,导致的问题!
							
		
		第一个异常:数组角标越界!
		java.lang.ArrayIndexOutOfBoundsException:
		出现的原因:访问不存在的角标!就出异常了
		解决方案:改动角标值即可!
		
		
		
		第二个异常:空指针异常:
		java.lang.NullPointerException:
		出现的原因:
			某个对象都为null,还需要使用对象访问内容或者调用其他功能!
			
		解决方案:
			只需要对某个对象做一个非空判断!(逻辑判断)
class ArrayDemo5{
	public static void main(String[] args){
		
		//创建一个数组,静态初始化 
		
		int[] arr = {1,2,3} ;
		System.out.println(arr) ;
		System.out.println(arr[0]) ;
		System.out.println(arr[1]) ;
	    System.out.println(arr[2]) ;
		//System.out.println(arr[3]) ;//3:访问不存在的角标!就出异常了
		System.out.println("------------------") ;
		//给arr重新赋值
		arr = null ;
		//System.out.println(arr[0]) ;java.lang.NullPointerException
		
		//逻辑判断
		if(arr!=null){
			System.out.println(arr[0]) ;
		}else{
			System.out.println("数组对象为null了...") ;
		}
		
	}
}

7.数组的遍历

class Demo{
	public static void main(String[] args){
		//有一个数组:静态初始化
		int[] arr = {11,22,33,44,55} ; 
		//数组的最大索引(角标)值 = 数组长度-1
		//原始的做法:  通过数组名称[角标]来访问元素
		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("------------------------------") ;
		
		printArray(arr) ;
	}
	
	public static void printArray(int[] arr){
		//输出:左中括号"{"
		System.out.print("{") ;
		
		//遍历数组
		for(int x = 0 ; x < arr.length ; x ++){//x是索引(角标)
			//11  22 33 44 55 
		
			//判断当前x是否取到最大索引值! arr.length-1
			if(x == arr.length -1){
				//取到最大索引值,输出每一个元素以及+"}"
				System.out.println(arr[x] +"}") ;
			}else{
				//中间的元素:
				//输出:arr[x] +", " ,同一行上
				System.out.print(arr[x] +", ") ;
			}
		}
	}
	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值