java中equals和==的区别
值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。
==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
==比较的是2个对象的地址,而equals比较的是2个对象的内容。
显然,当equals为true时,==不一定为true;
一、String中的equals和==
1、
public class TestString {
public static void main(String[] args) {
String s1 = "Monday";
String s2 = "Monday";
}
}
上面这段程序中,到底有几个对象呢?
来检测一下吧,稍微改动一下程序
public class TestString {
public static void main(String[] args) {
String s1 = "Monday";
String s2 = "Monday";
if (s1 == s2)
System.out.println("s1 == s2");
else
System.out.println("s1 != s2");
}
}
编译并运行程序,输出:s1 == s2
说明:s1 与 s2 引用同一个 String 对象 -- "Monday"!
2.
再稍微改动一下程序,会有更奇怪的发现:
public class TestString {
public static void main(String[] args) {
String s1 = "Monday";
String s2 = new String("Monday");
if (s1 == s2)
System.out.println("s1 == s2");
else
&
相关文档:
类的初始化和对象初始化是 JVM 管理的类型生命周期中非常重要的两个环节,Google 了一遍网络,有关类装载机制的文章倒是不少,然而类初始化和对象初始化的文章并不多,特别是从字节码和 JVM 层次来分析的文章更是鲜有所见。
本文主要对类和对象初始化全过程进行分析,通过一个实际问题引入,将源代码转换成 JVM 字节码后, ......
try{
URL url=new URL("http://baidu.com");
BufferedReader br=new BufferedReader(new InputStreamReader(url.openStream()));
String s="";
StringBuffer sb=new StringBuffer("");
while((s=br.readLine())!=null) {   ......
到http://java.sun.com/javase/downloads/index.jsp下载 JRE 1.6,目前(2008年3月5日)的版本是Java SE Runtime Environment 6 Update 5.
注意:要下载的是Linux self-extracting file而非Linux RPM in self-extracting file
下面执行的命令是在root特权帐户下执行的
下载到的文件是jre-6u5-linux-i586.bin
步骤1: mv ......
以下是实现过程,仅供参考:
JAVA_HOME是 C:\jdk1.6.0_02
Path是 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
CLASSPATH是 .;%JAVA_HOME%lib;%JAVA_HOME%lib\tools.jar
用 Java
通过串口发短信其实很简单,因为有现成的类库供我们使用。有底层的类库,也有封装好一点的类库,下面我介绍一下在 Win32 平台下发送短信的方法。
......