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:因为其它操作符没有类似的操作),而是操作符的语法糖而已。

java操作符重载_Java基础知识-操作符重载相关推荐

  1. 方法的重载与重写_java基础知识之重载和重写

    重载(Overloading)和重写(Overriding)是Java中两个比较重要的概念 重载 简单说,就是函数或者方法有同样的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间, ...

  2. java 计算反码_java基础知识-原码、反码、补码、运算符

    一.原码.反码.补码 原码 一个数转化成二进制. 用最高位来表示正负,最高位为0表示正数,最高位为1表示负数. 例如: short i=5: 因为在java里short占2个字节转化成二进制就是 00 ...

  3. java class 字符串_java基础知识四 math类 字符 字符串 控制台输入输出 StringBuilder与StringBuffer...

    第四章:数学函数.字符和字符串 math类 Math是final类:在java.lang.Math中,所有数学函数都是静态方法 在一个java程序中,java.lang包中的所有类是隐式导入的. 三角 ...

  4. java表达式语句_Java基础知识笔记第三章:运算符表达式语句

    算术运算符与表达式 操作符描述例子 + 加法 - 相加运算符两侧的值 A + B 等于 30 - 减法 - 左操作数减去右操作数 A – B 等于 -10 * 乘法 - 相乘操作符两侧的值 A * B ...

  5. java e次方_java基础知识

    一.java的简介 1.后台开发语言.跨平台,安全性高.面向对象 二.java基础 1.类是java中最小编写代码的单元 2.语句要分号结束 3.括号成对出现 4.运行原理--从上往下 三.注释:代码 ...

  6. java.util 常见_Java基础知识-java.util.concurrent包下常见类的使用

    一,Condition 一个场景,两个线程数数,同时启动两个线程,线程A数1.2.3,然后线程B数4.5.6,最后线程A数7.8.9,程序结束,这涉及到线程之间的通信. public classCon ...

  7. java.io.file()_JAVA基础知识之IO-File类

    File类介绍 File是java.io包下面的一个类,代表与平台无关的文件或者目录.JAVA中,无论文件还是目录,都可以看作File类的一个对象.File类能对文件或目录新建,删除,获取属性等操作, ...

  8. java 查看类_JAVA基础知识之JVM-——通过反射查看类信息

    Class实例 当类被加载之后,JVM中就会生成一个Class实例,通过这个实例就可以访问JVM中的这个类.有三种方式可以获取Class对象 使用Class的静态方法forName(完整包名) 调用类 ...

  9. java 集合数据类型_Java基础知识(数据类型和集合)

    一.数据类型 包装类型 包装类型是对基本数据类型不足之处的补充. 基本数据类型的传递方式是值传递,而包装类型是引用传递,同时提供了很多数据类型间转换的方法. Java1.5 以后可以自动装箱和拆箱 二 ...

最新文章

  1. 德勤:2018年科技、传媒和电信行业未来趋势预测
  2. struts2中一个表单中提交多个请求(动态调用方法)
  3. linux下延时1ms用什么函数,Linux下1ms分辨率定时器推荐方式
  4. atoi()函数和stoi()函数
  5. 如何安装老版本Eclipse汉化——以2020-06为例
  6. canvas绘制出货单
  7. iOS弱引用表 SideTable weak_table_t weak_entry_t
  8. php+mysql获取7天、30天的统计数据,没有数值的补充0 By勤勤学长
  9. Android多开分身 v7.2 破解永久VIP付费版
  10. 区块链技术的安全价值与局限性解析
  11. 万国觉醒迁服务器显示该王国还未开放,万国觉醒怎么迁城到联盟其他王国
  12. 安云网络-高防服务器租用的稳定性
  13. 图形化文本编辑器_使用图形转换器从知识图生成文本
  14. 【zotero】在zotero中通过拖拽导入PDF文件时并没有识别到文件
  15. OA系统选型时需注意的一些细节
  16. 信息系统基本知识(二)(兼顾第四版教程)
  17. 【自然语言处理】【词嵌入】dLCE:将词汇对比集成到近义反义的词嵌入中
  18. 关于UCP和TCP的形象理解
  19. 07 Android 植物人大战僵尸-修复放置卡片重叠Bug
  20. 将时谐电磁场引入工程电磁场的意义_2018年电子科技大学电子工程学院813电磁场与电磁波考研核心题库...

热门文章

  1. 回答这份秒杀攻略,99.9%的面试官会给你比大拇指
  2. 数据中台专栏(六):企业数据指标的那些事儿
  3. 理解C语言中的空指针和野指针
  4. 用vue3+pixijs复刻童年记忆里的游戏-猎鸭季节
  5. WNS2-1.25-YQ型 2吨燃油燃气蒸汽锅炉的外观
  6. C++将域名转换成ip地址
  7. parse_args()详解
  8. RocketMQ Dashboard的下载与启动
  9. Linux用户管理命令
  10. 程序员必知的缓存套图