发布于 2018-02-08 12:28:46 | 46 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的Java函数式编程,程序狗速度看过来!

Java程序设计语言

java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。


这篇文章主要介绍了 Java 方法签名详解及实例代码的相关资料,需要的朋友可以参考下

java 方法签名,我想做java 开发的朋友也知道,方法签名的重要性,是方法重载的一个比较好的解释,尤其是在后续优化方面,这里记录下,有看到的朋友也可看下,

方法签名的意义

对于同名不同类、同类不同名的方法,方法签名的意义并不是很大,但是对于重载方法来说,方法签名的意义就十分巨大了。由于重载方法之间的方法名是相同的,那么我们势必要从构成方法的其他几个要素中找到另一个要素与方法名组成能够唯一标示方法的签名,方法体当然不予考虑。那么就是形参列表和返回值了,但是由于对于调用方法的人来说,方法的形参数据类型列表的重要程度要远远高于返回值,所以方法签名就由方法名+形参列表构成,也就是说,方法名和形参数据类型列表可以唯一的确定一个方法,与方法的返回值一点关系都没有,这是判断重载重要依据,所以,以下的代码是不允许的


public long aaaa(){ 

} 
public int aaaa(){ 

} 


方法签名的格式

首先我们先看几个方法以及他们的方法签名:


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生成方法签名

类库类


$ 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 
... 

自定义类


package com.demo; 
 public class SigTest { 
   public static final String name = null; 
   public int getName(int[] data,long index) { 
     return 0; 
   } 
 } 

输出


$ 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的签名信息

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!



相关阅读 :
Java 方法签名详解及实例代码
Java Vector类详解及实例代码
java LinkedList类详解及实例代码
java Lock接口详解及实例代码
Java 分割字符串详解及实例代码
Java transient 关键字详解及实例代码
Java 日期转换详解及实例代码
java 反射机制详解及实例代码
java Arrays类详解及实例代码
java 实现 stack详解及实例代码
java split用法详解及实例代码
Java 反射机制详解及实例代码
最新网友评论  共有(0)条评论 发布评论 返回顶部
月排行榜

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务