精华内容
下载资源
问答
  • 对象的数据也可以称为类的
    千次阅读
    2018-12-23 15:57:30

    基本数据类
    Java中的基本数据类型不是面向对象的,它们只是纯粹的数据,除了数值本身的信息之外,基本类型数据不带有其他信息或者可操作方法。

    类型字节数
    byte1
    short2
    int4
    long8
    char2
    float4
    double8
    boolean1

    优点:
    1,用于计算是效率高;
    2,值比较方便,使用 == 就可以了。

    缺点:
    1,从数据库中查出值时可能会有null,基本类型接收NULL值有NPE风险(java.lang.NullPointerException NPE 空值异常);
    2,默认值和NULL值不能传达同一种信息,例如考试分数字段,如果使用Integer类型,那么没有参加考试的分数可以设置为null;如果用int类型,那么分数值都是0,无法没有参加考试还是参加考试得0分。

    包装类
    为了方便操作基本数据类型值,将其封装成了对象,在对象中定义了属性和行为丰富了该数据的操作。用于描述该对象的类就称为基本数据类型对象包装类。

    基本数据类包装类字节数
    byteByte16
    shortShort16
    intInteger16
    longLong16
    floatFloat16
    doubleDouble16
    charCharacter16
    booleanBoolean16

    所有基本类型封装对象所占内存的大小都是16字节,但是还是有区别,比如:
    Integer对象虽然占用了16个字节的内存,但是只是利用了Object所占内存(8个字节)+int所占内存(4个字节)=12字节,还有4个字节根本没有被使用。

    优点:
    1,可以存放null,从数据库中查出值时可能会有null;

    缺点:
    1,不能使用 == 比较相等。
    2,占用更多的内存空间;

    总结
    1,所有POJO类属性必须使用包装数据类型;
    2,所有的局部变量推荐使用基本数据类型。

    更多相关内容
  •   一个对象作为另一个数据成员。...一个中的数据成员除了可以是int, char, float等这些基本的数据类型外,还可以是某一个的一个对象。用子对象创建新。   &n...
      一个类的对象作为另一个类的数据成员。
     
         一个类中的数据成员除了可以是int, char, float等这些基本的数据类型外,还可以是某一个类的一个对象。用子对象创建新类。
     
         在C++中,当把一个类的对象作为新类的数据员时,则新类的定义格式可表示为:
     
    class X
     
    { 类名1  成员名1;
     
      类名2  成员名2;
     
      ……
     
      类名n  成员名n;
     
      ……//其它成员
     
    };
     
    (3)如果一个类A的对象作为另一个类B的数据成员,则在类B的对象创建过程中,调用其构造函数的过程中,数据成员(类A的对象)会自动调用类A的构造函数。
     
    但应注意:如果类A的构造函数为有参函数时,则在程序中必须在类B的构造函数的括号后面加一“:”和被调用的类A的构造函数,且调用类A的构造函数时的实参值必须来自类B的形参表中的形参。这种方法称为初始化表的方式调用构造函数。如:以上面定义的类X为例,在对类X的对象进行初始化时,必须首先初始化其中的子对象,即必须首先调用这些子对象的构造函数。因此,类X的构造函数的定义格式应为:
     
    X::X(参数表0):成员1(参数表1),成员2(参数表2),…,成员n(参数表n)
     
    { ……}
     
    其中,参数表1提供初始化成员1所需的参数,参数表2提供初始化成员2所需的参数,依此类推。并且这几个参数表的中的参数均来自参数表0,另外,初始化X的非对象成员所需的参数,也由参数表0提供。
     
    在构造新类的对象过程中,系统首先调用其子对象的构造函数,初始化子对象;然后才执行类X自己的构造函数,初始化类中的非对象成员。对于同一类中的不同子对象,系统按照它们在类中的说明顺序调用相应的构造函数进行初始化,而不是按照初始化表的顺序。












    以下定义了三个Student、Teacher和Tourpair,其中Student类的对象和Teacher类的对象作为了Tourpair的数据成员,观察对象的构造过程和构造函数被执行的顺序。
     

    include <iostream.h>

     
    class Student
     
    { public: 


       Student()
     
        { cout<<”construct student.\n”;
     
           semeshours=100;
     
           gpa=3.5;   }   


    protected:
     
         int semeshours;
     
         float gpa;
     
    };
     
    class Teacher
     
    { public:
     
         Teacher()
     
       { cout<<”construct Teacher.\n”; 


        }
     
     };
     
    class Tourpair
     
    {public:
     
         Tourpair()
     
         {cout<<”construct tourpair.\n”;
     
          nomeeting=0;  }
     
      protected:
     
          Student student;
     
          Teacher teacher;
     
          int nomeeting;
     
     };
     
    void main()
     
    {Tourpair tp;
     
    cout<<”back in main.\n”; }
     
    其执行结果是:
     
       construct student.
     
       construct teacher.
     
       construct tourpair.
     
       back in main.
     
          由此可见:主函数main()运行开始时,遇到要创建Tourpair类的对象,于是调用其构造函数Tourpair(),该构造启动时,首先分配对象空间(包含一个Student对
     
    象、一个Teacher对象和一个int型数据),然后根据其在类中声明的对象成员的次序依次调用其构造函数。即先调用Student()构造函数,后调用Teacher()构造函数,最后才执行它自己的构造函数的函数体。
     
         由于上例中Tourpair类的数据成员student和teacher的构造函数都是无参函数,所以系统在构造student和teacher对象时会自动调用各自的构造函数Student()和Teacher(),而不需要用初始化表的方式去调用。
     
    【例3-7】试分析以下程序的执行结果:
     

    include <iostream.h>

     

    include <string.h>

     
    class Student
     
    { public:
     
       Student(char *pName=”No name”)
     
          { cout<<”构造新同学:”<<pName<<endl;
     
             strncpy(name,pName,sizeof(name)); char * strncpy(char *dest, char *src, size_t n); 将字符串src中最多n个字符复制到字符数组dest中(它并不像strcpy一样遇到NULL才停止复制,而是等凑够n个字符才开始复制),返回指向dest的指针。              C语言中判断数据类型长度符
     
             name[sizeof(name)-1]=’\0’;  


            }
     
     Student(Student &s)
     
          { cout<<”构造copy of “<<s.name<<endl;
     
             strcpy(name, ” copy of “);  extern char *strcpy(char *dest,char *src);    把src所指由NULL结束的字符串复制到dest所指的数组中
     
             strcat(name,s.name);    extern char *strcat(char *dest,char *src);          把src所指字符串添加到dest结尾处(覆盖dest结尾处的’\0’)并添加’\0’。
     
             }
     
    ~Student()
     
     { cout<<”析构 “<<name<<endl; }
     
        protected:
     
        char name[40];  };
     
    class Tutor
     
    { public: 


           Tutor(Student &s):student(s)//此为初始化表,调用
     
                                                         //Student的拷贝构造函数
     
           { cout<<”构造指导教师 \n”;  }
     
       protected:
     
            Student student;
     
     };
     
    void main()
     
    {  Student st1;   //此处调用Student的构造函数Student(char  


               *pName=”No name”)
     
       Student st2(“zhang”); //同上
     
       Tutor tutor(st2); //此处调用Tutor的构造函数Tutor(Student &s)
     
       //在构造tutor对象的过程中,用初始化表调用
     
       //Student类的拷贝构造函数Student(Student &s)
     
    }
     
    执行结果如下:
     
    构造新同学:No name
     
    构造新同学:zhang
     
    构造copy of zhang
     
    构造指导教师
     
    析构  copy of zhang
     
    析构 zhang
     
    析构 No name
     
    3.2.7 利用初始化表对常量数据成员或引用成员提供初值
     
         如前所述,构造函数可对对象的数据成员进行初始化,但若数据成员为常量成员或引用成员时,就有所不同,如:
     
    class Sillyclass
     
    { public :
     
    Sillyclass()   // 此构造函数对成员ten和refi的初始化错误。
     
        { ten=10;
     
           refi=i; }
     
    protected:
     
        const int ten;   //常量数据成员ten
     
        int &refi;         //引用refi
     
    };
     
    说明:
     
    1. 造成以上错误的原因是在Sillyclass类的构造函数进入之后(开始执行其函数体时),对象结构已经建立,数据成员ten和refi已存在,而其数据成员ten为const,而refi为引用,所以在构造函数体内不能再对其指派新的值。
     
    2. 解决以上问题的方法是利用初始化表:在构造函数的括号后面加一“:”和初始化表,初始化表的格式是:
     
    数据成员名(值),如果有多个时,需要用逗号隔开。
     
    【例3-8】 类employee中包括私有数据成员x, 和2个公有函数成员example、show。程序中使用初始化表是x(215)。
     

    include <windows.h>

     

    include <iostream.h>

     
    // 定义类 employee
     
    class  employee
     
    {private:
     
         const int x;
     
      public:
     
         employee ();
     
         void show(); 


     };
     
    // employee的类外定义
     
    employee :: employee () : x (215)   // 初始化表
     
    {                   }
     
    // show()的定义。
     
    void employee :: show()
     
    {  cout << “\n    x的值是:”<< x << endl; }
     
    // 主函数
     
    void main()
     
    {   //生成对象并为x赋予初始值
     
       employee obj;
     
         //调用show显示x的值
     
       obj.show();
     
    }

    展开全文
  • CAN笔记(20) 过程数据对象

    万次阅读 2019-09-11 11:48:25
    过程数据对象、CAN-ID定义、传输形式、通信参数、映射参数


    1. 过程数据对象

    CAN笔记(17) 预定义报文ID 提及到:
    过程数据对象 PDO 属于过程数据用来传输实时数据
    即 单向传输,无需接收节点回应CAN 报文来确认
    从通讯术语上来说是属于“生产消费”模型 PDO

    其中数据长度被限制为 1~8 字节
    最多只要 1 帧就可以把一条信息或者一个变量传递结束

    在这里插入图片描述

    就像食品销售柜台, 生产者摆出“食品”,“食品”有限制大小
    但只有“需要” 的消费者才会来买, 没有指向性


    2. CAN-ID定义

    PDO 通信比较灵活
    广义上只要符合 PDO 范围内的所有 CAN-ID 都可以作为节点自身的 TPDO 或者 RPDO 使用
    也称为 COB-ID,但不受功能码和 Node-ID 限制

    在这里插入图片描述

    而在 PDO 预定义中
    人为规定了 TPDO 和 RPDO,规定了 Node-ID 在 PDO 中的位置,规定了 PDO 的编号:

    在这里插入图片描述
    PDO 分为 TPDO(发送PDO)和 RPDO(接收PDO)
    发送和接收是以 CANopen 节点自身为参考(如果 CAN 主站或者其他从站就相反)
    TPDO 和 RPDO 分别有 4 个数据对象,每种数据对象就是 1 条 CAN 报文封装
    这些都是数据收发的容器
    筐为使用者准备好,就看使用者在里面放什么东西了

    当然,如果某个节点需要传递的资源特别多
    则有出现例如 TPDO5 之类的数据对象
    而它们的 CAN-ID 定义就需要打破预定义的规则


    3. 传输形式

    PDO 的两种传输方式:同步传输和异步传输
    在这里插入图片描述

    • 异步传输:由特定事件触发
      其触发方式可有两种:
      第一种是由设备子协议中规定的对象特定事件来触发(例如,定时传输,数据变化传输等)
      第二种是通过发送与 PDO 的 COB-ID 相同的远程帧来触发 PDO的发送
      目前应用中的异步传输基本都采用第一种
    • 同步传输:通过接收同步对象实现同步
      同步传输就是通过同步报文让所有节点能在同一时刻进行上传数据或者执行下达的应用指令
      可以有效避免异步传输导致的应用逻辑混乱和总线负载不平衡的问题
      一般发送同步报文的节点是 NMT 主机

    同步传输又可分为

    • 周期传输(循环)
      通过接收同步对象(SYNC)来实现,可以设置 1~240 个同步对象触发
    • 非周期传输(无循环)
      由远程帧预触发或者由设备子协议中规定的对象特定事件预触发传送

    4. 通信参数

    PDO 通信参数,定义了该设备所使用的 COB-ID传输类型定时周期
    RPDO 通讯参数位于 对象字典索引1400h ~ 15FFh
    TPDO 通讯参数位于 对象字典索引1800h ~ 19FFh

    每条索引代表一个 PDO 的通信参数集,其中的子索引分别指向具体的各种参数:

    在这里插入图片描述

    • Number of entries 参数条目数量:
      本索引中有几条参数

    • COB-ID:
      即这个 PDO 发出或者接收的对应 CAN 帧 ID

    • 发送类型:
      即这个 PDO 发送或者接收的传输形式,通常使用 循环同步异步制造商特定事件 较多

    • Inhibit time 生产禁止约束时间(1/10ms):
      约束 PDO 发送的最小间隔,避免导致总线负载剧烈增加
      比如数字量输入过快,导致状态改变发送的 TPDO 频繁发送,总线负载加大
      所以需要一个约束时间来进行“滤波”,这个时间单位为 0.1ms

    • Event timer 事件定时器触发的时间(单位 ms):
      定时发送的 PDO,它的定时时间
      如果这个时间为 0,则这个 PDO 为事件改变发送

    • SYNC start value 同步起始值:
      同步传输的 PDO,收到诺干个同步包后,才进行发送,这个同步起始值就是同步包数量
      比如设置为 2,即收到 2 个同步包后才进行发送


    5. 映射参数

    PDO 映射参数是一个难点, 它包含了一个对象字典中的对象列表
    这些对象映射到相应的 PDO,其中包括数据的长度(单位,位)
    对于生产者和消费者都必须要知道这个映射参数,才能够正确的解释 PDO 内容
    就是将通信参数、应用数据和具体 CAN 报文中数据联系起来

    RPDO 通讯参数 1400h ~ 15FFh, 映射参数 1600h ~ 17FFh, 数据存放为 2000h 之后厂商自定义区域
    TPDO 通讯参数 1800h ~ 19FFh, 映射参数 1A00h ~ 1BFFh, 数据存放为 2000h 之后厂商自定义区域

    为了更加直观地表现映射
    模拟 TPDO1,将参数、应用数据、 CAN 报文数据联合起来展示,不同的映射采用不同的颜色:

    在这里插入图片描述
    通过在对象字典索引通讯参数配置数据长度、CAN-ID和发送类型等,然后通过映射参数找到需要发送的数据值


    参考:

    《CANopen 轻松入门》


    相关推荐:

    CAN笔记(19) 网络管理
    CAN笔记(18) 对象字典
    CAN笔记(17) 预定义报文ID
    CAN笔记(16) CANOpen简介
    CAN笔记(15) STM32-M4 CAN通讯


    谢谢!

    展开全文
  • 数据数据元素、数据项、数据对象的介绍和理解

    万次阅读 多人点赞 2019-06-18 20:57:43
    最近在读《大话数据结构》这本书 第一章上面的介绍数据结构相关概念 总结如下图...数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。数据不仅仅包括整形、...

    最近在读《大话数据结构》这本书 第一章上面的介绍数据结构相关概念 总结如下图:
    在这里插入图片描述
    数据结构是相互之间存在一种或多种特定关系数据元素集合

    对于数据 数据对象 数据元素 数据项 这四个概念 理解的不是很好 我先说下课本上是怎么说的 然后再根据自己和网上的理解说下更直白的解释

    数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。数据不仅仅包括整形、实型等数值类型,还包括字符及声音、图像、视频等非数值类型。
    数据,也就是符号,必须具备两个前提:
    a.可以输入到计算机中
    b.能被计算机程序处理
    对于整型、实型等数值类型,可以进行数值计算。
    对于字符数据类型,就需要非数值的处理。而声音、图像、视频等其实是可以通过编码的手段变成字符数据来处理的

    数据元素:是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理。也被称为记录。
    比如 畜类 牛、马、羊、鸡、猪、狗等动物当然就是畜类的数据元素。

    数据项:一个数据元素可以由若干个数据项组成。
    比如人这样的元素,可以有眼、耳、鼻、嘴等数据项,也可以有姓名、年龄、性别等数据项。
    数据项是数据不可分割的最小单位。

    数据对象**:是性质相同的数据元素的集合,是数据的子集。
    什么叫性质相同呢?是指数据元素具有相同数量和类型的数据项,比如人 这个例子,都有姓名、生日、性别等相同的数据项。
    既然数据对象是数据的子集,在实际应用中,处理的数据元素通常具有相同性质,在不产生混淆的情况下,我们将数据对象简称为数据。

    数据结构
    结构,简单的理解就是关系,比如分子结构,就是组成分子的原子之间的排列方式。严格带你说,结构是指各个组成部分相互搭配的排列的方式。在现实世界中,不同数据元素之间不是独立的,而是存在特定的关系,我们将这些关系成为 结构。
    数据结构:是相互之间存在一种或者多种特定关系的数据元素的集合。

    根据网上大佬的理解 可能会更直观一些:

    假设有两张表,A表为人员表,B表为课程表, 表的格式如下:

    姓名性别身高课程代号
    小明180A
    小红180A
    小绿180B
    课程代号课程名
    A语文
    B数学

    重点:

    这两张表就是数据
    而单独的一张表就称为数据对象,即人员表是一个数据对象,课程表也是一个数据对象
    而每张表中的每一行就称为数据元素
    而姓名,性别,身高,课程代号,课程名就称为数据项

    看完这些是不是就可以理解数据结构的的基本概念啦~

    展开全文
  • 数据数据对象数据元素、数据项 我们在学习数据结构时首先熟悉的一定是这四个名词,那么在数据家族里这四位成员都是什么关系呢? 严蔚敏的数据结构c语言版一书中解释是这样的: 数据:是客观事物的符号表示,是...
  • 数据数据元素、数据项、数据对象的理解

    万次阅读 多人点赞 2018-04-09 16:18:21
    理解数据结构与算法时,觉得大多数的书上讲的定义特别抽象,数据数据元素...即人员表是一个数据对象,课程表是一个数据对象而每张表中的每一行就称为数据元素而姓名,性别,身高,课程代号,课程名就称为数据项...
  • C++类对象共享数据的5种实现方法

    万次阅读 多人点赞 2017-09-30 21:38:14
    C++中数据与行为做了封装,使得私有数据成员不能在体外被访问,同时类对象之间不能互相访问对方的私有成员,而在有些情况下,数据既需要保持其私有性,又需要其有共享性,以下将给出两种方式的实现。...
  • 博主最近在准备2020年春招复习数据结构这门功课时,采用了王道论坛的《2020年数据结构考研复习指导》这本书,该书的第一章节便是数据结构的基本概念:数据数据元素、数据项、数据对象数据结构。但该书对这几个...
  • python 的定义_对象的关系

    千次阅读 2021-02-10 22:19:10
    我们通过定义不同数据类型的属性(数据)和方法(行为),就是说,“将行为和状态(数据)打包在一起”。对象的具体实例,一般称为的实例”。看做“饼干模具”,对象就是根据这个“模具”,制造出来的...
  • ​1.数据:描述客观事物的...4.数据对象:性质相同的数据元素的集合,是数据的一个子集。 ​5.数据结构:指相互之间存在一种或多种特定关系的数据元素的集合,它指的是数据元素之间的相互关系,即数据的组织形式。...
  • 【C++】C++对象、构造函数和析构函数

    千次阅读 多人点赞 2018-06-03 20:32:37
    它即可包含描述事物的数据,又可包含处理这些数据的函数,在程序运行时是被用作样板来建立对象的。所以要建立对象,首先必须定义。 定义 定义一个的一般格式为: class 类名{ private: 成员表1; public:...
  • 2.数据元素:数据元素是组成数据的基本单位,通常称为记录。 3.数据项:不可分割的最小单位,具有独立含义。 3.数据对象:性质相同的数据元素的集合,是数据的一个子集。 4.数据结构:指相互之间存在一种或多种特定...
  • 如图象、声音等都可以通过编码而归之于数据的范畴。 2、数据元素(Data Element) 是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。相当于数据库表的“行”。 例如数据结构教...
  • 在python中,可以通过class关键字定义,然后通过定义的来创建实例对象。语法格式如下: calss 类名: 体 注意事项 在python中使用class关键字来定义,定义时需要注意以下几个事项: (1)代码块以...
  • Java对象(重点详解)

    千次阅读 多人点赞 2021-04-23 18:25:35
    对象类对象的关系。的介绍变量(静态变量)public && private一些建议和小结写在最后的话 这段时间博主学习了一些Java中对象的知识,今天我们就来聊聊Java中的对象对象的关系。 ...
  • C++编程中经常出现两个不同的类对象之间相互访问数据的需要,但是成员变量不是public形式,无法直接访问相应的变量,抛开全局变量不谈,常用的方法有:封装留下的接口函数、友元机制、静态成员变量。 1、通过...
  • 对象,方法与函数的区别

    万次阅读 多人点赞 2019-03-11 19:37:30
    面向对象编程将数据和操作数据相关的方法封装到对象中,组织代码和数据的方式更加接近人的思维,使程序的扩展性更强、可读性更好,从而大大提高了编程的效率。    Python 完全采用了面向对象的思想,是真正面向...
  • 一、数据数据元素、数据对象数据结构的定义 1、数据的定义 定义一:数据是客观事物的符号表示。 学号 姓名 语文 数学 C语言 6201001 张三 85 54 ...
  • 文章目录C++对象的指针的区别指向地址的指针指针本身的大小指向数组的指针指针数组指向指针数组的指针多维指针数组函数参数中使用指针数组指针传址实现数组求和函数指针模仿C++ 类别函数指针数组对象指针...
  • 一、数据类型 概念:一个值的集合和定义在这个值集上一组操作的的总称。...概念:数据可以是字母、数字或两者的组合。通过数据类型(逻辑的、数值的、字符的等)及数据长度来描述。数据项用来描述实体的某种属性...
  • //数据结构基本概念 #include&lt;iostream&gt; using namespace std; /* 数据 – 程序的操作对象,用于描述客观事物 数据的特点: 可以输入到计算机 ...数据元素:组成数据对象的基本单位 数据对...
  • 数据挖掘——分类

    万次阅读 多人点赞 2018-10-10 21:52:21
    分类:一种数据分析形式,它提取刻画重要数据类的模型。这种模型叫分类器,进而预测分类的(离散的、无序的)标号。 相关概念解释 训练集:由数据库元组和与它们相关联的标号组成。 元组X用n维属性向量...
  • 数据挖掘的任务是从数据集中发现模式,可以发现的模式有很多种,按功能可以分为两大:预测性(Predictive)模式和描述性(Descriptive)模式。在应用中往往根据模式的实际作用细分为以下几种:分类,估值,预测,...
  • 面向对象数据模型

    万次阅读 2018-03-28 09:22:25
    所谓面向对象数据模型指属性和操作属性的方法封装在称为对象的结构中的模型。可以通过将一个对象嵌套或封装在另一个里来表示间的关联,新的对象类可以从更一般化的对象中导出,如:以下是描述面向对象数据...
  • 数据数据元素 数据项,数据对象的详细理解

    千次阅读 多人点赞 2019-02-01 20:00:02
    原 简单的介绍数据结构的里的(数据 数据元素 数据数据对象) 2017年10月30日 14:32:56 莫欺少年知识少 阅读数:2174更多 &amp;...
  • 加载机制,就是虚拟机把数据从class文件加载到内存,并对数据进行校检,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型的过程。 JVM的加载机制,规定一个有且只有一个加载器对它进行加载。...
  • C++对象(一)

    千次阅读 多人点赞 2022-07-12 21:46:57
    目录面向过程和面向对象初步认识的定义的作用域的实例化的访问限定符及封装对象大小计算成员函数this指针 面向过程和面向对象初步认识 C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过...
  • CAN笔记(21) 服务数据对象

    万次阅读 2019-09-11 14:36:19
    服务数据对象、通讯原则、快速 SDO 协议、普通 SDO 协议
  • python中的对象

    万次阅读 多人点赞 2022-08-16 20:44:08
    面向对象和面向过程二者相辅相成,并不是独立的,解决复杂问题,通过面向对象便于我们从宏观上把握事物之间复杂关系,方便我们分析整个系统;具体到微观操作,仍然使用面向过程来处理
  • 两大类数据模型客观对象的抽象过程---两步抽象3.数据模型的组成要素(1)数据结构(2)数据操作(3)数据的完整性约束条件4.概念模型(1)用途与基本要求(2) 信息世界中的基本概念(3)两个实体型之间的联系① 一对一联系(1:1...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,007,675
精华内容 403,070
热门标签
关键字:

对象的数据也可以称为类的