达内课程-面向对象之对象创建过程和java数据传递
2017-08-02 21:46
337 查看
对象创建过程
class A{ int v1 = 1; static int v2 = 2; static{ ...... } public A(){ ...... } }
class B extends A{ int v3 = 3; static int v4 = 4; static{ ...... } public B(){ ...... } }
创建B实例
B b = new B();
第一次用到A类和B类
加载父类(A),为父类静态变量分配内存(v2分配内存,但未执行赋值运算,默认值是0)
加载子类(B),为子类静态变量分配内存(v4分配内存,但未执行赋值运算,默认值是0)
执行父类静态变量赋值运算和静态初始化块(v2赋值和初始化块,按代码先后顺序执行)
执行子类静态变量赋值运算和静态初始化块(v4赋值和初始化块,按代码先后顺序执行)
再次用到A类和B类
创建父类对象,为父类非静态变量分配内存(v1)
创建子类对象,为子类非静态变量分配内存(v3)
执行父类非静态变量赋值运算
执行父类构造方法
执行子类非静态变量赋值运算
执行子类构造方法
程序验证
public class Test { public static void main(String[] args){ new B(); } } class A{ int v1 = 1; static int v2 = 2; static{ System.out.println("A静态初始化块"); } public A(){ System.out.println("A构造方法"); } } class B extends A{ int v3 = 3; static int v4 = 4; static{ System.out.println("B静态初始化块"); } public B(){ System.out.println("B构造方法"); } }
java的数据传递
传值基本类型变量的值,是值本身
引用类型变量的值,是内存地址
基本类型
public class Test { public static void main(String[] args){ int a = 10; f(a); System.out.println(a);//输出10 } private static void f(int a) { a = 100; } }
引用类型
public class Test { public static void main(String[] args){ Point a = new Point(3,4); f(a); System.out.println(a.x);//30 System.out.println(a.y);//40 } private static void f(Point a) { a.x = 30; a.y = 40; } }
相关文章推荐
- java 关于初学面向对象的问题二:创建对象过程
- JAVA中对象创建和初始化过程
- Java:对象创建和初始化过程
- JAVA中对象创建和初始化过程
- Java:对象创建和初始化过程
- 解析Java中创建String对象过程中的内存分配
- [转]JAVA中对象创建和初始化过程
- java对象创建过程
- 黑马程序员_Java基础_面向对象(Static的使用、对象初始化和调用成员过程、单例设计模式)
- java对象的创建过程(摘自《java编程思想》)
- java程序中创建触发器、存储过程等对象
- Java:对象创建和初始化过程 推荐
- java 对象创建的过程
- java中的对象创建过程
- JAVA中对象创建和初始化过程
- java基础---->对象的创建过程(初始化、析构、清理)
- (转载)JAVA中对象创建和初始化过程
- JAVA客户端传递对象数组到Oracle存储过程做大数据量插入
- JAVA中对象创建和初始化过程
- Java小知识 对象创建和初始化过程,堆:栈区别