Java编程思想--一切皆是对象

String a;这里创建的只是引用,并不是对象

String a='asdf';初始化,但没有创建对象

String a=new String("asdf");创建对象,引用a,常量adf

例1

package javastatic;

public class EveryIsObject {
	private static final String MESSAGE = "taobao";

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str1 = new String("taobao"); // 创建一个对象welcome,给利用单词welcome初始化
		String str2 = new String("taobao"); // 创建一个对象welcome,给利用单词welcome初始化
		String str3 = str1; // 创建一个对象,并利用对象str1的内存地址赋值
		System.out.println(str1 == str2);
		System.out.println(str1 == str3);
		//str1,str2表示的是两个对象welcome的两个引用,它们在栈中的地址肯定不一样。
		String a = "tao" + "bao";
		String b = "tao";
		String c = "bao";
		String d="taobao";
		System.out.println(a == MESSAGE);
		System.out.println((b + c) == MESSAGE);
		System.out.println(d==MESSAGE);
		System.out.println(str1==d);
	}
}

结果:

false     str1和str2是两个不同的引用,它们地址不同true
true       内存地址的赋值形式
false     不同的引用
true       代表的地址相同
false

内存分为四个部分:heap(堆)\stack(栈)\code segment\data segmet\
其中堆中存放的是NEW 出来的对象  而栈中存放的是局部变量  而静态变量和字符串常量放在data segment中  剩下的就是代码了 ,存放在CODE SEGMENT中

存储地方:

堆栈:位于RAM随机访问存储器中,创建并非是引用的“自动变量”,如int i=2;

堆:一种通用的内存池,位于RAM区,用于存放所有的Java对象

常量存储:常量值通常直接存放在程序代码内部。如“taobao”


例2

String string1 = "i love you";
String string2 = "i love you";
//输出 true
System.out.println(string1 == string2); 
      
String string3 = new String("i love you");
String string4 = new String("i love you");
//输出 false
System.out.println(string3 == string4);

分析:

String string1 = "i love you";

String string2 = "i love you";

在栈中分配两个空间,

其名为string1和string2 

其值为两个相同的同时指向"i love you"的地址,"i love you"存放在data segment中只有一个。

String string3 = new String("i love you");

String string4 = new String("i love you");

在栈中分配两个空间,

其名为string3和string4

string3指向堆中为new String("i love you");(对象一)

新分配的空间,其值为指向这里的地址

string4指向堆中为new String("i love you")(对象二)

分配的空间;这是另一片空间,其值为指向这里的地址。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值