这可能是重复的,但找不到我需要的解释。有人可以向我解释一下吗?
如果我是对的:
String s1 = "a";
String s2 = "a";
Run Code Online (Sandbox Code Playgroud)
s1和s2都会指向字符串池中的同一个地址,并且只有一个值为“a”的对象。
现在,如果我这样做:
String s1 = "a"; //line A
s1 = s1.concat("b"); //line B; I don't understand what's happening here in terms of references
String s2 = "ab";//line C
System.out.println(s1 == s2); //false
Run Code Online (Sandbox Code Playgroud)
为什么我得到false?
我的看法(可能是错误的)是这样的:
after line Aa->在字符串池中创建对象(值为),由 引用s1;
after line B-> 在字符串池中创建具有值的对象b(没有引用),然后ab在字符串池中创建具有值的新对象(由现有的引用s1)
after line C->(这可能是我错了)由于具有值的现有对象ab(由现有的引用)s1) 使用 (或 +) 创建concat(),JVM 不会重用该引用指向的对象 …
正如标题所说,我不知道如何解决这个问题。我读过这个问题,但那是在 2018 年,我不太熟悉所有这些库和依赖项及其工作原理。但从我从 Android Studio 声明的依赖关系来看,这就是我得到的:
我想向 FAB 添加某种“附加文档”图标/图像。我尝试通过添加New Vector资源来做到这一点,但图像没有出现在我的可绘制文件夹中。如何向我的项目添加漂亮的图标/图像,并将其设置为 FAB?
这是 XML:
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:icon="@drawable/attache_file">
</com.google.android.material.floatingactionbutton.FloatingActionButton>
Run Code Online (Sandbox Code Playgroud) xml android floating-action-button material-components-android
android ×1
immutability ×1
java ×1
material-components-android ×1
string ×1
string-pool ×1
xml ×1