java中对象对象的创建过程,类的加载过程,对象在内存中的存储形式

java-对象

众所周知,java是一门典型的面向对象编程语言,下面来分析分析

1、对象在内存中的存储形式

对象在栈中是以地址的形式存放,堆中存放的是基本数据类型与引用数据类型的地址,方法区存放的是引用数据类型

  • 下面以一个猫对象为例,所示对线在jvm存储的示意图

对象在内存中的存在形式.png

  • 对象中的属性

属性=成员变量,属性是类中的一个组成部分

2、java中无参构造的意义

在继承的时候,子类的构造方法必然会调用父类的构造方法,如果子类的构造方法没有指定调用父类的构造方法,子类在实例化子类时,会默认调用父类的无参构造,此时父类中没有无参构造,就会编译报错!

3、对象中方法在内存中的调用机制

  1. 当程序执行到方法时,就会开辟一个独立的空间(栈空间)
  2. 当方法执行完毕时,或者执行到return语句时,就会返回
  3. 返回到调用方法的地方
  4. 返回后,继续执行方法后面的代码

方法在内存中的调用机制.png

4、函数重载

  • 记住一个就好了,那就是println的重载,println可以输出数字、字符串、字符等等,这就是使用到了函数重载
  • 特性:形成列表不同、方法名相同、与返回值无关;便于接口编程,减少起名的麻烦。

5、可变参数的使用

  1. 本质就是一个数组
  2. 一个形参列表中,只能有一个可变参数的存在

案例:

public static void main(String[] args) {
    a(1,2,3,4);
}

public static void a(int ...sums) {
    for (int i = 0; i < sums.length; i++) {
        System.out.println(sums[i]);
    }
}

5、作用域

全局变量不赋值,有默认值

局部变量必须赋值,没有默认值;

属性和局部变量可以重名,就近原则;

6、对象创建的流程分析

案例:

class Person  {
    int age = 90;
    String naem ;
    Person (String n, int a ) {
        name = n;
        age = a;
    }
}
Person p = new Person("小王",20);

流程分析:

  1. 加载Person类信息(Person.class) , 只会加载一次

  2. 在堆中分配空间(地址)

  3. 完成对象初始化,【3.1默认初始化 age = 0, name = null ,

    ​ 3.2 显示初始化: age = 90 , name = null

    ​ 3.3 构造器初始化 age = 20 , name = 小王 】

  4. 在对象在堆中的地址,返回给p (p是对象名,也可以理解成对象的引用)

对象的流程分析图1.png

7、this的使用

  • 表示当前对象

this在内容中的作用.png

  • 哪儿个对象调用,this就指向哪儿个对象
  • this只能在类定义的方法中使用
  • 只能在构造器中进行调用

© 版权声明
THE END
喜欢就支持一下吧
点赞0

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYofHiqb' (Errcode: 28 - No space left on device) in /www/wwwroot/583.cn/wp-includes/class-wpdb.php on line 2345
admin的头像-五八三
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称代码图片