【大数据】学习笔记 1 Java SE 第5章 面向对象基础(上) 5.3 成员变量

【大数据】学习笔记

文章目录

    • 【大数据】学习笔记
      • 1 Java SE
        • 第5章 面向对象基础(上)
          • 5.3 成员变量
            • 5.3.1 如何声明成员变量
            • 5.3.2 对象的实例变量

在这里插入图片描述

1 Java SE

第5章 面向对象基础(上)
5.3 成员变量
5.3.1 如何声明成员变量
  1. 【修饰符】 class 类名{
  2. 【修饰符】 数据类型 成员变量名;
  3. }

示例:

  1. public class Person{
  2. String name;
  3. char gender;
  4. int age;
  5. }

位置要求:必须在类中,方法外

类型要求:可以是Java的任意类型,包括基本数据类型、引用数据类型(类、接口、数组等)

修饰符:成员变量的修饰符有很多,例如:public、protected、private、static、volatile、transient、final等,后面会一一学习。

其中static可以将成员变量分为两大类,静态变量和非静态变量

  • 其中静态变量又称为类变量
  • 非静态变量又称为实例变量或者属性。
5.3.2 对象的实例变量

【1】实例变量的特点

(1)实例变量的值是属于某个对象的

  • 必须通过对象才能访问实例变量
  • 每个对象的实例变量的值是独立的

(2)实例变量有默认值









































分类 数据类型 默认值
基本类型 整数(byte,short,int,long) 0
浮点数(float,double) 0.0
字符(char) ‘\u0000’
布尔(boolean) false
数据类型 默认值
引用类型 数组,类,接口 null

【2】实例变量的访问

  1. 对象.实例变量

例如:

  1. package com.dingjiaxiong.test03.field;
  2. /**
  3. * @Projectname: BigDataStudy
  4. * @Classname: TestPerson
  5. * @Author: Ding Jiaxiong
  6. * @Date:2023/4/24 15:37
  7. */
  8. public class TestPerson {
  9. public static void main(String[] args) {
  10. Person p1 = new Person();
  11. p1.name = "张三";
  12. p1.age = 23;
  13. p1.gender = '男';
  14. Person p2 = new Person();
  15. /*
  16. (1)实例变量的值是属于某个对象的
  17. - 必须通过对象才能访问实例变量
  18. - 每个对象的实例变量的值是独立的
  19. (2)实例变量有默认值
  20. */
  21. System.out.println("p1对象的实例变量:");
  22. System.out.println("p1.name = " + p1.name);
  23. System.out.println("p1.age = " + p1.age);
  24. System.out.println("p1.gender = " + p1.gender);
  25. System.out.println("p2对象的实例变量:");
  26. System.out.println("p2.name = " + p2.name);
  27. System.out.println("p2.age = " + p2.age);
  28. System.out.println("p2.gender = " + p2.gender);
  29. }
  30. }

在这里插入图片描述

【3】实例变量的内存分析

内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来。我们编写的程序是存放在硬盘中的,在硬盘中的程序是不会运行的,必须放进内存中才能运行,运行完毕后会清空内存。Java虚拟机要运行程序,必须要对内存进行空间的分配和管理,每一片区域都有特定的处理数据方式和内存管理方式。

JVM的运行时内存区域分为:方法区、堆、虚拟机栈、本地方法栈、程序计数器几大块。

在这里插入图片描述






























区域名称 作用
程序计数器 程序计数器是CPU中的寄存器,它包含每一个线程下一条要执行的指令的地址
本地方法栈 当程序中调用了native的本地方法时,本地方法执行期间的内存区域
方法区 存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
堆内存 存储对象(包括数组对象),new来创建的,都存储在堆内存。
虚拟机栈 用于存储正在执行的每个Java方法的局部变量表等。局部变量表存放了编译期可知长度的各种基本数据类型、对象引用,方法执行完,自动释放。

Java对象保存在内存中时,由以下三部分组成:

  • 对象头

    • Mark Word:记录了和当前对象有关的GC、锁等信息。(后面再讲)
    • 指向类的指针:每一个对象需要记录它是由哪个类创建出来的,而Java对象的类数据保存在方法区,指向类的指针就是记录创建该对象的类数据在方法区的首地址。该指针在32位JVM中的长度是32bit,在64位JVM中长度是64bit。
    • 数组长度(只有数组对象才有)
  • 实例数据

    • 即实例变量的值
  • 对齐填充

    • 因为JVM要求Java对象占的内存大小应该是8bit的倍数,如果不满足该大小,则需要补齐至8bit的倍数,没有特别的功能。

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,48人围观)

还没有评论,来说两句吧...

相关阅读