赞
踩
重载:
重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。
每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。
最常用的地方就是构造器的重载。
重载的作用:
一般情况下,方法的命名要遵守一定的规则,保证程序的可读性,那么,很可能在一个类中需要不同的方法但是方法名需要相同,参数不同,比如最常用的登录(Login),这时会用到重载,这样,既可以表示方法的意义,又表示这些方法是相关方法,方便调用。另外,重载对于编写结构清晰而简洁的类有很大的作用。
String对+的重载
java中实际没有运算符的重载,但是对String对象而言,它是可以直接+
将两个String对象的字符串值相加。乍看起来这是对+
的重载,但我们可以通过class文件看出,这只是JVM做的语法糖。
举例说明:
- public class TestString {
- public static void main (String[] args){
- String str1 = "I like";
- String str2 = " animal";
- String str3 = str1 + str2;
- System.out.println("str3:" + str3);
- }
- }
输出结果:
str3:I like animal
看了反编译之后的代码我们发现,其实String对+
的支持其实就是使用了StringBuilder以及他的append、toString两个方法。
反编译内容如下:
- public class com.rrx.finance.fund.common.TestString {
- public com.rrx.finance.fund.common.TestString();
- Code:
- 0: aload_0
- 1: invokespecial #1 // Method java/lang/Object."<init>":
- ()V
- 4: return
-
- public static void main(java.lang.String[]);
- Code:
- 0: ldc #2 // String I like
- 2: astore_1
- 3: ldc #3 // String animal
- 5: astore_2
- 6: new #4 // class java/lang/StringBuilder
- 9: dup
- 10: invokespecial #5 // Method java/lang/StringBuilder."<
- init>":()V
- 13: aload_1
- 14: invokevirtual #6 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
- 17: aload_2
- 18: invokevirtual #6 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
- 21: invokevirtual #7 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
- 24: astore_3
- 25: getstatic #8 // Field java/lang/System.out:Ljava/io/PrintStream;
- 28: new #4 // class java/lang/StringBuilder
- 31: dup
- 32: invokespecial #5 // Method java/lang/StringBuilder."<init>":()V
- 35: ldc #9 // String str3:
- 37: invokevirtual #6 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
- 40: aload_3
- 41: invokevirtual #6 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
- 44: invokevirtual #7 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
- 47: invokevirtual #10 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
- 50: return
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。