thinkinginjava学习笔记02_对象

对象

1. 对象经过一个引用来操做,可是java中的对象是按值传递的,基本上能够在操做中认为对象自己,在内部结构中仍然要记得是对象实体的引用;如:String s = "abcd" ;这个语句中,s并非String对象:"abcd"自己,而是表示一个String对象的引用,这里即对象s的引用,可是当你使用s的时候,传递的是"abcd"这个对象,也就是引用的值;注意只能使用双引号;html

2. 使用new建立新的对象(除了上面提到字符串可使用一串带引号的文本直接建立以外),如:new String("abcd") ; 而且使用一个表示该对象类型的引用来给这个对象作命名(不然该对象将没有持久性,由于引用计数为0的对象会被垃圾回收机制回收),如:String s =  new String("abcd") ; java

当一个对象被建立时,对象引用存储于堆栈(stack)中,而对象的实体存储在堆(heap)中,在堆中的内容具备灵活的生命周期和存储分配,可是须要额外的存储分配和清理时间;函数

3. 除了对象引用,java中的基本类型也存放在栈(stack)中,基本类型建立时,直接建立变量本体,而非引用建立,变量存在于栈中,使用效率比较高;如:int a = 123; 建立一个整形变量123,a的内容即123;每一个基本类型也有对应的包装器类型,使用new来建立包装器类型的变量时,和对象的建立同样,如:int a = new Integer(123);此时,a是整形变量123的引用,123存放在堆中,而a做为123的引用存放在栈中;工具

特殊的,String并非基本类型,因为string的长度是可变的,而全部java中的基本类型,长度都是固定的,并不会随着硬件和操做系统而改变;操作系统

java中支持两个高精度运算的包装器类型:BigInteger和BigDecimal,这两个类型使用时没有长度限制,使用时自动扩展,相应的,运算速度会比较慢(ACM的同窗用的高精度计算大概就是其实现原理了);BigDecimal类使用的是十进制浮点数,不存在精度的问题;htm

java中的基本类型有:对象

整形:byte/short/int/long; 长度分别为:1/2/4/8字节;生命周期

整形默认类型是int,使用long类型时,须要在末尾添加L;内存

浮点型:float/double;长度分别为:4/8字节;ci

浮点型默认为double,使用float类型时,须要在末尾添加F;

逻辑性:boolean;长度为:1/8字节,即一个位;

字符型:char;长度为:2个字节

对应的包装器类型名字均为首字母大写的同名单词;

4. 对象的做用域由花括号:{}来界定,java中不支持使用一个较大做用域将变量隐藏的作法;

5. 使用class关键字建立类:class ATypeName { /*pass*/ };

    定义了类以后便可在类中设定两种类型的元素:字段(数据)、方法;字段能够是一个基本类型(没必要要初始化,java会确保有一个默认值,即将所在内存清0),也能够是一个具体对象的引用(必须是具体的对象引用);每一个对象都有用来存储字段的空间,普通的字段不能在对象间共享。经过点号来访问对象中的成员;

在局部变量中(并不是是类的一个字段),java不会初始化基本类型;使用未初始化的变量在java中是一个错误;

通常命名中,类的每一个单词首字母都是大写;

6. 方法

java中没有单独的函数,方法只能做为类的一部分建立,而且只能经过对象访问(除了静态方法等);方法定义时,使用如下形式:

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

调用一个方法时,须要传递须要的参数,参数列表中指定了参数须要什么类型的对象,必须指定每一个所传递对象的类型以及名字,方法调用时,传递的是对象的引用,而且引用的类型必须正确;可使用一个对象存储返回值,该对象的类型必须和返回值类型兼容(不必定同样);

方法通常命名时,第一个单词首字母小写;

猜想:java中的方法应该存在于类空间中,即全部的对象共享相同的方法实体;

7. 静态数据和方法

经过static关键字申明一个静态数据或者方法,不只实例化后的对象能够访问,也可使用类名直接访问;不管是静态数据和方法,全部对象都共享一样的实体,当一个对象对静态数据作出改变,其余对象访问该静态数据也发生变化;

8. java程序的构成

每一个java程序必须存在一个类和文件名相同,而且该类中存在一个main()方法:

public static main(String[] args){

}

java使用先编译后解释的方式来实现跨平台;java程序首先使用javac将其编译成字节码(.class),而后使用java命令解释该字节码;

经过javac命令将程序编译成字节码,再经过java命令运行;在这以前,首先须要配置环境变量(以osx为例):

export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$PWD:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar

9. 注释和解释文档

java中可使用c语言风格注释;

java有一套文档维护工具:javadoc;javadoc能够查找程序中的特殊注释标签,不只能够解析由这些标签标记的信息,还能够将注释的类名或方法名抽取出来。除了注释的内容,java还使用了以@开头的文档标签,javadoc识别这些注释和标签,而且自动生成程序文档;

javadoc共有三种文档:类、域、方法;全部的文档都在相应内容的定义以前,如类注释正好在类定义以前;javadoc只会为public和protected进行文档注释,而忽略private;

javadoc生成一系列html文件,其中打开以ClassName.html命名的网页便可看到生成的文档;

感受比较重要的标签:@param;@return;@throws;

相关文章
相关标签/搜索