学习笔记之JavaSE(5)--Java基础语法4
2016-10-27 09:28
288 查看
一、方法
方法是组合在一起来执行操作语句的集合,方法的语法格式为:修饰符+返回值类型+方法名+参数列表+方法体。关于方法我总结了如下要点:
修饰符包括权限修饰符和其它修饰符。权限修饰符包括public、protected、private和default;其它修饰符包括abstract,final,static,native,synchronized,transient,volatile等
返回值类型可以为void和任何类型,需要在方法体里面通过return关键字返回具体的值。
如果返回值类型为void,可以省略return语句
如果返回值类型不是void,必须确定每一条代码路径都将返回该类型所对应的值
return两个功能:返回与返回值类型对应的值;强制结束方法
制定方法名参见标识符的命名规范
参数列表中的参数为形参,可以看做该方法的局部变量
局部变量只能使用final修饰符修饰,否则编译错误
参数的传递是将实参的值拷贝并赋给形参
如果参数类型是基本类型,那么改变形参不会影响实参
如果参数类型是引用类型,相当于实参拷贝了一份引用赋给形参,相当于“一个电视有两个遥控器”,通过形参改变对象,实参所引用的对象也会改变(除了String)
示例程序:
方法重载和返回值类型、抛出异常类型和权限修饰符无关,不过可以任意改变它们
必须改变参数列表的个数、种类、顺序中至少一种
方法重载最常用的是构造方法重载
示例程序:
面试题:
1.方法重载和方法覆盖区别?
答:方法重载实现了编译时多态,方法覆盖实现了运行时多态。方法重载要求一同一改,方法名必须相同,参数列表必须不同(个数,种类,顺序)。
方法覆盖要求两同两小一大,方法名和参数列表必须相同,抛出异常和返回值类型小于等于父类(返回值是基本类型必须相同),访问权限大于等于父类。
方法是组合在一起来执行操作语句的集合,方法的语法格式为:修饰符+返回值类型+方法名+参数列表+方法体。关于方法我总结了如下要点:
修饰符包括权限修饰符和其它修饰符。权限修饰符包括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.方法重载和方法覆盖区别?
答:方法重载实现了编译时多态,方法覆盖实现了运行时多态。方法重载要求一同一改,方法名必须相同,参数列表必须不同(个数,种类,顺序)。
方法覆盖要求两同两小一大,方法名和参数列表必须相同,抛出异常和返回值类型小于等于父类(返回值是基本类型必须相同),访问权限大于等于父类。
相关文章推荐
- 学习笔记之JavaSE(6)--Java基础语法5
- 学习笔记之JavaSE(7)--Java基础语法6
- JAVA最基础的语法
- JAVA基础:Hibernate外键关联与HQL语法
- 1.java基础语法易忘点
- Java基础语法
- java入门(2)--基础语法
- java入门(2)--基础语法
- Java学习备忘录(二)基础语法和数组(原创)
- java基础语法-重载与覆盖
- Java 基础语法篇
- Java基础语法
- JAVA基础:Hibernate外键关联与HQL语法
- Java基础语法和工具拾遗
- [转]CoreJava学习笔记_Java语法基础
- java基础学习篇——2、java语言的一些基本语法
- JAVA基础:Hibernate外键关联与HQL语法
- 第二章:Java编程基础语法
- java基础语法、继承与重载、super、static、finally、String与StringBuffer的深入理解
- 1.java基础语法易忘点