1. 用引用操纵对象

    • Java里一切都被视为对象,通过操纵对象的一个"引用"来操纵对象。

      • 例如, 可以将遥控器视为引用,电视机视为对象。
    • 创建一个引用,不一定需要有一个对象与之关联,但此时使用该引用会出错。
      • 遥控器可以独立存在,但是没有电视机,使用遥控器没有意义。
  2. 必须由你创建所有对象
    • 存储数据或代码的地方

      • 寄存器:位于CPU内部,速度最快。JAVA语言无法直接控制寄存器。
      • 堆栈:位于DRAM中,通过栈顶指针来辨别内存是否被使用。创建程序时,JAVA系统必须知道存储在堆栈内所有项的确切生命周期,以便上下移动堆栈指针。
      • :位于DRAM中,与栈相比,编译器不需要知道存储在堆中的数据的存活时间。但是清理空间可能要花费更多的时间。
      • 常量存储:直接存放在程序代码内部。
      • 非RAM存储:可以将对象转化成存放在其他媒质上的事物(硬盘),在需要时,恢复成内存中的对象。
    • 特例:基本类型
      • 基本类型存储在栈中,变量直接存储值,而不是对象的引用。
      • Java中基本类型所占的空间大小不随机器硬件架构的变化而变化。
      • Java中所有数值类型都有正负号。
      • 基本类型 占用空间 最小值 最大值 包装器类型
        boolean 未定 未定 未定 Boolean
        void 未定 未定 未定 Void
        byte 8 bits -128 127 Byte
        char 16-bit Unicode 0 Unicode 216 -1 Character
        short 16 bits 2-15 215-1 Short
        int 32 bits 2-31 231-1 Integer
        long 64 bits 2-63 263-1 Long
        float 32 bits IEEE754 IEEE754 Float
        double 64 bits IEEE754 IEEE754 Double
      • 基本类型具有包装器类,可以在堆中创建非基本类型对象,用来表示对应的基本类型。
      • JAVA有自动包装功能。Character ch = 'x'; char c = ch;
      • BigInteger和BigDecimal支持任意精度的整数和定点数。
    • Java中的数组
      • Java确保数组会被初始化,而且不能再其范围之外访问。如果访问超出数组,会在运行时抛出异常。
  3. 永远不需要手动销毁对象
    • Java不允许隐藏较大作用域的变量,即在方法体花括号内部如果在出现一个花括号,那么这两个花括号中不允许定义相同的变量。

      注意:类的成员变量和方法体中的局部变量可以重复。
    • Java对象的生命周期不同于基本类型,它可以存活于作用域之外。 但是指向该对象的引用,在作用域之外将失效。
    • Java的垃圾回收机制会将没有被引用的对象所占的内存空间回收,因此不用担心内存泄漏的问题。
  4. 创建新的数据类型:类
    • Class 类名{类主体}该语法创建一个新的类。
    • 类名 对象名 = new 类名()该语法创建一个该对象的类。
    • 类的字段(数据成员)和方法(成员函数)
      • 字段可以是任意基本类型或者引用类型。如果是基本数据类型,即使没有显示初始化,Java也会进行默认初始化。如果是引用类型,则必须显示初始化该引用。

        注意: 仅当变量作为类的数据成员时,才会默认初始化;局部变量如果没有进行显示初始化,则编译时会报错。
  5. 方法、参数和返回值
    • 方法名和参数列表唯一地标识某个方法。
    • Java中的方法只能作为类的一部分来创建。只有通过对象或者类名才能调用。
    • return可以用在方法体的任意位置,用于退出方法;若返回类型不是void,还需要指定返回值。
  6. 构建一个Java程序
    • 采用域名反转,作为文件路径名,保证类命名无重复。
    • 使用import可以导入包(类库),java.lang下的类会被自动导入。
    • static关键字声明的变量或方法,会分配单一存储空间,并且不需要对象即可访问。可以通过任意对象或者类名.的方式进行访问,但是访问的是同一存储空间。
  7. 你的第一个Java程序
    • Java中独立运行的类的名字必须和文件名相同,而且必须包含一个mian()方法。
    • JDK中的javac可以用来编译程序,java可以用来运行程序。
  8. 注释和嵌入式文档
    • /*开始,以*/结束。其中的所有内容都会被编译器忽略。
    • //注释该行。
    • javadoc可以提取代码中特殊注释标签,并将毗邻注释的类名或者方法名抽取出来,并输出一个HTML文件。我们只需创建和维护单一的源文件,就能自动生成有用的文档。
      • 语法格式为/** 注释内容 */
      • javadoc只能喂public和protected类成员进行文档注释。默认在输出结果中看不到私有和default的成员,但是可以通过-private参数,显示私有成员。
      • @see 文档名可以在文档中生成一个超链接"See Also"条目。
      • @link 文档名 label用于行内,生成一个超链接"label"文本条目。
      • @docRoot 产生到文档根目录的相对路径。
      • @inheritDoc从当前这个类的最直接的基类中继承相关文档到当前的文档注释中。
      • @version 自定义文本 可以输入重要的版本信息,javadoc -version能够提取出该信息。
      • @author 自定义文本 可以输入作者相关信息,javadoc =author能够提取该信息。
      • @since允许指定代码最早使用的版本。
      • @param 参数名 描述参数名为方法中参数列表的标识符,描述为针对该参数的描述。
      • @return 描述用来描述返回值的含义
      • @throws 无歧义异常类名 描述描述该特殊类型异常在方法调用中出现的原因。
      • @Deprecated指出过时的旧特性,建议用户不要使用。
  9. 编码风格
    • “驼峰风格” :类名首字母大写,其后每个单词的首字母大写。
    • 变量名,引用名,方法名的首字母小写,其后每个单词的首字母大写

