java 虚拟机 体系结构

 * @author 12091
 *
 */
//java虚拟机的体系结构 :堆(heap) 、方法区(method Area)、本地方法栈(native method stack)、程序计数器(program counter register);
//堆:存放动态new 出来的 对象 、数组;而且 数据 不能共享;
//方法区:存放静态 变量,静态方法 、普通方法、常量、 字符串常量(严格说 放在 常量池 堆和栈都有)通俗的讲 就是 保存类的模板;
//本地方法栈:存放 的是 对象的引用,局部变量;#数据共享
//程序计数器:速度最快且空间最小的一块区域,由编译器分配,我们对此没有直接的控制权;
public class Equalorother {
	static String s1="java";
	public static void main(String[] args){
		
		
		 String s2=new String("java");
		//s2="java"+"ass";
		System.out.println(s1==s2);
		System.out.println(s1.equals(s2));
		String s3="java";
		String s4="java";
		String s5=s4+s3;
		String s6="javajava";
		System.out.println(s3==s4);//这里为什么相等呢 ?因为 s3是存在常量池中的,当s4定义时,此时将s4放入栈中,然后在常量池中寻找是否有"java"字符串,若有就指向他
		s3="ss";//而当s3被重新赋值的时候,你会想s4是不是也会被改变呢?答案是:不会。因为同样多的道理,s3被赋值时,刄会在常量池中寻找 "ss",若有指向他,若没有,开辟出内存给他,
				//且使得s3指向他。
		System.out.println(s4+s3);
		System.out.println(s6==s5);//s5是指向 堆的 s6指向的是栈 显然 不相等。
		//equals可以判断对象是否相等 下面 相等
		System.out.println(s6.equals(s5));
	} 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值