欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java对象(一)

程序员文章站 2022-05-28 23:32:35
...

Java对象(一)

博主通过4个月的时间总算把《Java编程思想》这本书看完了,也对面向对象编程有了一个更加深刻的认识,所以写了这一次的Java对象系列,就当是读后感了吧。

类是面向对象语言中最重要的一种数据类型,类声明的变量称为对象。

类是创建对象的模板,当使用一个类创建一个对象时,也称给出了这个类的一个实例创建对象

1. 对象的声明

一般格式如下:

类的名字 对象名字;

例:

People people

这里 People 是一个类的名字,people是声明的对象的名字。

2.为声明的对象分配内存

使用 new 运算符和类的构造方法为声明的对象分配内存,即创建对象。

如果类中没有构造方法,系统会调用默认的构造方法。

默认的构造方法是无参数的,且方法体中没有语句。

例:

people= new People();

详细得说:

        class People{                                   //创建一个类,赋予一些属性
        float height,weight;
        String head,ear,hand,foot,mouth;
        void speak(String s){
            System.out.println(s);
        }
    }

    public class test{
        public static void main(String[] args){
            People people;                              //声明对象
            people= new People ();                      //为对象分配内存,使用new运算符和默认的构造方法
        }
    }
    class Point{
        int x,y;
        Point(int a,int b){
            x = a;
            y = b;
        }
    }

    public class test1{
        public static void main(String[] args){
            Point point1,point2;                            //声明对象point1和point2
            point1 = new Point(10,10);                      //为对象分配内存,使用new和类中的构造方法
            point2 = new Point(12,21);                      //为对象分配内存,使用new和类中的构造方法
        }
    }

如果类中定义了一个或多个构造方法,那么 Java 不提供默认的构造方法。上述例子中的 Point 类提供了一个构造。

方法但没有提供无参数的构造方法。
例:

    //这么创建对象是非法的
    point1 = new Point(); 
    point2 = new Point();
3.对象的内存模型

声明对象时的内存模型
当用 People 类声明一个变量 people,即对象 people时:

People people;

内存模型如下图所示:
people
Java对象(一)

声明对象变量 people后,people的内存中还没有任何数据,称这时的 people是一个空对象。空对象不能使用,因为它还没有得到任何“实体”,必须再进行行为对象分配内存的步骤,即为对象分配实体。

对象分配内存后的内存模型

people= new People();

关键处,此处来一个华丽的分割线


首先为 People 类中的成员变量 height、weight、head、ear、mouth、hand 和 foot 分别分配内存,即People 类的成员变量被分配内存空间,然后执行构造方法中的语句。如果成员变量在声明时没有指定初值,所使用的构造方法也没有对成员变量进行初始化操作,那么,对于整型变量,默认初值是 0;对于浮点型,默认初值是 0.0;对于boolean 型,默认初值是 false;对于引用型,默认初值是 null。

接下来给出一个信息,已确保这些变量是属于对象 people的,即这些内存单元将由 people操作管理。为了做到这一点,new 运算符在为变量 height、weight、head、ear、mouth、hand、foot 分配内存后,将返回一个引用给对象 people,也就是返回一个“号码”(该号码包含着代表这些成员变量内存位置和相关的重要信息)给people。不妨认为这个引用就是 people在内存中的名字,而且这个名字(引用)是 Java 系统确保分配给height、weight、head、ear、mouth、hand、foot 的内存单元将由 people“操作管理”。

那我们称分配给 height、weight、head、ear、mouth、hand、foot 的内存单元属于对象 people的实体,即这些变量是属于 people的。所谓为对象分配内存,就是指为它分配变量,并获得一个引用,以确保这些变量由它来“操作管理”。

为对象分配内存后,内存模型由声明对象时的模型变成了如下所示:

Java对象(一)

当然大家想要创建一个真实的people,那么可以对自己的 height、weight、head、ear、mouth、hand、foot 进行操作,改变自己的状态。在进行对象的声明时,也可以同时初始化该对象,即分配内存空间。例如:

People people= new People ();

这即是我们最常用的创建对象的方法,关于创建对象,大家可以回顾我之前 java中创建对象的几种方式解析——不止只有New 的这篇文章,在此不再赘述。

一个类通过使用 new 运算符可以创建多个不同对象,这些对象将被分配不同的内存空间,因此改变其中一个对象的状态不会影响其他对象的状态。
例如:

    man= new People();
    woman= new People();

这个读后感后面还是会继续添加,我们都是站在巨人的肩膀上学习,往往越简单的东西才越值得我们去深刻研究,希望对大家有所帮助,也算是对自己的一份交代,好学若饥,谦卑若愚!投身Java,但是我们不止会New!

相关标签: 对象