您的位置:首页 > 编程语言 > Java开发

Think in Java反刍笔记(4)---一切都是对象(第二章)

2016-03-01 10:16 429 查看
    
         我们接着看Java最基础的语法构成,这里还不是语法,只是看一下语法要符合什么样的规则。

2.1 用句柄操作对象
       在Java中,尽管一切都是对象,但操纵的标识符实际是指向一个对象的”句柄“(Handle)。就相当说是我如果我想玩游戏机,不是直接去操作那个终端,而是去操作那个游戏机的线,我能操作的那跟线就是游戏机的句柄。
       如:String s;  这句话其实只是句柄,并不是对象,安全的做法是:创建一个句柄时,请无论如何都进行初始化。
       
       个人注解:在Java中万物都是对象,但是如果想要操作这个对象,就必须要有一个入口或者说方式去操作对象。如:有一只兔子,这只对象能跑,能吃,能玩。兔子是对象,属性是跑,吃,和玩,然后如果想要让它跑,那么必须有一个能够接受指令的方法或者函数(也就是句柄)。

   
2.2 所有对象都必须创建
       创建句柄时,我们希望它同一个新对象连接。通常用new 关键字达到这一目的。new 的意思是:"把我变成这些对象的一种新类型"。所以在上面的例子中,可以说:String s = new String("asdf");   这句代码的意思是:创建一个对象s,并初始化字符串。

       数据保存到什么地方去了?
       程序运行时,数据有几处保存数据的地方:
           1:寄存器,这是最快的区域,因为它在处理器内部。但是寄存器的数量十分有限,所以寄存器根据需要由编译器分配。我们无法控制。(寄存器跟内存区别可以自己查阅。)
           2:堆栈,是一种特殊的串列形式的数据结构,它的特殊之处在于只能允许在链接串列或阵列的一端(顶端)来进行加入资料(PUSH)和输出资料(pop)的运算。其按照后进先出的原理运作。驻留与常规RAM区域,但可通过它的“堆栈指针"获得处理的直接支持。堆栈指针向下移动,会创建新的内存;向上移动,则会释放这些内存。这种方式特别快,而且有效。仅次于寄存器。堆栈可以用链表和数组两种方式实现,
           3:堆(Heap)。常规用途的内存池。其中保存了Java对象。“内存堆”或“栈”最吸引人的地方在于编译器不必知道从堆里分配多少存储空间,也不必智安东存储的数据要在堆里停留多长时间。因此,在堆保存数据时会得到更大的灵活性。要求创建一个对象时,只需用new 命令编制相关的代码即可。执行这些代码时,会在堆里自动进行数据的保存。
            4:静态存储。
            5:非RAM存储。个人注解:这类存储的是流式对象和固定对象。好吧,书中并为流式对象和固体对象做解释。不过请看后面:对于流式对象,对象会变成字节流,通常会发给另一台机器。至于那个固定对象,也就可以不求甚解了。

2.2.2  主要类型
      Java有八种特殊类型,也就是主要类型,分别是:byte、int、char、long、float、double、boolean、short等八种基本类型,又被称为内置数据类型。

以下是八种基本类型的介绍:
 
     
















       JAVA基本类型尤其封装类型,其分别对应为:Byte,Character,Short,Integer,Long,Float,Double,和Boolean。 
       封装,是Java的重要核心思想之一,封装也是对面向对象这一思想很好的提现。
       在
4000
很多情况下,我们需要对数据进行转换,如一字符串“123”转成int类型的123,或者123转成“123”字符串,如:
         1:int num = 1;
               Integer inte = new Integer(num);
               JDK在添加了自动装拆箱的功能之后,我们甚至可以Integer integer = 1;
              
               封装类转基本数据类型:
                     Integer inte = new Integer(2);
                     int num = inte.intValue();
                   也可以直接int num = inte,Java会自动拆箱来完成赋值。
 

        如果将String类型字符串与基本类型进行转换:
               String age = "1234";
                int age = Integer.parseInt(age );
    
       
2.2.3 高精度的数字计算
         用于高精度的计算的有:BigInteger和BigDecimal。他们大致被划分为“封装器”类型。
         BigInteger支持任意精度的整数。可精确的表示任意大小的整数值,同时在运算过程中不会丢失任何信息。
         BigDecimal 支持任意精度的定点数字。在大部分情况下,用于进行精确的币值计算(经验,币值计算一般都用这个)。

2.2.4  其他的         
        Java 里的全部工作就是定义类,制作类的对象以及将消息发给那些对象。
       每个对象都为自己的数据成员保有存储空间:数据成员不会在对象之间共享。          

     static 关键字
          通常,我们创建类时会指出那个类的对象的外观与行为。除非用new 创建那个类的一个对象,否则实际上并未得到任何东西。只有执行了new后,才会正式生成数据存储空间,并可使用相应的方法。
         
          对方法来说,static 一项重要的用途就是帮助我们在不必创建对象的前提下调用那个方法。

 
最后:我就粘贴一个HelloWorld的类吧,一看便知:
             


           
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: