相关疑难解决方法(0)

将字符串与==进行比较,这些字符串在Java中声明为final

我有一个关于Java中的字符串的简单问题.以下简单代码段仅连接两个字符串,然后将它们与之进行比较==.

String str1="str";
String str2="ing";
String concat=str1+str2;

System.out.println(concat=="string");
Run Code Online (Sandbox Code Playgroud)

比较表达式concat=="string"返回false那么明显(I明白之间的差值equals()==).


当这两个字符串被声明时final,

final String str1="str";
final String str2="ing";
String concat=str1+str2;

System.out.println(concat=="string");
Run Code Online (Sandbox Code Playgroud)

比较表达式concat=="string",在这种情况下返回true.为什么会final有所作为?它是否必须与实习生池做某事或我只是被误导?

java string final

217
推荐指数
4
解决办法
1万
查看次数

如何在Java 9中实现String连接?

正如JEP 280中所写:

更改String生成的static -concatenation字节码序列,javac以使用invokedynamic对JDK库函数的调用.这将使未来的String串联优化成为可能,而无需进一步更改所设置的字节码javac.

在这里,我想了解invokedynamic调用的用途以及字节码串联的不同之处是invokedynamic什么?

java string string-concatenation invokedynamic java-9

108
推荐指数
3
解决办法
8315
查看次数