本文目录一览:
java的方法签名是什么?
方法签名就由方法名+形参列表构成.所以你这个例子中是:
multiples(int n, int limit)
JAVA中 什么是方法签名
其实对于同名不同类、同类不同名的方法,方法签名的意义并不是很大,但是对于重载方法来说,方法签名的意义就十分巨大了。由于重载方法之间的方法名是相同的,那么我们势必要从构成方法的其他几个要素中找到另一个要素与方法名组成能够唯一标示方法的签名,方法体当然不予考虑。那么就是形参列表和返回值了,但是由于对于调用方法的人来说,方法的形参数据类型列表的重要程度要远远高于返回值,所以方法签名就由方法名+形参列表构成,也就是说,方法名和形参数据类型列表可以唯一的确定一个方法,与方法的返回值一点关系都没有,这是判断重载重要依据,所以,以下的代码是不允许的。
public long aaaa(){
}
public int aaaa(){
}
接下来,就来解释一下,当程序出现NoSuchMethodException时,JVM为我们提供的异常信息究竟是什么意思。首先我们先看几个方法以及他们的方法签名:
public void test1(){} test1()V
public void test2(String str) test2(Ljava/lang/String;)V
public int test3(){} test3()I
从以上三个例子,我们就可以很简单的看出一些小小的规律:
JVM为我们提供的方法签名实际上是由方法名(上文的例子为了简单没有写出全类名)、形参列表、返回值三部分构成的,基本形式就是:
全类名.方法名(形参数据类型列表)返回值数据类型
我们知道了JVM提供的方法签名的结构之后还是不够,因为JVM是并没有特别明确的将数据类型写出来,而是提供了特殊的表示法,下表就是对特殊表示字符、字母与对应数据类型的关系:
Java方法签名中特殊字符/字母含义
特殊字符 数据类型 特殊说明
V void 一般用于表示方法的返回值
Z boolean
B byte
C char
S short
I int
J long
F float
D double
[ 数组 以[开头,配合其他的特殊字符,表示对应数据类型的数组,几个[表示几维数组
L全类名; 引用类型 以L开头、;结尾,中间是引用类型的全类名
在Java高手请进 什么是方法签名?
不是,方法签名是指方法的返回值、方法名及参数列表。
基本上等同于声明
方法签名定义 Java
方法签名由方法名称和一个参数列表(方法的参数的顺序和类型)组成。
常见的问题应用:重载和重写。
例子(我原来回答过的一个问题):
public class A{
protected int method (int a, int b) {
return 0;
}
}
class B extends A{
private int method(int a,long b){
return 0;
}
}
重写要求 两个方法的方法签名相同。至于修饰符,范围相同或者比父类的范围小即可。
所以 B的method方法根本不是重写的A 的method方法,而是重载。重载要求方法名相同,参数返回值随便改。
所以,参数不一定改成long,随便什么都是重载。也不是必须加@override,写这个表示eclipse会给你去父类检查重写的对不对,不写就自己检查呗。
重写是覆盖,就是子类的替换了父类的,正常用方法,调的是子类的,所以重写完还是一个方法
重载是写多个同名方法,但可以给的参数不同,功能类似,所以正常调哪个方法,要看参数怎么写的,跟继承无关,区别是重载后变成多个方法。
Java中main()方法为什么采用这个方法签名
(1)public修饰符:java类有JVM调用,为了让JVM可以自由调用这个main()方法,所以使用public修饰符把这个方法暴露出来。
(2)static修饰符:JVM调用这个主方法时,不会先创建该主类的对象,然后通过对象来调用该主方法,JVM直接通过该类来调用主方法,因此使用static修饰该主方法。
(3)void返回值:因为主方法被JVM调用,该方法的返回值将返回给JVM,这没有任何意义,因此main()方法没有返回值。