《Java编程思想》学习记录:一切都是对象

一切都是对象

前言:本文主要是我在《Java编程思想》一书中的学习心得体会,所以里面会有大量的书中引用。本文原创于ThinMoon的个人博客

一切皆对象

一切皆对象是什么意思,我想在我目前的阶段还是无法体会到的,这句话只有在做过大量项目、学习的更加深入后才能够有更加透彻,深层次的体会。Alan Kay总结的五个基本特性我摘录在此与君共勉!

  • 万物皆对象
  • 程序是对象的集合,他们通过发送消息来告知彼此所要做的
  • 每个对象都有自己的由其他对象所构成的存储
  • 每个对象都拥有其类型
  • 某一特定类型的所有对象都可以接受同样的消息

Java用reference(引用)操纵对象

我们来看个例子
String s
这里我们其实只是创建了一个引用,并没有真正的创建出一个对象,而我们通常是使用new来创建一个新的对象的。但是此例较为特殊我们可以有以下两种方式进行创建新对象

String s = "ThinMoon";
String s = new String("ThinMoon");

所以若我们在创建了一个引用时却没有去给他指定一个对象,那么当我们向它发送一个消息时便会报错!
一个安全的做法是创建一个引用的同时便进行初始化

Java永远不需要销毁对象

拥有自己的垃圾回收器的Java就是舒服、任性!

作用域问题

{
   int x = 12;
 {
   int x = 96;
 }
}

这样的代码在Java中是不允许出现的
与上面不同的是对象不具备和基本类型一样的生命周期,对象是可以存活于作用域之外的所以便有了令人头疼的释放内存的事情
但是由于Java中有垃圾回收器的存在,所以你new出来的对象只要你需要那么它便会一直存在,而当你不需要时回收器便会在一定时间去处理它。从而消除了内存泄漏的问题!

  • 基本类型
    boolean, char, byte, short, int, long, float, double, void
  • 不用new来创建变量,而是创建一个并非是引用的 “自动” 变量。这个变量直接存储 “值”,直接置于stack中。
  • Java会确定每种基本类型所占的存储空间的大小(这也是Java程序比别的语言编写的程序移植性更好的原因之一)。
  • 为了可以在堆中创建一个非基本对象,基本类型都具有相应的包装类(包装类类名就是将基本类型首字母大写其中char-->Character, int-->Integer)。
  • Java还提供了两个用于高精度计算的类:BigIntegerBigDecimal
  • 数组
  • Java确保数组会被初始化,且不能在他的范围之外被访问(以少量内存开销为代价换来安全性)。
  • 创建一个数组对象时就是创建了一个引用数组,每个引用自动被初始化为null
  • class
    创建新的数据类型!
  • 类中有两种类型的元素:字段(数据成员)和 方法(成员函数)
  • 类中的数据成员Java会确保它获得一个默认值(但此方法不适用于局部变量!及并非类中的字段定义得到的变量可能是任意值的)。若变量未被初始化Java编译时会报错。
  • 方法、参数、返回值
  • Java中的方法只能作为类的一部分来创建,方法只有通过对象才能被调用。
  • 在参数列表中必须指定每个所传递对象的类型及名字,传递实际上也是引用。
  • static
    static有两种使用情形:
  1. 只想为某特定域分配空间,不去考虑要创多少对象。
  2. 希望某个方法不与包含他的类的任何对象关联在一起。
  • 只有一份存储空间
  • 可以用对象去引用它,也可以用类名直接引用。
  • Java程序

默认导入java.lang


END.......

你可能感兴趣的:(《Java编程思想》学习记录:一切都是对象)