易截截图软件、单文件、免安装、纯绿色、仅160KB

在Java中两种不同的对变量赋值方式

在Java中有两种不同的对变量赋值方式,一种是直接将一个值赋给变量。例如:
int a = 1;
String s = "abc";
Integer in = 125;
另外一种是创建一个对象,并将其赋给一个变量。例如:
String s = new String("abc")
Integer in = new Integer(125);
两种方式的不同之处在于:
第一种方式变量的值存储在堆栈中,当下一次定义一个新的变量,如果与前面的某个变量类型相同,并且值相同的情况下,不会产生新的值,而仅仅产生一个新的引用。比如:
int a1 = 1;
int a2 = 1;
String s1 = "abc";
String s2 = "abc";
上面的代码中,a1 与 a2 是对同一个变量值的引用。s1 与 s2 也是对同一个变量引用。这也是为什么通过"=="判断他们之间的关系时,会返回true的原因。
第二种情况下,每次调用new的时候,java会产生一个新的对象,并存放在堆中。不管前面是否存在内容相同的对象。java都会产生一个新的对象。例如。
String s1 = new String("abc");
String s2 = new String("abc");
在上面的代码中,s1和s2指向的是不同的对象,这也是为什么使用"=="判断他们时候返回false的原因。
需要注意的是,这里存在一个特殊情况,也就是当适应jdk5的自动拆箱机制的时候,例如
int x1 = new Integer(1);
int x2 = new Integer(1);
这时候,因为变量的类型是基本类型,Java实际执行的是:
int x1 = 1;
int x2 = 1;
也就是说并没有分别为x1,x2创建对象,x1 和 x2 指向的是同一个变量。
后来发生了一些小插曲, 是这样的,我调试了一下这段代码:
public class Test {
 
  public static void main(String[]args){
          Integer a = 128;
          Integer b = 128;
          String aa = "abc";
          String bb = "abc";
          String aaa = new String("abc");
          String bbb = new String("abc");
          System.out.println(a==b);
          System.out.println(aa==bb);
     &nb


相关文档:

解析Java类和对象的初始化过程

类的初始化和对象初始化是 JVM 管理的类型生命周期中非常重要的两个环节,Google 了一遍网络,有关类装载机制的文章倒是不少,然而类初始化和对象初始化的文章并不多,特别是从字节码和 JVM 层次来分析的文章更是鲜有所见。
本文主要对类和对象初始化全过程进行分析,通过一个实际问题引入,将源代码转换成 JVM 字节码后, ......

JAVA引用的误区以及应用

呵呵!还是先给大家出个题吧!
public class PreferenceTest {
public int testVar = 0;
/**
* create data: 2009-12-30</br> Just for me to test preference.
*
* @author XiangJie
* @param args
*
*/
public static void main(String[] args) {
// TODO Auto-generated method stu ......

从Java技术看网页游戏的未来

我们知道,网页游戏(Web game)简单讲是基于网站开发技术,以标准http协议为基础表现形式的无客户端或基于浏览器内核的微客户端游戏。网页游戏出现得很早,最早的网页游戏其实就是一些用HTML写的简单网页,界面简陋,交互手段贫乏,玩家与游戏的每次交互都会引起浏览器刷屏一次,因此一直难以登上大雅之堂。再者,很重要的 ......

Java Web中解决中文乱码

在MVC中配置编码filter可以解决中文乱码问题
--------------------------------------------------------------------------------------------------------------------------------------------------
在web.xml中加入如下filter代码:
    <!--Form content submit encoding filter start-->
& ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号