学习笔记之JavaSE(5)--Java基础语法4

一、方法

方法是组合在一起来执行操作语句的集合,方法的语法格式为:修饰符+返回值类型+方法名+参数列表+方法体。关于方法我总结了如下要点:

  • 修饰符包括权限修饰符和其它修饰符。权限修饰符包括public、protected、private和default;其它修饰符包括abstract,final,static,native,synchronized,transient,volatile等
  • 返回值类型可以为void和任何类型,需要在方法体里面通过return关键字返回具体的值。
  • 如果返回值类型为void,可以省略return语句
  • 如果返回值类型不是void,必须确定每一条代码路径都将返回该类型所对应的值
  • return两个功能:返回与返回值类型对应的值;强制结束方法
  • 制定方法名参见标识符的命名规范
  • 参数列表中的参数为形参,可以看做该方法的局部变量
  • 局部变量只能使用final修饰符修饰,否则编译错误
  • 参数的传递是将实参的值拷贝并赋给形参
  • 如果参数类型是基本类型,那么改变形参不会影响实参
  • 如果参数类型是引用类型,相当于实参拷贝了一份引用赋给形参,相当于“一个电视有两个遥控器”,通过形参改变对象,实参所引用的对象也会改变(除了String
示例程序:
public class Test16 {

	public static void main(String[] args){
		Scanner s=new Scanner(System.in);
		System.out.print("请输入整数x:");
		int x=s.nextInt();
		System.out.print("请输入整数y:");
		int y=s.nextInt();
		s.close();
		Test16 t=new Test16();
		System.out.println("x+y="+t.add(x, y));
		System.out.println("x-y="+t.minus(x, y));
		System.out.println("x*y="+t.multiplyBy(x, y));
		System.out.println("x/y="+t.divideBy(x, y));
		System.out.println(t.getLevel(99));
	}
	
	public int add(int a,int b){
		return a+b;
	}
	
	public int minus(int a,int b){
		return a-b;
	}
	
	public int multiplyBy(int a,int b){
		return a*b;
	}
	
	public double divideBy(int a,int b){
		if(b!=0){
			return (double)(a/b);
		}else{
			return 0;
		}
	}
	
	//如果返回值类型不是void,必须确定每一条代码路径都将返回该类型所对应的值
	public String getLevel(int score){
		if(score>=0&&score<60){
			return "您的成绩为不及格";
		}else if(score>=60&&score<70){
			return "您的成绩为D";
		}else if(score>=70&&score<80){
			return "您的成绩为C";
		}else if(score>=80&&score<90){
			return "您的成绩为B";
		}else if(score>=90&&score<=100){
			return "您的成绩为A";
		}else{
			return "您的成绩为不及格";
		}
	}
}

二、方法重载

方法重载是指在一个类中定义多个同名方法,但要求每个方法的参数列表必须不同。调用重载方法时,编译器通过检查调用的方法的参数列表选择一个合适的方法。方法重载的知识点:
  • 方法重载和返回值类型、抛出异常类型和权限修饰符无关,不过可以任意改变它们
  • 必须改变参数列表的个数、种类、顺序中至少一种
  • 方法重载最常用的是构造方法重载
示例程序:
public class Test17 {
	private String name;
	
	//构造方法的方法重载
	public Test17(){}
	public Test17(String name){
		this.setName(name);
		System.out.println(name+" has been constructed!");
	}
	
	public static void main(String[] args) {
		Test17 t=new Test17("k");
		System.out.println(t.add(1, 1.1));//使用原始方法
		System.out.println(t.add(1, 1.1, 1));//使用重载版一
		System.out.println(t.add(1.1 , 1.1));//使用重载版二
		System.out.println(t.add(1.1, 1));//使用重载版三
	}
	
	//方法重载
	public double add(int a,double b){
		return a+b;
	}
	
	public double add(int a,double b,int c){//参数列表的个数不同
		return add(a,b)+c;
	}
	
	public int add(double a,double b){//参数列表的类型不同
		return (int)(a+b);
	}
	
	protected double add(double a,int b){//参数列表的顺序不同
		return a+b;
	}	
	
	//私有变量的getter与setter
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

面试题:
1.方法重载和方法覆盖区别?
答:方法重载实现了编译时多态,方法覆盖实现了运行时多态。方法重载要求一同一改,方法名必须相同,参数列表必须不同(个数,种类,顺序)。
方法覆盖要求两同两小一大,方法名和参数列表必须相同,抛出异常和返回值类型小于等于父类(返回值是基本类型必须相同),访问权限大于等于父类。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值