您的位置:首页 > 编程语言 > Java开发

达内课程-面向对象之对象创建过程和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;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: