static String s1 = "a"; static String s2 = "a"; System.out.println(s1 == s2);
http://javapapers.com/core-java/address-of-a-java-object/
但地址好像不一样。我错过了什么?
import sun.misc.Unsafe; import java.lang.reflect.Field; public class SomeClass { static String s1 = "a"; static String s2 = "a"; public static void main (String args[]) throws Exception { System.out.println(s1 == s2); //true Unsafe unsafe = getUnsafeInstance(); Field s1Field = SomeClass.class.getDeclaredField("s1"); System.out.println(unsafe.staticFieldOffset(s1Field)); //600 Field s2Field = SomeClass.class.getDeclaredField("s2"); System.out.println(unsafe.staticFieldOffset(s2Field)); //604 } private static Unsafe getUnsafeInstance() throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException { Field theUnsafeInstance = Unsafe.class.getDeclaredField("theUnsafe"); theUnsafeInstance.setAccessible(true); return (Unsafe) theUnsafeInstance.get(Unsafe.class); } }
你没有错过任何东西。不安全库正在报告实际发生的情况。
字节码:
static {};
Code:
0: ldc #11; //String a
2: putstatic #13; //Field s1:Ljava/lang/String;
5: ldc #11; //String a
7: putstatic #15; //Field s2:Ljava/lang/String;
10: return
请注意,这两个字符串都放在内存中的不同位置,即13和15。
变量存储在内存中的位置(需要单独的地址)和新对象是否放在堆上是有区别的。在这种情况下,它为两个变量分配了两个单独的地址,但不需要创建新的String对象,因为它识别相同的String文字。因此这两个变量都引用了相同的字符串。
我检查了我的php.ini(我正在运行CentOS): 我在一个论坛上读到我必须安装SendMail。所以我安装了它。现在带有mail()函数的站点不再加载了。所以我删除了sendmail,mail()函数再次返回true,但不发送邮件。 你知道吗?
问题内容: 我的交互式控制台的简要记录: 到底为什么呢? 编辑: 为了对比起见,请考虑运算符。 这使得有很大的意义,因为虽然和都意味着同样的事,作为一个条件语句,他们真的是不一样的东西。 再次编辑: 更有趣的后果: 问题答案: 因为Python中的Boolean是整数的子类型。从文档中: 布尔值是两个常量对象False和True。它们用于表示真值(尽管其他值也可以视为假或真)。在数字上下文中(例如
我刚刚开始学习Javascript,现在只是学习一些基本的东西。但问题是我真的不明白如果这个switch语句如何返回 null null 还有人看到问题了吗? 如有任何帮助,我们将不胜感激!
问题内容: 当我尝试从Java代码中删除tomcat服务器conf / Catalina / localhost中存在的文件时,file.delete()始终返回false。但是,如果我通过file.exists()函数检查文件,它将返回true。我没有任何例外。请帮助我们为什么会这样。有什么解决方案? 问题答案: 当我尝试从Java代码中删除tomcat服务器conf / Catalina /
问题内容: 我是AngularJS的新手,所以对于我的问题可能有一个简单的解决方案。我一直在处理这种形式。我有两个输入- 一个用于门的数量,一个用于窗户的数量。然后,我要显示几个div,如果它们满足一定数量的门窗总数。当我在输入中输入数字时,ng-show解析为“ true”。但是该元素上仍然具有“ ng-hide”类,因此仍将其隐藏。 这是我的代码示例: 这是我输入3门和4窗口时的输出: 问题答
这似乎是一个简单的解决方案,但似乎设置 似乎还设置了物品从底部堆叠 我试图将设置为false,但这并没有做任何事情,什么是颠倒项目顺序但仍从顶部填充的最佳方法?我应该改用自定义比较器类吗?我希望这比创建另一个类更容易。