2022-06-29 day 09

一、全局变量 局部变量

1)成员变量(属性):直接定义在类中

成员变量有默认值,如果给成员变量不赋值,采用的就是默认值

整形为0 小数位0.0 布尔为false char类型的为’ \u0000’(二进制的0),引用类型的为null

2)局部变量:在方法中定义的变量,使用之前必须赋值

二、对象内存结构

1.对象头(Header)    

Mark Word(标记字段):对象的Mark Word部分占4个字节,其内容是一系列的标记位,hash码,

比如轻量级锁的标记位,偏向锁标记位等等。

Klass Pointer(Class对象指针):Class对象指针的大小也是4(8)个字节,其指向的位置是对象

对应的Class对象(其对应的元数据对象)的内存地址

2.实例数据(Instance Date)

对象实际数据:这里面包括了对象的所有成员变量,其大小由各个成员变量的大小决定

3.对其填充(Padding)

最后一部分是对齐填充的字节,按8个字节填充。

三、getter setter方法

问题:在这之前,对象的属性可以直接赋值(属性可以直接被访问到),可能会出现安全性问题。

解决方法:对属性进行私有化,通过setter和getter进行设置属性和获得属性。

四、封装

1.概念

隐藏复杂,暴露简单

隐藏对象的属性和实现细节,仅对外提供公共访问方式,将类的某些信息隐藏在类的内部,不允许外部程序

直接访问,而是通过该类提供的方法来对隐藏的信息进行操作和访问。

2.好处:

(1)只能通过规定的方法访问数据,可以有效的保护数据

(2)隐藏类的实现细节,方便修改和实现。

3.封装的实现步骤

(1)修改属性的可见性设为(private)

(2)创建getter/setter方法(用于属性的读写)(通过这两种方法对数据进行获取和设定,对象通过调

用这两种发方法实现对数据的读写)

(3)在getter/setter方法中加入属性控制语句(对属性值的合法性进行判断)(不是必须要加)


五、类和对象应用

六、关于引用类型参数

调用带参数的方法的过程

    1. 给形参在内存中开辟空间

    2. 将实参的值赋值给形参

    3. 执行test方法方法体中的代码

引用类型的参数传递的是地址信息

基本数据类型传的是值

七、方法重载(overload)

如果有一系列方法,它们的功能都是类似的,只有参数有所不同,那么,可以把这一组方法名做成同名

方法。

1.方法重载概念:

    在同一个类中

    方法名称一样

    方法参数不一样(参数的个数、类型顺序、类型不一样)

    和其他的因素无关

2.示例

注:方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错,这叫做重载分辨。

八、构造方法:

1. 概念知识

名称和类名一样,无返回声明

在创建对象的时候调用(每次创建对象都会调用)

每一个类都有一个默认的隐式的无参数的构造方法,如果写了其他带参数的构造方法,那么默认的无

参数的构造方法会消失。

我们经常使用构造方法给属性赋值,但是构造方法赋值侧重于给属性赋初值,Set方法侧重于修改

属性的值

2.示例

测试类

九、初始化块

在创建对象的时候自动调用,每创建一个对象,都会调用一次,一般用来给属性赋初始值,执行时机先

于构造方法

{

代码….

}

声明的时候可以赋初始值:时间点最早,但是创建所有的对象的初始值都是一样的

代码块中可以赋初始值:不能带参数,所以如果初始值写死,或者是经过一个运算得到初始值,可以放

在代码块中赋值,所有对象的初始值都一样

构造方法可以赋初始值:可以带参数,初始值可以由调用者确定

全局变量的初始化及三种初始化运行之间的关系

十、创建对象的过程:

1. 给属性开辟空间,给属性赋默认值

2. 如果声明属性的时候给属性赋初始值

3. 如果类中有代码块,会执行代码块(每创建一次对象都会执行一次)

4. 执行构造方法中的代码

十一、this关键字

1. 概念

This代表的是当前类的对象(谁调用this所处的方法,this就指哪一个对象)

2. this的应用场合(第一种普遍使用)

this.属性(大部分情况下用于区分局部变量的名称和属性名称,this如果用在构造方法中,指当前

创建的对象)

this.方法(参数列表)(在当前类的一个方法中调用当前类的其它方法)

this(参数列表):用于在当前类的一个构造方法中调用当前类的另外一个构造方法,调用代码必须放

在构造方法的第一行(在构造方法中不可以使用名称调用另外一个构造方法)

注意:不能在构造方法中使用构造方法的名称直接调用另外一个构造方法

十二、练习


二维数组示例
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、理论上的定义: 类:就是拥有相同功能和属性的对象的集合。(抽象)对象:类的实例(具体) 2、从生活角度 如果说...
    Deathfeeling阅读 139评论 0 1
  • Day1 Java语言平台的版本 -Java SE(标准版) 为开发普通桌面和商务程序提供解决方案 是Ja...
    找到目标的秃头少年阅读 415评论 0 0
  • 面向对象OOP JavaScript中的object类1、直接使用变量定义object对象 2、使用构造函数来创建...
    有个水友阅读 96评论 0 0
  • 类和对象 理论上的定义类: 拥有相同功能和相同属性的对象的集合(类是抽象的)对象: 类的实例(对象是具体的) 生活...
    rzlong阅读 206评论 0 0
  • 一、集合 (一).set集合 Set继承于Collection接口,是一个不允许出现重复元素,并且无序的集合,主要...
    平淡cool阅读 141评论 0 0