JAVA中详解的内存结构与重载

  介绍

详JAVA中解的内存结构与重载?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

一。对象在JVM的内存结构

JAVA内存管理由JVM来管理。
1)堆,所有新出来的对象(包括成员变量)
2)栈,所有局部变量(包括方法的参数)
3)方法区,类字节码文件(包括方法,静态数据)

1。引用变量指向空时,会发生空指针异常

public  class  student  {   int 年龄;   String 名称;   String  public 学生(int 年龄;名称){   this.age=年龄;   this.name=名称;   }   public  static  void  main (String [], args), {//(类)引用类型,引用变量创建对象(新出来的类中的构造方法)   student  s=, new 学生(18,“刘永超“);   s=零;   System.out.println(年代);   System.out.println (s.age);//发生异常,因为引用变量指向null   }   }

结果:. lang。NullPointerException 2。引用类型划等号和基本类型划等号的区别:一。引用类型划等号:

1…指向同一个对象

2。通过一个引用的修改对象中的数据会影响另一个对象中的数据

二。基本类型划等号:

1。赋值。

2。对一个变量的修改不会影响到另一个变量(例如int类型)

引用变量画”“和基本类型画”“区别:

引用类型画“==?

1。判断两个引用变量(引用地址)是否指向同一对象

2。基本类型画等号:判断两边的值是否相等

代码演示:

public  class  student2  {   int 年龄;   String 名称;   public 学生二(int  String  s) {   年龄=;   name=s;   }      public  static  void  main (String [], args), {   student2  s=new 学生二(17日“liu");   student2 党卫军=s;   s.age=20;   ss.age=28;   System.out.println (s.age);//s=ss 判断两个引用对象(引用变量)是否指指向同一对象   System.out.println (s==ss);   }   }

结果为s。年龄=28 true;

成员变量与局部变量的生命周期:

<李>

成员变量:创建对象开始到被GC垃圾回收器处理掉为止。

<李>

局部变量从调用方法到方法就结束。

,二。方法的重载

1)。发生在同一类,方法名相同,参数列表类型和数量不同
2)。方法的重载,和返回值没有关系
3)。编译器在在编译时根据方法的签名自动绑定调用的方法

注:方法的签名:方法名+参数列表

代码的实现:

public  class  overloadDemo  {   public  void 测试(){   System.out.println (“lala");   }      public  void 测试(int ) {   System.out.println (“heihei");   }      public  void 测试(String  s) {   System.out.println (“xixi");   }      public  void 测试(int  String  s) {   System.out.println (“caocao");   }//public  int 测试(){不是方法的重载,和返回值没有关系//return  1;//}//构造方法   public  overloadDemo  () {   System.out.println(“无参构造“);   }      public  overloadDemo (int ) {   System.out.println(“有参构造“);   }      public  static  void  main (String [], args), {   overloadDemo 负荷=new  overloadDemo ();   load.test (5);   load.test (8,“liu");      }   }

如上代码,load.test(5)将调用公共空白测试(int) {};

load.test(8,“刘”)将调用公共空白测试(int,字符串s) {}。

三。这的使用:

1.这关键字在方法中,用于指向调用该方法的当前对象,简单的说,那个对象调用方法,这指的就是那个对象,严格来讲,在方法中需要通过这关键字指明当前对象。
2。在构造方法中,用来初始化成员变量的参数一般和成员变量取相同的名字,这样有利于代码的可读性,但次数必须通过这关键字来区别成员变量和参数(在这里不能省略)
3.这就是指当前对象。

的用法:

1.。成员变量——访问当前对象成员变量
2.。方法名——访问当前对象的方法(一般不用)
3.() - - - - - - - - - - - -调用构造方法(必须写在此构造方法中的第一行)

代码演示:

public  class  thisDemo  {   int 年龄;   public  void 测试(){   System.out.println (this.age);//此处可以省略这关键字   }      public  void 测试(int 年龄){   System.out.println(“这是带有int类的测试方法重载“);   this.test();//此处也可以省略,编译器会自己默认   }      public  thisDemo () {//(20);   这(19日“liuyongcaho");//调用当前对象时int ,字符串类型的构造方法   this.age=18;   System.out.println(“这是一个无参构造方法“);   }      public  thisDemo (int 年龄){   这();   System.out.println(年龄);   }      String  public  thisDemo (int 年龄;名称){   System.out.println(年龄+“,,,“+名字);   }         public  static  void  main (String [], args), {   thisDemo  pdd=new  thisDemo ();   pdd.test (9);   }   }

JAVA中详解的内存结构与重载