Java--- 内存分析简述

    这里简单说一下,一家之言。

    在内存区域存在一个堆区和一个栈区(后进先出规则),用于存放不同的信息。

        栈 --->连续的空间,自动分配,存放局部变量,通过new关键字实例化的对象放在这里面;

       堆 --->不连续的空间,我理解大概分为两个部分,一个部分叫方法区,存放1.类信息 2.static变量(类变量) 3.常量池(Final常量,String字符串常量);另一部分放按照类信息建立的对象(以类的形式组织代码,以对象的形式封装数据),栈里面的局部变量通过操作堆里面对象地址(4个位,如2233aabb)来操作这些对象。

    举个例子

/**
 * 内存分析示例
 * @author Administrator
 *
 */
public class Student1 {
	//一般属性
	private int id;
	private String name;
	
	//静态属性
	private static int age;
	
	//常量
	private final int MAX_AGE = 15; 
	
	//一般方法
	public void speak(String name){
		this.name = name;
		System.out.println(name+"say hello");
	}
	
	//静态方法
	public static void run(){
		System.out.println("run");
	}
	public static void main(String[] args) {
		//建立局部变量stu,并初始化
		Student1 stu = new Student1();
		//调用一般方法
		stu.speak("小明");
		//调用静态方法
		run();
		System.out.println(stu.id);
		System.out.println(stu.MAX_AGE);
	}
}

还有一些其他的问题,以后再补充

    1)为什么String类要被放在常量池

        String被final修饰,是不可变字符序列,对String重新赋值实际上是创建一个新的对象,原对象保持不变,所以放在常量池,因为对应这个地址的值是不变的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值