关于内存方面总结

①Java数据类型:
 基本数据类型:4个整数类型:byte、short、int、long
                    2个浮点类型:float、double
              1个字符类型:char
 引用数据类型:String s; s=new String("Hello world");  Mouse m;

②基本数据类型在内存中:只占1块内存。引用数据类型在内存中:占2块内存

③堆内存装的是所有new出来的东西。堆内存比较大,用来动态分配内存用的。

④例子:
String s;  //声明了一个String类型的应用变量,但并没有让它指向一个对象
s=new String("Helllo world");  //使用new语句创建一个String类型的对象,并让s指向它,以后可以通过s完成对其操作

⑤例子:
Dog d=new Dog();
实际上new出来的Dog在堆内存里面,变量d是对Dog这个对象的引用,d可能在堆内存里面,也可能在其它内存里面;


*  类是一个人静态的概念,他是放在代码区里面
*  对象是new出来的,位于堆内存中,只有在运行期间,才知道内存要分配多大,所以把对象放在堆内存中,堆内存比较大;如果对象不用了     ,垃圾收集器收回去;
*  类的每个成员变量在不同的对象都有不同的值(除了静态变量),而方法只有一份,执行的时候才占用内存,方法不调用就是一堆代码


问题:为什么对象位于堆内存?
     因为堆内存是用来动态分配内存的,只有在运行的过程中,我们才new一个对象放在堆内存中。运行过程是指输出:java  HelloWorld命       令 ,而不是javac HelloWorld.java编译命令。

⑧:局部变量:方法或语句块内部定义的变量
    成员变量:方法外部、内的内部定义的变量
 

C c1=new C();
C c2=new C();
c1、c2都是方法里定义的变量,为局部变量,存在:  栈stack


  成员变量、对象都存在:   堆heap
  局部变量存在:           栈stack
  static变量和字符串常量存放在:  数据块
  代码存放在:     代码块

①①
   使用new+构造方法,创建一个新的对象
   构造方法是定义在Java类的一个用来初始化对象的函数
   构造方法与类同名且没有返回值

①②
方法调用:值传递
int date=9 ;
test.change(date)
public void change(int i)
{
 i=1234 
}
通过change()是改变不了date最初的值的。
只有通过setDate()方法才可改变

①③
方法一旦执行完毕,由方法分配的局部变量的内存将自动消失;Dog d=new Dog();这个局部变量不是马上就消失,而是待会由垃圾收集器回收消失

①④
public Dog(String color,int leg){
 this.color=color;
 this.leg=leg;
}
形参和局部变量同等对待,放在栈内存中

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值