Think in java笔记(一)

Introduction to Objects & Everything is an Objects

1.万物皆对象

2.upcast是安全的

3.downcast不是绝对安全的,SE5之前,由于容器类只能容纳Object,所以当你将一个对象引用丢进容器,这个对象就upcast成Object,丢失了原有的信息。

4.但是SE5允许利用generics(泛型)可以安全地downcast S例如ArrayList<Shape> shapes  = new ArrayList<Shape>()

5.java采用在一个内存池里(堆)动态创建对象,即动态分配内存的方式。

6.String s; 仅仅创造了一个String的引用,而非对象

 String s = "asdf";

7.五个存放数据的地方,寄存器位于CPU速度最快,但数量有限;堆栈位于RAM,指针向下移创建对象,向上移释放对象,速度仅次于寄存器,引用存放于此,而非对象,而且java必须知道对象的生命周期;堆,通用的存放位置,通常new出来的对象就存放在这里,程序运行时才会分配空间,但是代价是慢,堆不存在堆栈的限制;常量存储区顾名思义,储存常量的ROM;最后是外部存储区,例如流对象和持久化对象。

8.基本类型储存在堆栈中,变量直接操作数值,不像new出一个对象一样将引用存储在堆里。

9.包装类可以让你在堆new出一个非基本类型的对象,就像通常new对象一样。

char c = "x"; // 在堆栈里,属于基本类型

Character ch = new Character(c); //包装类,在堆里

10.创建一个有多个对象的array,相当于创建了对象的引用,引用会被初始化为null,即没有指向任何对象,注意,未初始化的引用是禁止使用的。

11.{String s = new String("a string");} 引用s在括号末端就没作用了,但是String对象还在占据内存,此时java的垃圾回收器就起作用了。

12.类的定义大体都类似,但是java只能对类的数据成员初始化(假设你没有进行初始化),对局部变量需要手动初始化。方法需要明确返回类型,同时接受返回值时的变量也要声明为同类型的,(python自动处理)。如果不想要返回对象,那么可以使用void,return的唯一作用就变成了退出程序。

ReturnType methodName (/* Argument List */) {
    /* Method body*/
}
View Code

13.static关键字,无需创建类的对象也可以call的方法或者数据成员,使用static。

class StaticTest {
    static int i = 47;  //static field
}

StaticTest t1 = new StaticTest();
StaticTest t2 = new StaticTest(); //t1& t2 share the same i

StaticTest.i++; //ONLY works with static field 
View Code

 

posted @ 2019-06-24 17:29  waynr  阅读(342)  评论(0编辑  收藏  举报