一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java 方法簽名詳解及實例代碼

Java 方法簽名詳解及實例代碼

2020-06-27 14:47戎碼人生 JAVA教程

這篇文章主要介紹了 Java 方法簽名詳解及實例代碼的相關資料,需要的朋友可以參考下

java 方法簽名,我想做java 開發的朋友也知道,方法簽名的重要性,是方法重載的一個比較好的解釋,尤其是在后續優化方面,這里記錄下,有看到的朋友也可看下,

方法簽名的意義

對于同名不同類、同類不同名的方法,方法簽名的意義并不是很大,但是對于重載方法來說,方法簽名的意義就十分巨大了。由于重載方法之間的方法名是相同的,那么我們勢必要從構成方法的其他幾個要素中找到另一個要素與方法名組成能夠唯一標示方法的簽名,方法體當然不予考慮。那么就是形參列表和返回值了,但是由于對于調用方法的人來說,方法的形參數據類型列表的重要程度要遠遠高于返回值,所以方法簽名就由方法名+形參列表構成,也就是說,方法名和形參數據類型列表可以唯一的確定一個方法,與方法的返回值一點關系都沒有,這是判斷重載重要依據,所以,以下的代碼是不允許的

?
1
2
3
4
5
6
public long aaaa(){
 
}
public int aaaa(){
 
}

方法簽名的格式

首先我們先看幾個方法以及他們的方法簽名:

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

從以上三個例子,我們就可以很簡單的看出一些小小的規律:

JVM為我們提供的方法簽名實際上是由方法名(上文的例子為了簡單沒有寫出全類名)、形參列表、返回值三部分構成的,基本形式就是:

全類名.方法名(形參數據類型列表)返回值數據類型

Java方法簽名中特殊字符/字母含義

 

特殊字符 數據類型 特殊說明
V void 一般用于表示方法的返回值
Z boolean  
B byte  
C char  
S short  
I int  
J long  
F float  
D double  
[ 數組 以[開頭,配合其他的特殊字符,表示對應數據類型的數組,幾個[表示幾維數組
L 全類名; 引用類型 以 L 開頭 ; 結尾,中間是引用類型的全類名

 

一定要注意的是方法重載時,方法返回值沒有什么意義,是由方法名和參數列表決定的

利用javap生成方法簽名

類庫類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
$ javap -s java.lang.String
Compiled from "String.java"
public final class java.lang.String extends java.lang.Object implements java.io.Serializable,java.lang.Comparable,java.lang.CharSequence{
public static final java.util.Comparator CASE_INSENSITIVE_ORDER;
 Signature: Ljava/util/Comparator;
public java.lang.String();
 Signature: ()V
public java.lang.String(java.lang.String);
 Signature: (Ljava/lang/String;)V
public java.lang.String(char[]);
 Signature: ([C)V
public java.lang.String(char[], int, int);
 Signature: ([CII)V
public java.lang.String(int[], int, int);
 Signature: ([III)V
public java.lang.String(byte[], int, int, int);
 Signature: ([BIII)V
public java.lang.String(byte[], int);
 Signature: ([BI)V
public java.lang.String(byte[], int, int, java.lang.String)  throws java.io.UnsupportedEncodingException;
 Signature: ([BIILjava/lang/String;)V
public java.lang.String(byte[], int, int, java.nio.charset.Charset);
 Signature: ([BIILjava/nio/charset/Charset;)V
public java.lang.String(byte[], java.lang.String)  throws java.io.UnsupportedEncodingException;
 Signature: ([BLjava/lang/String;)V
public java.lang.String(byte[], java.nio.charset.Charset);
 Signature: ([BLjava/nio/charset/Charset;)V
public java.lang.String(byte[], int, int);
 Signature: ([BII)V
...

自定義類

?
1
2
3
4
5
6
7
package com.demo;
 public class SigTest {
   public static final String name = null;
   public int getName(int[] data,long index) {
     return 0;
   }
 }

輸出

?
1
2
3
4
5
6
7
8
9
10
11
12
13
$ javac SigTest.java
$ javap -s -p com.demo.SigTest
Compiled from "SigTest.java"
public class com.demo.SigTest extends java.lang.Object{
public static final java.lang.String name;
 Signature: Ljava/lang/String;
public com.demo.SigTest();
 Signature: ()V
public int getName(int[], long);
 Signature: ([IJ)I
static {};
 Signature: ()V
}

-s 表示打印簽名信息

-p 表示打印所有函數和成員的簽名信息,默認只打印public的簽名信息

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

原文鏈接:http://blog.csdn.net/qiuchengjia/article/details/52910884

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩一级免费毛片 | 波多野结衣教师未删减版 | 黑人异族日本人hd | 国产高清露脸学生在线观看 | 日韩精品免费一区二区三区 | 亚洲精品成人A8198A片漫画 | 十大网站免费货源 | 国产极品美女在线 | 精品国产免费 | 色综合天天综合网站中国 | 亚洲毛片免费看 | 国产精品3p视频 | 办公室大战秘书呻吟 | 亚洲AV人无码综合在线观看蜜桃 | 国产精品igao视频网网址 | 久久综合老色鬼网站 | 无码射肉在线播放视频 | 欧美区一区 | 四虎影视紧急入口地址大全 | 久久成人伊人欧洲精品AV | 国产成人高清视频 | 国产高清不卡码一区二区三区 | 毛片免费的| 亚洲乱亚洲乱妇41p 亚洲乱码一区二区三区国产精品 | 亚洲人成影院午夜网站 | 天天爱天天操天天射 | 国产亚洲毛片在线 | 99热er| 亚洲黄网站wwwwww | 成人影院在线观看免费 | 色五婷婷| 2019中文字幕 | 国产51社区精品视频资源 | 国产成人在线视频播放 | 五月天精品视频播放在线观看 | 99热这里只有精品免费 | 91在线老王精品免费播放 | 日本高清在线精品一区二区三区 | 欧美又大又粗又长又硬 | 亚洲国产精品自在现线让你爽 | 草莓影音|