在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
相关文档:
一:准备 www.savarese.org download
1. rocksaw-1.0.0-src.tar.gz
2. vserv-tcpip-0.9.2-src.tar.gz
二:编译源文件得到jar包 使用Ant
1. build vserv-tcpip-0.9.2-src
在vserv-tcpip-0.9.2目录下面建一个tests目录,然后在cmd窗口下进入 ......
看过.NET基础的朋友可能对这个装箱和拆箱的概念并不陌生。首先,我们必须明确一点,在Java中,有两种截然不同的数据类型:值类型和引用类
型。值类型的数据不是对象,因而所占的内存和资源都相对较少,但是不能作为对象调用其toString()、hashCode()、
getClass()、equals()等等方法,也不能被直接加入到集合中;引用类型 ......
public class Base64 {
//码表
static private char[] alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
.toCharArray();
&nb ......
本文原址:http://www.hbzxr.com/web/36/2027736-1138928.html
java this和super关键字 有什么作用成员函数中定义了和成员变量中相同的变量时,引用成员变量要用this. 构造函数中调用同一个类的其他构造函数时用this 子类中覆盖了于父类成员变量或成员函数时,在子类中调用父类的变量或函数要用super 子类的构造函 ......
package test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Test {
public static void main(String arg[]) {
String fileName ......