初读"Thinking in Java"读书笔记之第二章 --- 一切都是对象的更多相关文章

  1. 初读"Thinking in Java"读书笔记之第九章 --- 接口

    抽象类和抽象方法 abstract void f();抽象方法是仅有声明而没有方法体的方法. 包含抽象方法的类叫做抽象类,如果一个类包含了一个抽象方法,则该类必须限定为抽象类. 抽象类和抽象方法可以使 ...

  2. 初读"Thinking in Java"读书笔记之第七章 --- 复用类

    组合语法 将对象引用置于新类中,即形成类的组合. 引用初始化方法 在定义处初始化. 在类的构造器中初始化. 在使用这些对象之前,进行"惰性初始化". 使用实例初始化. 继承语法 J ...

  3. 初读"Thinking in Java"读书笔记之第六章 --- 访问权限控制

    包:库单元 包内包含有一组类,他们在单一的名字空间下被组织在一起. 通过import ***.***.*可以将某个包下的所有类导入到当前文件中. 每个Java源文件最多只能有一个public类,且名称 ...

  4. 初读"Thinking in Java"读书笔记之第五章 --- 初始化与清理

    用构造器确保初始化 构造器可以确保每个对象都会得到初始化,Java毁在创建对象时自动调用构造器. 构造器采用与类名相同的名称,因此并不适合"每个方法首字母小写的风格". 构造器默认 ...

  5. 初读"Thinking in Java"读书笔记之第八章 --- 多态

    再论向上转型 在某些方法中,仅接收基类作为参数,而不是特殊的导出类,会使得程序更容易扩展. 转机 方法调用绑定 前期绑定(编译期绑定):在编译期将一个方法调用和方法主体关联起来. 后期绑定(动态绑定或 ...

  6. 初读"Thinking in Java"读书笔记之第四章 ---控制执行流程

    true和false Java不允许将数字作为布尔值使用. 所有条件表达式都将布尔值作为判断条件,决定执行路径. if-lese 迭代 while,do-while,for为三个迭代语句. ,逗号操作 ...

  7. 初读"Thinking in Java"读书笔记之第三章 --- 操作符

    更简单的打印语句 导入自己编写的静态类库,即可使用print();打印 使用Java操作符 操作符:+,-,*,/,=,==,!=,+=,?:,%等 几乎所有操作符都只能操作"基本类型&qu ...

  8. [Java编程思想] 第二章 一切都是对象

    第二章 一切都是对象 2.1 用引用操纵对象   创建一个String引用: String s;   这里所创建的只是引用,并不是对象.   创建一个引用的同时便初始化: String s = &qu ...

  9. Effective Java读书笔记——第三章 对于全部对象都通用的方法

    第8条:覆盖equals时请遵守通用的约定 设计Object类的目的就是用来覆盖的,它全部的非final方法都是用来被覆盖的(equals.hashcode.clone.finalize)都有通用约定 ...

随机推荐

  1. 读取指定文件夹下的全部文件,可通过正则进行过滤,返回文件路径数组 -- 基于node的一个函数

    var fs = require('fs'); // 模板文件夹路径 var templateDirectory = '../src'; //相对于当前文件的相对路径 //var templateDi ...

  2. netty详解之io模型

    提起IO模型首先想到的就是同步,异步,阻塞,非阻塞这几个概念.每个概念的含义,解释,概念间的区别这些都是好理解,这里深入*nix系统讲一下IO模型. 在*nix中将IO模型分为5类. Blocking ...

  3. 第03章-VTK系统概述(1)

    [译者:这个系列教程是以Kitware公司出版的<VTK User's Guide -11th edition>一书作的中文翻译(出版时间2010年,ISBN: 978-1-930934- ...

  4. Java中string 创建对象时 “”和null的差别

    null和""的差别 问题一: null和""的差别 String s=null; string.trim()就会抛出为空的exception String s ...

  5. 接口json数据与数据库数据循环比对校验

    创建测试计划,加载数据库驱动: 线程组: csv配置元件: 注:Filename用的是相对路径,csv文件要与jmeter脚本文件在同一目录 JDBC连接配置: jdbc请求: 用户定义的变量: ht ...

  6. sudo,visudo

    visudo修改/etc/sudoers文件 用户名/%组名 主机名/主机别名/网段=(身份)命令 若(ALL)为空则为所有身份,即包含root身份 user1 ALL=/sbin/shutdown ...

  7. 【java】TreeSet、Comparable、Comparator、内部类、匿名类

    package com.tn.treeSet; public class Student { private String name; private int age; public Student( ...

  8. JavaWeb框架_Struts2_(五)----->Struts2的标签库

    1.  Struts2的标签库 1.1 Struts2标签库概述 Struts2的标签库可以分为以下3类:用户界面标签.非用户界面标签.AJAX标签; 2.1.1 Struts2标签库的分类和使用 1 ...

  9. ArcGIS API for JavaScript 4.2学习笔记[28] 可视域分析【使用Geoprocessor类】

    想知道可视域分析是什么,就得知道可视域是什么 我们站在某个地方,原地不动转一圈能看到的所有事物就叫可视域.当然平地就没什么所谓的可视域. 如果在山区呢?可视范围就会被山体挡住了.这个分析对军事上有十分 ...

  10. Chrome调试折腾记_(1)调试控制中心快捷键详解!!!

    转载:http://blog.csdn.net/crper/article/details/48098625 大多浏览器的调试功能的启用快捷键都一致-按下F12;还是熟悉的味道;  或者直接 Ctrl ...