天天看点

2.一切都是对象

    Java是“纯粹”的面向对象设计语言。

2.1 用引用操纵对象

    Java中的一切都被看作是对象,操纵内存中元素的操纵标识符是对象的“引用”,只要抓住这个“引用”

,修改这个引用,就能对对象进行操作。可以只创建引用而无对象关联(String s;),但是如果向s发送消息时就会出现错误。

    注:字符串可以用带引号的文本初始化。

2.2 必须由你创建所有对象

    Java提供了大量类型(String s = new String(“abc”)),我们还可以自行创建对象。

对象的存储位置:

    1.寄存器:位于处理器内部,存储最快,但寄存器数量有限,且无存在感。

    2.堆栈:位于RAM(随机访问存储器)中,堆栈指针下移分配新内存,上移释放内存;且堆栈只存放对象引用,不存放java对象。(Java系统必须知道堆栈中所有项生命周期)

    3.堆:一种通用的内存池,也位于RAM中,存放Java对象,不需知道内项的生命周期,new一个对象时会自动在堆里进行存储分配

    4.常量存储:常量值永远不会被改变,可以放到代码内部,嵌入式系统中可以放在ROM(只读存储器)中。

    5.非RAM存储:将对象转化为可存放在其它媒介上的事物,数据存活于程序外,不受控制。例:流对象,对象转化为字节流被发送;持久化对象,对象被存放于磁盘上,程序终止也不改变其状态。

基本类型:

    Java中小的、简单的变量可以不用new来创建,而是创建非引用的“自动”变量,其直接存储值并置于堆栈中,这就是基本类型。基本类型占存储空间大小不变,且更加高效。

2.一切都是对象

    注:数值类型都有正负;boolean存储空间未指定,仅有字面false/true;基本类型有包装类,在堆中可以创建非基本对象表示基本类型(int c=3;Integer num= c/2; 包装类可以接受基本类型的数据,也可以直接对包装类型进行操作)。高精度数字BigInteger(支持任意精度的整数)和BigDecimal(任何精度的定点数)属于“包装器类”,无对应基本类型,但作用于int和float的操作也能作用于这两个类。

Java数组:

    确保数组被初始化,在它范围内被访问,代价是少量内存开销和运行时下标检查。创建数组对象,每个引用都会被初始化,null,使用一个还是null的引用运行时会报错。

2.3 永远不需要销毁对象

    作用域:决定了其内部定义的变量名的可见性和生命周期,作用域里定义的变量只可用于作用域结束之前。

    {

String s = new String("iting") 

}

    s的引用只在这个作用域内有效。

    Java的垃圾回收器监视这些对象,确认不会再被引用后,释放这些对象的内存空间,消除“内存泄漏”问题发生。

2.4 创建新的数据类型:类

    类的格式:class TypeName //类的关键字和类的名称

    类中设置两种类型:字段(数据成员—基本类型(默认初始化,有默认值),或对象引用(必须初始化,new的方式与实际对象关联))和方法(成员函数)

    注意:变量的初始化只用于类成员,方法内的局部变量不会自动初始化,使用时就需要赋值。

    Class DataOnly{

        int i ;

        double d ;

        boolean b ;

}

    引用对象成员:

    DataOnly data= new DataOnly();

    data.i=22 ;

2.5 方法、参数和返回值

    参数列表:要传给方法的类型和名称

   return 返回值:1.表示“已经做完,离开此方法”;2.调用方法后从方法返回的值。例:void nothing() { return ; }这里return只是用来退出方法,可在任何地方返回。

    调用方法:发送消息给对象,int x= a.f(),发送消息f()给对象a。

2.6 构建一个Java程序

    项目命名:net.mingView.utility.foibles

                    (扩展名.域名.项目名.包(层))

    import指示编译器导入包(类库),import java.util.ArrayList,通配符“*”可以达到使用其中几个类的目的,import java.util.*;

    static关键字:1.只想为某一特定域分配单一存储空间,而不去考虑是否创建、究竟要创建多少对象;2.某个方法不与包含它的类的任何对象关联在一起(未创建也能调用方法。)

    class StaticTest {

        static int i = 22 ;

}

StaticTest st1 = new StaticTest();

StaticTest st2 = new StaticTest();

st1.i和st2.i指向同一存储空间

静态变量和静态方法的引用:1.通过对象创建来引用;2.类名直接引用。static作用于某个方法,不创建对象就可以调用,对main()方法至关重要,因为这个方法是运行一个应用时的入口点。

编译和运行时,首先安装JDK开发环境(安装并设置环境变量),javac进行编译,java进行运行

2.8 注释和嵌入式文档

    “”和“//”两种方式

    注释文档:将代码和文档“链接”起来,以便于当代码修改时,文档也相应修改。

    javadoc:提取注释的工具,解析注释标签的信息,并抽取类名或方法名。

    javadoc使用方式:1.文档标签:都以“@”字符开头,独立文档标签置于注释行最前面,行内文档标签可以位于注释的任何地方,但要在花括号内。2.嵌入式HTML:通过“@see”,"@link", "@docRoot"等javadoc标签生成HTML文档,传送HTML命令。

2.9 编码风格

    “驼峰风格”代码。类名首字母大写,每个内部单词首字母大写;方法、字段和对象引用也是一样,只是首字母小写。