更新時間:2022-09-21 08:58:08 來源:動力節點 瀏覽1324次
java操作符重載是什么?動力節點小編來告訴大家。
String str1 = "hello";
String str2 = str1 + " world";
System.out.println(str2);
找到對應的class文件,運行javap -c *.class
函數main的主要代碼如下:
ldc #16 // String hello
astore_1
new #18 // class java/lang/StringBuilder
dup
aload_1
invokestatic #20 // Method java/lang/String.valueOf:(
Ljava/lang/Object;)Ljava/lang/String;
invokespecial #26 // Method java/lang/StringBuilder."<
init>":(Ljava/lang/String;)V
ldc #29 // String world
invokevirtual #31 // Method java/lang/StringBuilder.ap
pend:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual #35 // Method java/lang/StringBuilder.to
String:()Ljava/lang/String;
astore_2
getstatic #39 // Field java/lang/System.out:Ljava/
io/PrintStream;
aload_2
invokevirtual #45 // Method java/io/PrintStream.printl
n:(Ljava/lang/String;)V
return
可以看到編譯后的代碼實際創建了StringBuilder,而+操作符也被轉成了StringBuilder的append,所以一種說法是java實際并不是把操作符重載了(ps:因為其它操作符沒有類似的操作),而是操作符的語法而已。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習