JAVAEE1910 day05学习总结

方法概述

方法:

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

方法的定义:

定义格式:
修饰符 返回值类型 方法名 (参数列表) {
代码(方法体)…
return ;
}
没有返回值类型的方法定义
修饰符 void 方法名(参数类型1 参数名1…){
//没有return
直接输出的形式
}

没有具体返回值类型方法的调用
只能使用单独调用

定义格式解释:
-修饰符:目前固定写法public static
-返回值类型:用于限定返回值的数据类型
-方法名:一个名称,给当前代码块{} 起名字
要遵循Java中的标识符:小驼峰命名法
如果是单个单词,全部小写
多个单词,第一个单词小写,其他首字母大写
-参数类型:
实际参数:具体在参与运算的实际值
形式参数:在方法中传递的参数

参数类型:基本数据类型
参数名:变量名
-方法体:完成功能的代码
-return:结束方法以及返回方法指定类型的值
-返回值:程序被return带回的结果,返还给调用者
-定义方法的时候,心里有"两个明确"
1)明确返回值的类型
2)明确参数个数以及参数类型
有返回值类型的方法如何调用:
1)单独调用:没有意义,没有结果
2)输出调用:可以实现,怒推荐,数据写死
3)赋值调用(推荐)
eg:
需求:求两个数之和(没有告诉具体类型 int)

class FunctiongDemo{
	public static void main(String[] args){
		//定义两个变量
		int a =10;
		int b =20;
		//此处调用方法
		//单独调用,没有意义
		//sum(a,b);
		//输出调用
		//System.out.println("两个数据之和是:"+sum(a,b)) ;
			
			//赋值调用
			int result = sum(a,b) ;
			System.out.println("两个数据之和是:"+result) ;
		
		}
		
		/*
			定义方法
			两个明确
				1)明确返回值类型 :int
				2)明确参数个数以及参数类型:两个,int类型
			
		*/
		
		public static int sum(int a, int b){ //形式参数要带上数据类型 
			//具体的运算
			//结果变量
			//int c =a +b ;
			//return c ;
			
			//改进
			return a+b ;

	
	}
}		

定义方法的注意事项:
1.方法和方法是平级关系,方法中不能再定义方法
2.调用时,实际参数不需要携带数据类型,形式参数必须携带数据类型,否则报错
3.方法不调用,不执行,如果调用,采用赋值调用

方法重载

方法重载: overload

在方法中,方法重载:方法名相同,参数列表不同,与返回值无关!

参数列表不同
1)参数个数不同
2)参数类型不同
方法递归:(后期讲)
不死神兔
有一对兔子,每个月会产生一对兔子,这对兔子经过经过3个月后再产生一对兔子,第20个月有多少对兔子?
方法调用方法本身的现象.

面试题:overload和override的区别?
两者之间没有联系

判断夏磊哪些方法属于方法重载?
public static void open(){}
public static void open(int a){}
public static void open(int a ,int b){}
public static void open(double a,int b){}
public static void open(int a,double b){}
public static void open(int i,double d){}
public static void open(float a,long b){}
public static void OPEN(){}
public static void open(int a,int j){}

/*
比较两个数据是否相等。参数类型分别为两个byte类型,两个short类型,两个int类型,两个long
类型,并在main方法中测试

*/

class Demo{
	public static void main(String[] args){
		//定义两个byte类型的变量
		byte b1=2;
		byte b2=3;

		//调用
		boolean flag = compare(b1,b2);
		System.out.println(flag);

		short s1 = 5;
		short s2 = 5;
		boolean flag2 =compare(s1,s2);
		System.out.println(flag2);
	}
		public static boolean compare(int a ,int b){
			return (a==b);
		}
		public static boolean compare(short a,short b){
			return(a==b);
		}	
}

数组

可以存储多个元素的容器
注意:这多个元素必须是同一个数据类型

数组定义格式:
数据类型[] 数组名称;
数据类型 数组类型[];
eg:
int[] arr;定义了一个int类型数组,数组名称是arr
int arr[];定义了一个int类型的arr数组
数组的初始化:
动态初始化:具体数组中的元素值,由系统默认给定,数组的长度由开发者定义;
数组数据类型[] 数组名称=new 数据类型[数组长度];
数组数据类型 数组名称[]=new 数据类型[数组长度];

获取数组的元素值:通过数组名称[角标] ,角标从0开始编号!
arr[0] = ..
arr[1]
arr[2]..
class Demo{
	public static void main(String[] args){
		
		//定义一个数组,动态初始化
		int[] arr = new int[3] ;//0,1,2
		/*
			=号左边
			int:规定数组中的元素值都是int类型
			[]:定义数组(没有说明具体的数组形式,默认一维数组)
			
			=号右边
			new :表示需要在栈内存开辟空间 
			int:规定数组中的元素值都是int类型
			[] :一维数组
			3:表示当前数组的长度是3 (3个元素)
		*/
		System.out.println(arr) ;//[I@6d06d69c  类似内存地址值
		//如何获取数组的元素值呢?
		System.out.println(arr[0]) ;//0
		System.out.println(arr[1]) ;//0
		System.out.println(arr[2]) ;//0
		System.out.println("----------------------------");
		arr[0] = 10 ;
		arr[1] = 20 ;
		System.out.println(arr[0]) ;
		System.out.println(arr[1]) ;
		System.out.println(arr[2]) ;
	
	}
}

静态初始化:
有系统给定默认长度,开发者定义数组的元素内容
数据类型[] 数组名 = new 数据类型[]{元素1,元素2…};
变形格式:
数据类型 数组名[]= new 数据类型[]{元素1,元素2…};
简写格式:
数据类型[] 数组名称 = {元素1,元素2…};
eg:
int[] arr = new int[]{12,15,21};
简化版:
int[] arr = {12,15,21};
int arr[] = {12,15,21};
数组中常见的两个问题
1)数组角标越界
访问不存在的数组中的角标
java.lang.ArrayIndexOutOfBoundsException :(属于运行时期异常)
解决方案:
排查具体原因,具体哪一行角标越界
2)java.lang.NullPointerException :空指针异常! :(属于运行时期异常)
为何出现空指针
当一个对象得引用不存在了,然后还需要使用对象完成一些特定功能
解决方案:
对当前这个对象进行非空判断
if(对象名称!=null){
//使用对象完成特定的功能
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值