美文网首页
第二章:一切皆对象

第二章:一切皆对象

作者: Hsicen | 来源:发表于2020-06-14 17:22 被阅读0次
    用引用操作对象

    每种编程语言都有自己的操纵内存中元素的方式,在Java中一切都被视为对象,操纵的标识符实际上是对象的一个引用;可以将这一情形想象成用遥控器(引用)来操纵电视机(对象)。只要握住这个遥控器,就能保持与电视机的链接。当有人想改变频道或者减小音量时,实际操纵的是遥控器(引用),再由遥控器来调控电视机(对象),如果想在房间里四处走走,同时仍能调控电视机,那么只需要携带遥控器(引用)而不是电视机(对象)。

    此外,即使没有电视机,遥控器亦可以独立存在。也就是说,你拥有一个引用,并不需要有一个对象与它关联。因此,如果想操纵一个词或者句子,则可以创建一个Sting的引用:

    String s;
    

    但这里创建的只是引用,并没有指向对象。如果此时向s发送一个消息,就会返回一个运行时错误。这是因为此时s实际上并没有与任何事物相关联。因此,一种安全的做法是:创建一个引用的同时便进行初始化。

    String s = "asdf";
    

    这里字符串可以用带引号的文本初始化,通常是使用new关键字进行对象的初始化

    可供存储数据的位置
    • 寄存器:最快的存储区,位于处理器内部
    • 堆栈:位于RAM(随机访问存储器),对象引用存储于此区域
    • 堆:一种通用的内存池(位于RAM区),用于存放所有的Java对象(通过new常见出来的对象)
    • 常量存储:常量值通常存放在程序代码内部
    • 非RAM存储:数据完全存活于程序之外,不受程序的任何控制
    基本数据类型

    基本数据类型不是通过new来创建的,创建的是一个并非引用的变量,这个变量直接存储值,并置于堆栈中

    基本类型 大小 最小值 最大值 包装类型
    boolean Boolean
    char 16 bits = 2 byte Unicode 0 Unicode 2^16-1 Character
    byte 8 bits -128(2^7) +127(2^7-1) Byte
    short 16 bits -2^15 +2^15-1 Short
    int 32 bits -2^31 +2^31-1 Integer
    long 64 bits -2^63 +2^63-1 Long
    float 32 bits IEEE754 IEEE754 Float
    double 64 bits IEEE754 IEEE754 Double
    void Void

    基本类型具有包装类型,使得可以在堆中创建一个非基本类型对象,用来表示对应的基本类型

    Java中的数组

    Java中的数组是对象,当创建一个数组对象时,实际上就是创建了一个引用数组

    作用域

    作用域决定了在其内定义的变量名的可见性和生命周期,在Java中作用域由花括号的位置确定

    {
        int x = 12;
        // only x is available
        {
            int y = 23;
            //both x and y is available
        }
        //only x is available,y is out of scope
    }
    
    对象的作用域

    Java的对象不具有和基本类型一样的生命周期。当new创建一个Java对象时,它可以存活于作用域之外。

    {
        String s = new String("Just is a string")
    }// End of scope, but the refrence of s is still in memory
    

    由new创建的对象,只要你需要,就会一直保留下去

    基本成员默认值

    若类的某个成员(字段)是基本数据类型,即使没有进行初始化,Java也会让其获得一个默认值

    基本类型 boolean char byte short int long float double
    默认值 false '\u0000' (null) 0 0 0 0L 0.0f 0.0d

    但是局部变量不会有初始值,必须手动初始化

    Static关键字

    类数据或类方法代表数据和方法只是作为整个类,而不是类的某个特定对象而存在的;一个Static字段对每个类来说都只有一份存储空间,而非Static字段则是对每个对象都有一个存储空间;而Static方法的一个重要用法就是在不创建任何对象的前提下就可以调用它

    相关文章

      网友评论

          本文标题:第二章:一切皆对象

          本文链接:https://www.haomeiwen.com/subject/bsffxktx.html