java方法签名

java方法签名,主要作用在于区分两个方法,即唯一确定一个方法,用于确定两个方法是否可以重载。
在java中,确定一个方法需要三个要素:
1. 调用者,也就是方法所属者,既可以是类,也可以是变量;
2. 方法名,方法的标识;
3. 形参列表,当调用方法时,系统将会根据传入的实参列表匹配。
方法重载的要求就是两同一不同:同一个类中方法名相同,参数列表不同。所以方法签名就由方法名+形参列表构成。
我们先看几个方法以及他们的方法签名:

public void test1(){}      test1()V
public void test2(String str)      test2(Ljava/lang/String;)V
public int test3(){}       test3()I

JVM为我们提供的方法签名实际上是由方法名(上下文的例子简单没有写出全类名)、形参列表、返回值三部分构成,基本形式就是:
全类名.方法名(形参数据类型列表)返回值数据类型
其中,签名中的特殊字符/字母含义:

特殊字符数据类型特殊说明
Vvoid一般用于表示方法的返回值
Zboolean
Bbyte
Cchar
Sshort
Iint
Jlong
Ffloat
Ddouble
[数组以[开头,配合其他的特殊字符,表示对应数据类型的数组,几个[表示几维数组
L全类名;引用类型 以 L 开头 ; 结尾,中间是引用类型的全类名

可以使用javap命令生成方法签名,如:

$ javap -s java.lang.String

将会打印出String类里所有方法的方法签名。

C:\Users\T>javap -s java.lang.String
Compiled from "String.java"
public final class java.lang.String implements java.io.Serializable, java.lang.Comparable<java.lang.String>, java.lang.CharSequence {
  public static final java.util.Comparator<java.lang.String> CASE_INSENSITIVE_ORDER;
    descriptor: Ljava/util/Comparator;
  public java.lang.String();
    descriptor: ()V

  public java.lang.String(java.lang.String);
    descriptor: (Ljava/lang/String;)V

  public java.lang.String(char[]);
    descriptor: ([C)V

  public java.lang.String(char[], int, int);
    descriptor: ([CII)V

  public java.lang.String(int[], int, int);
    descriptor: ([III)V

  public java.lang.String(byte[], int, int, int);
    descriptor: ([BIII)V

  public java.lang.String(byte[], int);
    descriptor: ([BI)V

  public java.lang.String(byte[], int, int, java.lang.String) throws java.io.UnsupportedEncodingException;
    descriptor: ([BIILjava/lang/String;)V

  public java.lang.String(byte[], int, int, java.nio.charset.Charset);
    descriptor: ([BIILjava/nio/charset/Charset;)V

  public java.lang.String(byte[], java.lang.String) throws java.io.UnsupportedEncodingException;
    descriptor: ([BLjava/lang/String;)V

  public java.lang.String(byte[], java.nio.charset.Charset);
    descriptor: ([BLjava/nio/charset/Charset;)V

  public java.lang.String(byte[], int, int);
    descriptor: ([BII)V

  public java.lang.String(byte[]);
    descriptor: ([B)V

  public java.lang.String(java.lang.StringBuffer);
    descriptor: (Ljava/lang/StringBuffer;)V

  public java.lang.String(java.lang.StringBuilder);
    descriptor: (Ljava/lang/StringBuilder;)V

  java.lang.String(char[], boolean);
    descriptor: ([CZ)V

  public int length();
    descriptor: ()I

  public boolean isEmpty();
    descriptor: ()Z

  public char charAt(int);
    descriptor: (I)C

  public int codePointAt(int);
    descriptor: (I)I

  public int codePointBefore(int);
    descriptor: (I)I

  public int codePointCount(int, int);
    descriptor: (II)I

  public int offsetByCodePoints(int, int);
    descriptor: (II)I

  void getChars(char[], int);
    descriptor: ([CI)V

  public void getChars(int, int, char[], int);
    descriptor: (II[CI)V

  public void getBytes(int, int, byte[], int);
    descriptor: (II[BI)V

  public byte[] getBytes(java.lang.String) throws java.io.UnsupportedEncodingException;
    descriptor: (Ljava/lang/String;)[B

  public byte[] getBytes(java.nio.charset.Charset);
    descriptor: (Ljava/nio/charset/Charset;)[B

  public byte[] getBytes();
    descriptor: ()[B

  public boolean equals(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z

  public boolean contentEquals(java.lang.StringBuffer);
    descriptor: (Ljava/lang/StringBuffer;)Z

  public boolean contentEquals(java.lang.CharSequence);
    descriptor: (Ljava/lang/CharSequence;)Z

  public boolean equalsIgnoreCase(java.lang.String);
    descriptor: (Ljava/lang/String;)Z

  public int compareTo(java.lang.String);
    descriptor: (Ljava/lang/String;)I

  public int compareToIgnoreCase(java.lang.String);
    descriptor: (Ljava/lang/String;)I

  public boolean regionMatches(int, java.lang.String, int, int);
    descriptor: (ILjava/lang/String;II)Z

  public boolean regionMatches(boolean, int, java.lang.String, int, int);
    descriptor: (ZILjava/lang/String;II)Z

  public boolean startsWith(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)Z

  public boolean startsWith(java.lang.String);
    descriptor: (Ljava/lang/String;)Z

  public boolean endsWith(java.lang.String);
    descriptor: (Ljava/lang/String;)Z

  public int hashCode();
    descriptor: ()I

  public int indexOf(int);
    descriptor: (I)I

  public int indexOf(int, int);
    descriptor: (II)I

  public int lastIndexOf(int);
    descriptor: (I)I

  public int lastIndexOf(int, int);
    descriptor: (II)I

  public int indexOf(java.lang.String);
    descriptor: (Ljava/lang/String;)I

  public int indexOf(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)I

  static int indexOf(char[], int, int, java.lang.String, int);
    descriptor: ([CIILjava/lang/String;I)I

  static int indexOf(char[], int, int, char[], int, int, int);
    descriptor: ([CII[CIII)I

  public int lastIndexOf(java.lang.String);
    descriptor: (Ljava/lang/String;)I

  public int lastIndexOf(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)I

  static int lastIndexOf(char[], int, int, java.lang.String, int);
    descriptor: ([CIILjava/lang/String;I)I

  static int lastIndexOf(char[], int, int, char[], int, int, int);
    descriptor: ([CII[CIII)I

  public java.lang.String substring(int);
    descriptor: (I)Ljava/lang/String;

  public java.lang.String substring(int, int);
    descriptor: (II)Ljava/lang/String;

  public java.lang.CharSequence subSequence(int, int);
    descriptor: (II)Ljava/lang/CharSequence;

  public java.lang.String concat(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;

  public java.lang.String replace(char, char);
    descriptor: (CC)Ljava/lang/String;

  public boolean matches(java.lang.String);
    descriptor: (Ljava/lang/String;)Z

  public boolean contains(java.lang.CharSequence);
    descriptor: (Ljava/lang/CharSequence;)Z

  public java.lang.String replaceFirst(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;

  public java.lang.String replaceAll(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;

  public java.lang.String replace(java.lang.CharSequence, java.lang.CharSequence);
    descriptor: (Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;

  public java.lang.String[] split(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)[Ljava/lang/String;

  public java.lang.String[] split(java.lang.String);
    descriptor: (Ljava/lang/String;)[Ljava/lang/String;

  public static java.lang.String join(java.lang.CharSequence, java.lang.CharSequence...);
    descriptor: (Ljava/lang/CharSequence;[Ljava/lang/CharSequence;)Ljava/lang/String;

  public static java.lang.String join(java.lang.CharSequence, java.lang.Iterable<? extends java.lang.CharSequence>);
    descriptor: (Ljava/lang/CharSequence;Ljava/lang/Iterable;)Ljava/lang/String;

  public java.lang.String toLowerCase(java.util.Locale);
    descriptor: (Ljava/util/Locale;)Ljava/lang/String;

  public java.lang.String toLowerCase();
    descriptor: ()Ljava/lang/String;

  public java.lang.String toUpperCase(java.util.Locale);
    descriptor: (Ljava/util/Locale;)Ljava/lang/String;

  public java.lang.String toUpperCase();
    descriptor: ()Ljava/lang/String;

  public java.lang.String trim();
    descriptor: ()Ljava/lang/String;

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;

  public char[] toCharArray();
    descriptor: ()[C

  public static java.lang.String format(java.lang.String, java.lang.Object...);
    descriptor: (Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

  public static java.lang.String format(java.util.Locale, java.lang.String, java.lang.Object...);
    descriptor: (Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

  public static java.lang.String valueOf(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/String;

  public static java.lang.String valueOf(char[]);
    descriptor: ([C)Ljava/lang/String;

  public static java.lang.String valueOf(char[], int, int);
    descriptor: ([CII)Ljava/lang/String;

  public static java.lang.String copyValueOf(char[], int, int);
    descriptor: ([CII)Ljava/lang/String;

  public static java.lang.String copyValueOf(char[]);
    descriptor: ([C)Ljava/lang/String;

  public static java.lang.String valueOf(boolean);
    descriptor: (Z)Ljava/lang/String;

  public static java.lang.String valueOf(char);
    descriptor: (C)Ljava/lang/String;

  public static java.lang.String valueOf(int);
    descriptor: (I)Ljava/lang/String;

  public static java.lang.String valueOf(long);
    descriptor: (J)Ljava/lang/String;

  public static java.lang.String valueOf(float);
    descriptor: (F)Ljava/lang/String;

  public static java.lang.String valueOf(double);
    descriptor: (D)Ljava/lang/String;

  public native java.lang.String intern();
    descriptor: ()Ljava/lang/String;

  public int compareTo(java.lang.Object);
    descriptor: (Ljava/lang/Object;)I

  static {};
    descriptor: ()V
}
  • 16
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值