Thinking in java

一切都是对象

2017-10-31  本文已影响0人  谁吃了我的薯条

1、用引用操纵对象

在java中几乎一切都被看做对象,我们操作的标识符实际上只是对象的引用,类似于与电视与遥控器的关系,我们通过遥控器(对象)来操作电视(对象),同时应用可以独立存在;即一个应用,并不比需要一个对象与其相关联;
比如:

public class Main {

    public static void main(String[] args) {
        Tv tv;
   // 此处创建的仅仅使应用,而没有将其赋予对象
        System.out.println(tv);
    // 会报错,tv 没有初始化

    }
}

class Tv{
    private float price;

    public void changeTV(){
        System.out.println("change the TV show");
    }
}

因此最好的方法为,一旦创建了应用,即刻为其提供操作的对象---初始化;

2、对象由自己创建

创建对象一般采用new 关键字
应此有:

        Tv tv=new Tv();
        System.out.println(tv.getClass());

2.1、对象的存储位置

可存储位置有5种
1.寄存器:速度最快的存储区
2.堆栈:位于RAM中,存放的是对象的引用,同时,堆栈遵循先进后出的原则,指针向上则为释放内存,向下则为分配新的内存;
3.堆:一种通用的内存池,用于存放java的所有对象;
4.常量储存:直接存储在程序内部;
5.非RAM存储:流对象和持久化对象,将对象转化为可以存放在
其他媒介的事物,如Serilizable 接口 和字节流;

2.2、基本类型
java 共有八大基础数据类型,由它们创建的变量,直接存储值,保存在堆栈中;(创建的时候,创建的是非应用的自动变量)
每种基本变量都有已经确定了自己的存储空间大小,其大小不会改变;


每个基本类型都有默认的包装类;

2.3、java中的数组
java创建数组时实际上创建的是引用数组,并且每个数组会被自动初始化,null,java编译此关键字,表示该引用未创建任何对象;

3、对象的自动清理

3.1、作用域

    {

        int a=9;
        {
            int c=12;
            System.out.println(a);
            System.out.println(c);
        }
        System.out.println(a);
        //System.out.println(c); out of scope

    }

    {
        int a=9;
        {
            int a=12; // Illegal
            a=12;    //   重新赋值
        }
    }

3.2、对象的作用域
java的对象和基本类型具备不同的生命周期,它可以存活在作用域之外;

 {
            String s=new String("hello");
            //end of scope
        }

引用s的作用域已经消失,但是其指向的对象还继续占据内存空间;
而后靠垃圾回收期对闲置对象进行清理;

4、类的创建

class关键字:表示将要创建一个类;
类拥有两种类型的元素,方法以及字段;
即成员变量和成员函数
成员变量可以是任意类型的对象,也可以是基本对象;


class Tv{
    float price;
    float width;
    double height;
    ...
}

Tv tv=new Tv();
想要修改和获得成员变量:

   {
        Tv tv=new Tv();
        System.out.println(tv.price);
        tv.price=12.0f;
        System.out.println(tv.price);
    }

0.0 //默认值
12.0 //所附值

每个基本数据的成员变量可以不进行初始化,因为已经存在默认值了,
基本成员变量默认值:(局部变量不符合...)

5、方法、参数与返回值

java子程序(函数),使用方法来命名,其基本组成部分包括:
名称、参数、返回值和方法体;

 ReturnType methodName(/* Argument list */){
     method body
}

java的方法只能作为类的一部分来创建和调用;
若无返回值,则采用void作返回类型(可以采用 return关键字结束);

上一篇下一篇

猜你喜欢

热点阅读