2,对象与内存控制
2,对象与内存控制
761218914 发表于3年前
2,对象与内存控制
  • 发表于 3年前
  • 阅读 34
  • 收藏 1
  • 点赞 0
  • 评论 0

移动开发云端新模式探索实践 >>>   

摘要: 对象与内存控制

由于jvm的垃圾回收机制由一条后台线程完成。如果不考虑内存管理,会出现以下问题:

1,不断分配内存使得系统的内存减少,从而降低程序运行的性能,

2,大量已经分配的内存的回收使得垃圾回收负担加重,降低程序的运行的性能。

Java中的变量:

1,变量可以分为成员变量和局部变量。

        局部变量分为,形参(方法签名中使用的局部变量),方法内的局部变量,代码块内的局部变量。

        类体内定义的变量成为成员变量,如果由static修饰,则称之为静态变量或者类变量。如果没有修饰那么就是非静态变量或者实例变量。

        同一个jvm中,每一个类只有一个class对象,但是可以创建多个java对象,因此类对象只需要创建一次,但是程序需要几个实例,那么实例变量就需要几块内存空间。

例变量的初始化时机:程序会先执行非静态代码块然后再执行构造函数。假如非静态代码块中有对成员函数赋值的操作,那么赋值操作的结果和程序的源码的顺序有关。

public static void main(String[] args) {
  Cat catt=new Cat("kobe");
  System.out.println(catt);
   }
  public static class Cat{
  String name;
  double weight=2.3;
  public Cat(String name){
   System.out.println("执行构造器");
   this.name=name;
  }
  {
   System.out.println("非晶态代码狂");
   weight=2.0;
  }
    public String toString(){
   return name+weight;
  }
   }

非晶态代码狂
执行构造器
kobe2.0

public static void main(String[] args) {

  Cat catt=new Cat("kobe");

  System.out.println(catt);
 }
 public static class Cat{
  String name;
  public Cat(String name){
   System.out.println("执行构造器");
   this.name=name;
  }
  {
   System.out.println("非晶态代码狂");
   weight=2.0;
  }
  double weight=2.3;
  public String toString(){
   return name+weight;
  }  
 }

非晶态代码狂
执行构造器
kobe2.3
 类变量的初始化。1,定义类变量的时候进行初始化。2,静态初始化块中对类变量指定初始值。这两种方式得执行顺序和它在源代码中的执行顺序相同。

关于父类构造器;

创建任何java对象得时候,总是先依次调用每个父类的非静态初始化块,父类构造器(总是从object开始),最后才调用本类的非静态代码块。

(this()和super()只能在构造器中使用,而且他们都必须作为构造器的第一行代码)

 

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 5
博文 103
码字总数 47263
×
761218914
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: