Java基础入门篇(2)——走进类和对象的世界

——不后悔在年少时遇见了那个惊艳了我青春的人,因为她为我的少年时代带来了一束光,从青丝到白发,她都是我心中的白月光。

目录

个人介绍

概况

类和对象的引出

为什么Java语言中需要类和对象

类和对象的介绍

类的本质

对象的本质

类和对象的关系

对象的内存关系

关于数据类型的知识补充

内存分析示意图

内存分析的补充:关于对象与对象名

对象的分配机制

习题引入一

内存图分析

总结

习题引入二

内存图分析

创建对象的流程

Java的内存结构分析

属性

叫法

定义的方法


个人介绍

各位CSDN的友友们,大家好,我是小熙,一个算法小透明,希望在CSDN的大舞台可以和大家一起取得进步(^_^)

个人现状:上个学期在学校的ACM小组学了一个学期的算法,但是世界很大,我的梦想很远,我希望在我年轻的时候可以走出国门,到世界的其他地方看一看,再加上我的算法功底可能真的不太足以支持我在ACM比赛上做出成绩。所以我选择逐渐淡出ACM小组,并把之前的知识和最近所学的整理成博客供大家分享。

概况

(面向对象的基础章节将从8大方面展开,分别是"类和对象","成员方法","成员方法的传参机制","重载(overload)","可变参数","作用域","构造器","thid"。本篇文章将主要讲解类和对象这个方面。

类和对象的引出

为什么Java语言中需要类和对象

方便一个个体(对象)相关的数据的管理(类似于结构体)

举例:就以一个人为例子,与他相关的信息有年龄,名字,工作等,如果每次都用一个单独的变量去存储这些信息,那么就相当于把这个人的信息拆解,显得十分混乱。如下:

public class Exercise2 {
    public static void main(String[] args) {

        String person1Name;
        int person1Age;
        String person1Job;

        String person2Name;
        int person2Age;
        String person2Job;

    }
}

~所以,类和对象应运而生。

class person{
    int age;//年龄
    String job;//职业
    String name;//姓名
}

类和对象的介绍

类的本质

类的本质:和int ,double,long 这些一样,都是一种数据类型。只不过int ,long ,double这些是系统自带的数据类型,类是程序员自己定义出来的数据类型

类比解说(对应关系):就好比int这个数据类型可以对应1,3,43,432,42........若干个整数,以class person为例子,一个“person”的类可以对应小明,小李,小王,小刘.....这些人

对象的本质

对象的本质:对象是一个具体的实际的事物,比如说在"person"类中小王就是一个对象,小李也是一个对象。又称实例

类和对象的关系

类和对象的关系示意图:

 从类到对象的过程的不同说法:

1:创建一个对象。

2:实例化一个对象。

3:把类实例化。

对象的内存关系

关于数据类型的知识补充

(1):引用数据类型:比如数组,String,和自己定义出来的class类都是引用数据类型。引用数据类型指向的是对象(也可以理解为地址),而不是具体的值。

(2):基本数据类型:比如int,double指向的就是具体的值。

内存分析示意图

文字描述: 

第一步:先将类的信息加载到方法区中。(类加载信息主要包含类的属性和方法)

第二步:在堆中为对象分配不同的空间,根据对象中属性的不同来分配不同的空间。如果是引用数据类型(比如字符串)就分配地址,如果是基本数据类型就分配具体的值。

第三步:堆中的对象建立好了之后就把地址返回到栈区。

图像描述:

内存分析的补充:关于对象与对象名

 关于诸如创建对象的语句“Cat cat1=new Cat()”的进一步解读:

 首先我们分析这条语句的时候应该从右边往左分析,先分析new Cat()然后分析Cat cat1

(1):new Cat():这才是真正的创建对象的过程。

(2):Cat cat1:将上一步中创建好的对象指向对象名cat1。也可以理解为为上一步创建的对象起一个叫cat1的名字。

对象的分配机制

习题引入一

 答案:10

内存图分析

总结

(1):关于语句“Preson p2=p1”:本质上是地址的拷贝,把p1指向的地址拷贝给p2。

(2):还要注意的是在执行语句“person p2=p1”之前p2指向的是一个空地址

习题引入二

内存图分析

创建对象的流程

1:方法区中加载相关的类的信息(类加载只可以加载一次)。

2:在堆中为对象创建空间,默认进行初始化。

3:对象名指向已经创建好的对象。

4:进行指定的初始化。比如p1.age=xxx,p.name="xxx";

Java的内存结构分析

1:栈区:基本数据类型(局部变量)

2:堆区:存放对象或者数组

3:方法区:常量池,比如说字符串(String)和类加载信息

属性

叫法

属性的叫法:可以是属性,成员变量,字段(field)。叫法不同罢了

定义的方法

定义方法:访问修饰符+属性类型+属性名

访问修饰符:protected   private   public   friendly(没有说明的话就是friendly,当前包中的其他类都可以访问,但是就是不能被其他包中的类访问)

属性类型:可以是基本数据类型,也可以是引用数据类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值