2.1 用引用操作对象
Java中几乎一切都是对象,操纵对象的是引用 String s;实际上只是创建了引用,并不是对象。
2.2必须由你创建所有对象
对象的存储:
1. 寄存器,最快,处理器内部,数量少,不由用户控制
2. 堆栈,栈结构,位于RAM随机访问存储器中,指针上移释放内存,下移分配内存。需要知道栈内项的确定的生命周期,一般不存对象,对象引用会存储于此。
3. 堆,通用内存池,RAM中,用于存放所有java对象。New代码执行完后,自动分配内存。灵活性高,但是在清理和存储分配时需要比栈更多的时间。
4. 常量存储,常量值直接存于程序代码中,不会被修改,存于rom(只读存储器)中
5. 非ram存储器,数据存储于程序之外,如流对象和持久化对象(存放于磁盘上)。对象转换成可以存放在其他媒介上的事物,在需要时,可恢复成常规的、基于ram的对象。
Java每种基本类型所占存储空间的大小是固定的,并不随机器的硬件结构的变化而变化(java可移植性高的原因之一)。
Boolean存储空间没有指定大小,true和false。
char-16bits,byte-8,short-16,int-32,long-64,float-32,double-64.
基本类型对应有包装器类(Byte,Short等)
java提供的两个高精度类:BigInteger(任意精度的整数) BigDecimal(任意精度的定点数) 用速度换取了精度。
数组,创建数组对象时,实际上创建了一个引用数组,并且每个引用会被自动初始化为null。在使用任何引用前,必须要为其指定一个对象。
2.3 永远不需要销毁对象
作用域(scope)由{ }来限定,表示了变量的可见性和周期
{int x=12;
{int x=10;//java中是非法的,c中允许}
}
java中的垃圾回收器自动决定 对象何时销毁。
2.4 创建类
类包括字段(数据成员)和方法(成员函数)。字段如果是某个对象的引用,必须初始化。基本数据类型会有默认的值,自动初始化。
2.5 方法、参数、返回值
方法只能通过对象来调用, int x = a.f(); 方法调用的过程是消息发送的过程。向a发送消息f();
程序似乎是一系列带有方法的对象组合,这些方法以其他对象为参数,并发送消息给其他对象。
2.6 构建一个java程序
java中名字可见性问题,采用反转域名(com.hp.java),c++中使用的是名字空间。
import导入一个包,或类库
static关键字
static放在字段之前,class StaticTest{staticint i=4;}在创建两个类对象时,他们共有一个i,i只有一份存储空间。使用类名引用static字段,是首选。 StaticTest.i
static放在方法前边,在不创建任何对象的情况下,也可以引用这个方法。
2.7第一个java程序
java.lang是默认自动导入的包,其中的输出函数,学会查找文档
2.8 注释和嵌入式文档
/* */ 和//最传统的两种
javadoc用于提取注释的工具,是jdk安装的一部分,采用编译器中的特殊技术,查找程序内的特殊注释标签。输出是一个html文档
javadoc的语法/** */
2.9 编码风格
驼峰式,类的首字母大写,其他方法、字段首字母小写
命令行参数,eclipse中,右键run configuration 中的arguments
遗留问题:用命令行编译成功,执行时报错,明天再试。
解:问题在于我的文件里有package,类似于这篇文章中的问题。
http://afantihust.blog.51cto.com/2231549/684608