java学习笔记(2023/2/10)--类和对象

类和对象简单概述

简单来说,对象就是一个事物。它是真实存在的,比如现实生活中的手机,冰箱,电视.....那么类就说对象的抽象概念。

什么是类?类就是一个实际中的一类具有共同属性一定行为的事物的抽象。也就是说,类是对象的抽象,对象就说类的实体。

举个列子:定义一个手机类

手机类{

属性:品牌名称

属性:价格

行为1:拨打电话

行为2:上网

}

这里的属性就可以理解成程序里面的变量,行为就可以理解成程序里的函数。它的定义和实现都是在这个类里面完成的,如果把类实体话就说这个手机,类里面的程序就是这个对象的功能。所以类具有封装性。

所以说对象类就包括成员属性和成员函数,需要注意的是:成员函数与一般函数的区别是少了static。

对象的声明

声明方式:

类名 对象名 =new 类名()

与c++不同的是,java的main函数可以直接定义在类里面,但是为了好看一般会在该包下新建一个java.class,在这里面定义main函数。

单个对象的底层逻辑

举个列子:

这是关于手机类的代码 

 这是实现main函数的代码

 需要明白的常识是,所有程序都说从main函数开始执行的,所以main函数首先放在栈内存里面。在new出一个对象后,会把这个对象放在堆内存里面,返回的则是它的地址。因为类是一个集合,所以这个声明的对象它的类里面的属性都有一个默认值(字符串null,双精度浮点型0.00)。

在main中执行下列这条语句: 即是在main函数中找到了对象的地址,输出的则是这个对象的整体地址。

​
 System.out.println(phone1);

​

给对象赋初始值,由于加上后缀,寻找的就是精确的属性

phone1.name="华为手机";
phone1.price=2999.9;

成员函数进行压栈 

 phone1.call(phone1.name);

通过debug调试可以清楚看见实现过程:

首先main函数压栈,成员属性初始化

 对象后面加上后缀就可以修改成员属性

成员函数压栈

 来个简单的图列演示

new多个对象的底层逻辑

参照上文,就是在堆内存中new的一个对象,返回的是不同的地址。

局部变量和成员变量的区别

成员变量就是定义在类中函数外的变量。

局部变量就说定义在函数里的变量。

局部变量的生命周期就是在函数执行完毕后结束,成员变量则是对象消失则消失。

局部变量没有初始值,成员变量就有默认初始值。

另外需要说的是,例如:Phone phone=new Phone() 这里的new Phone放入了堆内存,phone则进入栈内存,这里的phone对象就是一个局部变量。因为我们定义的Phone类对象实在函数里面定义的(例如main函数),因为局部变量的变量名在同一个函数中不能同时存在多个。例如我在定义个 Phone phone=new Phone()肯定会报错。

用完的对象怎么处理?这里会用到一个单独的CG线程,来处理堆内存里的不可用的对象

ps:函数里面传递的形参也属于局部变量,也就是说形参和该函数里定义的变量名不能一样

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值