java操作符重载_Java基础知识-操作符重载

java操作符重载

String str1 = "hello";

String str2 = str1 + " world";

System.out.println(str2);

对于java的String对象+运算,大学老师的解释一直是操作符重载,也就默认了,突然有兴趣自己摸索一下。

找到对应的class文件,运行javap -c *.class

函数main的主要代码如下:

public static void main(java.lang.String[]);

Code:

0: ldc #16 // String hello

2: astore_1

3: new #18 // class java/lang/StringBuilder

6: dup

7: aload_1

8: invokestatic #20 // Method java/lang/String.valueOf:(

Ljava/lang/Object;)Ljava/lang/String;

11: invokespecial #26 // Method java/lang/StringBuilder."<

init>":(Ljava/lang/String;)V

14: ldc #29 // String world

16: invokevirtual #31 // Method java/lang/StringBuilder.ap

pend:(Ljava/lang/String;)Ljava/lang/StringBuilder;

19: invokevirtual #35 // Method java/lang/StringBuilder.to

String:()Ljava/lang/String;

22: astore_2

23: getstatic #39 // Field java/lang/System.out:Ljava/

io/PrintStream;

26: aload_2

27: invokevirtual #45 // Method java/io/PrintStream.printl

n:(Ljava/lang/String;)V

30: return

可以看到编译后的代码实际创建了StringBuilder,而+操作符也被转成了StringBuilder的append,所以一种说法是java实际并不是把操作符重载了(ps:因为其它操作符没有类似的操作),而是操作符的语法糖而已。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值