[Java基础篇]类与对象的剖析

一、类与对象的基本概念

1、什么是类?
类(构造对象的模板或蓝图):是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该特征。
属性:就是该事物的状态信息。
行为:就是该事物能够做什么。
2、什么是对象?
对象:是一类事物的具体实现。对象是类的一个实例(对象并不是找个女朋友),必然具备该类事物的属性和行为。
3、类与对象的关系:
类是对一类事物的描述,是抽象的。
对象是一类事物的实例,是具体的。
类是对象的模板,对象是类的实体。

二、类

1、类(事物)的通俗理解:
成员变量:对应事物的特性。
成员方法:对应事物的行为。

public class Student{
   //成员变量
   String name;//姓名
   int age;//年龄
   //成员方法
}

2、类的重要特点:
一个类可以包含以下类型变量:
局部变量(没有默认值,必须先定义、赋值): 在方法(参如:方法上的参数)、构造方法或者语句块中定义的变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
成员变量(有默认值): 定义在类中,方法之外的变量。在创建对象的时候实例化。可以被类中方法、构造方法和特定类的语句块访问。
类变量: 声明在类中,方法之外,但必须声明为static类型。

public class Myjava{
    static int price=1000;///类变量
    String color;///成员变量
    
    public void Method(){
      String  brand="oppo";///局部变量
    }
}
三、对象和对象变量

1、对象的使用格式

创建对象:
类名 对象名 = new 类名();
使用对象访问类中的成员:
对象名.成员变量;
对象名.成员方法();

要想使用对象,就必须首先构造对象,并指定其初始状态。然后,对对象应用方法。在Java程序设计语言中,使用构造器构造新实例。
构造器是一种特殊的方法,用来构造并初始化对象。比如在标准Java库中包含一个Date类。它的对象将描述一个时间点。
构造器的名字应该与类名相同。因此Date类的构造器名为Date。构造Data对象,需要在构造器前面加上new操作符。

new Date();///构造了一个新对象

Date b = new Date();///将对象存放在一个变量中,可以使构造的对象多次使用

2、对象与对象变量区别
比如:

Date d;///定义了一个对象变量d,它可以引用Date类型的对象

d不是一个对象实际上也没有引用对象。不能将任何Date方法应用于这个变量上(如s=d.tostring(); 这将会产生编译错误),所以此对象变量必须要初始化。

///第一种:用新构造的对象初始化这个变量
Date d;
d=new Date();

///第二种:引用一个存在的对象
d=b;///b是上面已存在的

注意:一个对象变量并没有实际包含一个对象,而仅仅引用一个对象。

在Java中,任何一个对象变量的值都是对存储在另一个地方的一个对象的引用。new操作符的返回值也是一个引用。

Date d = new Date(); 表达式new Date()构造了一个Date类型的对象,并且它的值是对新创建对象的引用。这个引用存储在变量d中。重要的是,如果d初始化为null,表明对象变量d没有引用任何对象。

四、对象内存图

在JVM内存里面主要分布以下三个区域:
1、栈(stack):每个线程包含一个栈区。存放基础数据和自定义对象的引用。
2、堆(heap):主要存储创建的对象,即new出来的对象
3、方法区(method):静态区,跟堆一样,被所有的线程共享。加载存放class文件(字节码文件)和包含static变量。
两个对象调用一个方法内存图:
在这里插入图片描述
在这里插入图片描述
以上程序是这样进行的:
1、将phone.class、phonetest.class 文件加载到方法区
2、main方法压栈;
3、堆创建一个phone对象;
4、栈里的p、p1分别指向phone对象的内存地址0x123、0x456
5、给对象的成员变量进行赋值;
6、方法弹栈,程序执行结束;

参考文献

1、 《Java核心技术卷Ⅰ》
2、 http://www.monkey1024.com/javaseroute
3、 黑马程序员视频教程
4、 https://www.runoob.com/java/java-object-classes.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值