1java对象

2.1、一切都是对象

    JAVA思想:
    ①面向对象:JAVA假设 只进行面向对象的程序设计(无面向过程)
    ②面向对象的编程:1、定义类    2、产生类的对象    3、发送消息给对象(调用方法)
 
    梗概:对象定义;与对象相关的概念、具体定义对象、对象(相关概念)的存储、对象的销毁
 
1、对象定义:
        JAVA中一切都被视为对象,存储于内存的堆中
 

2、与对象相关的概念(引用、基本类型、数组)

    A:(对象的)引用
        ①定义:某个对象的 标识符;可通过引用操纵对象;(其值为:对象在堆中的地址)
            (对象:电视机;引用:遥控器)
        ②创建:
            如:String s;  (注意:1.创建的是引用,并不是对象;2.没有对象,引用也可以独立存在)
        ③使用:
            a、修改对象(的成员变量/成员方法)——>只需操纵引用
            b、在他处调用对象——>通过引用而非对象
        ④关联引用与对象:通过new关键字(new释义:给我一个新对象)
             如: String s = new String("asdf");
 

    B:基本类型(特殊的对象)

 
        ①与对象的区别:某些对象只需存储一个“值”,如果与对象一样存放于堆中速度过慢,故直接存储于堆栈中(存储位置上和引用相同)
        ②存储空间不变性:JAVA的每种基本类型所占存储空间大小不随机器硬件架构变化(程序更具可移植性)
        ③包装器类:每种基本类型都有对应的包装器类,包装器类属于对象,拥有自动包装(基本类型——>包装器类)和反向功能
        ④2个特殊的包装器类——BigInteger和BigDecimal:
            二包装类没有对应的基本类型;但其提供的方法与基本类型int、float的操作相似,但方法执行的速度较慢;两包装类支持任意精度的整数、定点数
 
 

    C:数组(一组对象)

 
        ① c、c++的数组:就是内存块,会出现两个问题:在数组初始化前使用内存、访问自身内存块以外的数组
        ②JAVA的数组:确保数组会被初始化、不能在它的范围之外被访问(代价:内存开销、运行时下标检查)
        ③具体:
            a、数组对象:创建引用数组,每个引用初始化为null(引用还没有指向某个对象,使用还是null的引用会报错)        
            b、基本数据类型数组:初始化内存全部置0

3、如何确定对象的外观与行为:类

 
   ①类存在的意义:
 
        确定对象的外观(字段)和行为(方法)
   ②类的创建:
 
        A. 关键字class 类名(之后用new来创建类的对象,分配字段的存储空间,方法供外界调用)
        B. 在类中设置两种类型的元素:
                a、字段(数据成员、成员变量):
                    1:对象(通过对象的引用与对象进行通信)(必须有关联对象/初始化)
                    2:基本数据类型(最好明确初始化,若没有,则Java会在作为类的成员使用时给其赋默认值)
                    *:普通字段不能在对象间共享
                b、 方法(成员函数、成员方法):
                    1、定义与作用:子程序的名字,其他语言也称“函数”, 决定一个对象能够接收什么样的消息
                    2、创建:只能作为类的一部分来创建;返回值、方法名、参数列表(和方法名并称方法签名)、方法体
                    3、调用:只能通过(可执行这个方法的)对象才能被调用
                      e.g: 对象名.方法(参数列表);
                      int x = a.f();
                      调用方法的行为被称为“发送消息给对象”(消息:f(),对象:a)(oop: 向对象发送消息)
                    4、参数列表:传递给方法什么样的信息,数据一般为对象(的引用)或基本类型;
 

4、对象(引用、基本类型)的存储:

    a、寄存器:
        1. 位置:位于处理器内部,数量极少;
        2. 速度:最快的存储区;
        3. 使用:按需分配不受程序控制(c、c++允许)
    
   b、堆栈(zhan):
        1. 位置:位于通用RAM(随机访问存储器)中,通过堆栈指针可从处理器那里获得直接支持(指针下移:分配新的内存;指针上移:释放那些内存)
        2. 速度:仅次于寄存器
        3. 使用:存储对象的引用、基本类型变量,但不存储Java对象(创建程序时,Java系统必须知道存储在堆栈内所有项的确切生命周期,限制了程序的灵活性)
    

    c、堆:

        1. 位置:一种通用的内存池(也位于RAM区)
        2. 速度:存储分配与清理比堆栈慢
        3. 使用:存放所有的JAVA对象(使用new自动存储分配)(编译器无需知道存储的数据在堆里存活多长时间)
 

    d、常量存储:

        通常情况:存储在程序代码内部(不会改变,故安全)
        嵌入式系统:存储在ROM只读存储器中
 

    e、非RAM存储:

        流对象:对象转换为字节流
        持久化对象:存放于磁盘
 

5、对象的销毁

    ①(基本数据类型)变量的作用域:
        决定了在其内定义的变量名的可见性和生命周期
 

    ②对象的作用域:

 
        与基本类型不同,当用new创建一个Java对象时,它可以存活于作用域之外
        e.g:{    String s = new String("a string");    }
        结果:引用s作用域终点后消失、s指向的String对象仍继续占据内存空间(但无法在作用域之外继续访问)
 

    ③对象的作用域的回收:

        Java有一个垃圾回收器,可以:1.监视new创建的所有对象;2.辨别那些不会再被引用的对象
                        
 
附录:基本数据类型(九种)
 
 
      
 
 
2.2、一切都是对象(二):构建

1. 名字可见性:反转域名,句点代表子目录的划分
2. 使用其他类:
    ①类在相同 .java 文件下:直接使用(类在文件的后面定义也可使用)
    ②类位于其他文件:使用关键字import导入包/类库(其他语言中类库还包含方法和数据)
 
3. static关键字:
    ①作用:
        正常情况:定义类,创建类的对象(new),通过对象来访问成员变量或成员方法
        特殊情况(static作用):在不创建对象的前提下——>①调用类的成员变量    ②调用类的成员方法(类的字段或方法不关联对象)
    ② 使用方法:将static关键字放在定义之前
            a、修饰类的成员变量:若创建多个对象,其引用指向同一存储空间
            b、修饰类的成员方法:main()方法(如main非静态,则需要创建main所在类的对象,且实例化main的类也需要被实例化,没有穷尽,故为静态方法)
    ③调用方法:类名.成员变量;类名.成员方法();    (*:类名替换为对象名亦可,但效率可能降低)
    ④static方法:可以创建或使用与其类型相同的被命名对象,故通常负责看护与其隶属同一类型的实例群
 
4. import引入文件中需要的额外类,java.lang这个类会自动被导入到每一个Java文件中
 
5. 文件中必须存在一个类:①与文件同名    ②包含main()方法
 
6. 编码风格:类名——大驼峰命名法;
                     方法、字段(成员变量)、对象引用名——小驼峰命名法
                     驼峰命名法:单词拼在一起(无下划线)、每个单词首字母大写
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值