黑马程序员-java面向对象的一些问题
2013-11-10 16:24
423 查看
-------
android培训、java培训、期待与您交流! ----------
初学java的面向对象,遇到些许问题,为了搞清楚一些引用问题,首先学会画内存分配图。
在java程序编译运行的过程中,内存分为三块区域:栈内存,对内存,共享区。栈内存中存放的是程序按照顺序执行时,加载的类名,全局变量,方法名,变量指向堆内存中的实体对象。堆内存中存放的是实体。共享区内存放的是类加载时的静态变量、静态方法、成员方法体。
static:静态成员变量、方法。这些变量、方法是随着类被加载时,在共享区被创建,所处区域和对象的不一样。这些东西被创建先于对象,被此类的所有对象所共享。被调用时,只需要用 类名.成员名 的格式即可,同时,也可以通过创建类的对象,然后通过 对象名.成员名 的格式也行。
此段代码运行结果为 "我是SS"。在这里,我们没有实例化B类,但是因为SS方法为static类型的,不需要创建实例也可以直接调用。其运行结果同以下对象调用的方式:
构造代码块:在类中光秃秃的一段代码{代码}。只要这个类被实例化,那么就会先执行构造代码块,再执行构造函数。
静态代码块:在类中 static{代码} 。当类被加载,静态代码块就被执行。
上面这段代码执行结果是 CCCBBBAAA 。由此我们可以得到结论,在同时有静态代码块,构造代码块,构造函数的类被实例化时,内存中运行的顺序为 加载类->运行静态代码块->构造代码块->构造函数。
------- android培训、java培训、期待与您交流! ----------
android培训、java培训、期待与您交流! ----------
初学java的面向对象,遇到些许问题,为了搞清楚一些引用问题,首先学会画内存分配图。
在java程序编译运行的过程中,内存分为三块区域:栈内存,对内存,共享区。栈内存中存放的是程序按照顺序执行时,加载的类名,全局变量,方法名,变量指向堆内存中的实体对象。堆内存中存放的是实体。共享区内存放的是类加载时的静态变量、静态方法、成员方法体。
static:静态成员变量、方法。这些变量、方法是随着类被加载时,在共享区被创建,所处区域和对象的不一样。这些东西被创建先于对象,被此类的所有对象所共享。被调用时,只需要用 类名.成员名 的格式即可,同时,也可以通过创建类的对象,然后通过 对象名.成员名 的格式也行。
public class A{ public void static main(String [] args){ B.SS(); } } class B{ public static void SS(){ System.out.println("我是SS"); } }
此段代码运行结果为 "我是SS"。在这里,我们没有实例化B类,但是因为SS方法为static类型的,不需要创建实例也可以直接调用。其运行结果同以下对象调用的方式:
public class A{ public void static main(String [] args){ B b=new B(); b.SS(); } } class B{ public static void SS(){ System.out.println("我是SS"); } }
构造代码块:在类中光秃秃的一段代码{代码}。只要这个类被实例化,那么就会先执行构造代码块,再执行构造函数。
静态代码块:在类中 static{代码} 。当类被加载,静态代码块就被执行。
public class A{ public void static main(String [] args){ B b=new B(); } } class B{ public void B(){ System.out.print("AAA"); } static{ System.out.print("BBB"); } { System.out.print("CCC"); } }
上面这段代码执行结果是 CCCBBBAAA 。由此我们可以得到结论,在同时有静态代码块,构造代码块,构造函数的类被实例化时,内存中运行的顺序为 加载类->运行静态代码块->构造代码块->构造函数。
------- android培训、java培训、期待与您交流! ----------
相关文章推荐
- 黑马程序员-java面向对象的一些问题
- 黑马程序员---java多线程的一些常见问题
- 黑马程序员——Java面向对象的一些知识点
- java 面向对象的一些问题
- 黑马程序员——java面向对象的常见问题
- 黑马程序员——java编程那些事儿____java中必须理解的一些问题
- 黑马程序员_java多线程安全问题
- 黑马程序员--Java面向对象——IO流(字符流缓冲区)
- 黑马程序员——java面向对象(一)
- Java:关于eclipse的一些问题:
- 黑马程序员_Java基础_面向对象
- 伪分布式安装遇到的一些问题之JAVA安装!!!
- 黑马程序员_Java语言_面向对象_
- 黑马程序员_Java语言_面向对象_多态
- 黑马程序员--Java面向对象——IO流体系
- 黑马程序员_JAVA_面向对象(四)
- 黑马程序员——Java 面向对象(下)
- 黑马程序员--java面向对象
- 黑马程序员——Java 面向对象_包
- 黑马程序员——Java基础面向对象