详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中详解的内存结构与重载