Thinking in Java读书笔记(一)

笔记序言

作为一个学习Java的人怎么能不看一遍Java的Bible呢?在这之前刷过《Head First Java》,但始终觉得不够全面,而且因为是‘刷’,就没有留下任何笔记。于是趁当当搞活动马上买了一本《Thinking in Java》回来,开卷之余,顺手就写下这个笔记。翻开目录一共二十二章,暂时打算每五章发一篇笔记,因为视情况可能会跳过图形化界面的章节。

第一章 对象导论

  1. 访问权限关键字(access specifier) : public, private, protected

    饰词 本类 同一个包的类 子类 其他类
    public
    protected ×
    default × ×
    private × × ×
  2. 单根继承结构
    Java中所有的类最终都继承自单一的基类(Object)。

  3. 对象的创建和生命周期
    Java采用动态内存分配方式,通过new关键字来构建对象的动态实例(基本类型是特例),所有的对象都在堆 (Heap)中分配空间。当“垃圾回收器”的机制发现对象不再被使用时,会销毁对象,自动释放对象占用的内存。

第二章 一切都是对象

  1. 内存分配
    (1) 寄存器:最快的存储区,位于处理器内部,根据需求进行分配,在Java中不能直接控制。
    (2) 堆栈:位于通用RAM(随机访问存储器)中,堆栈指针下移分配内存,上移释放内存。存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中)。
    (3) 堆:一种通用的内存池(也位于RAM区),用于存放所有的Java对象。
    (4) 常量储存:常量值通常直接放在程序代码的内部,常量池存放字符串常量和基本类型常量(public static final)。
    (5) 非RAM存储:储存于硬盘等永久存储空间。基本例子:流对象&持久化对象。

  2. 基本类型
    Java每种基本类型所占存储空间的大小具有不变性,所有数值类型都有正负号,没有无符号类型。

    基本类型 大小 最小值 最大值 包装器类型 默认值
    boolean - - - Boolean false
    char 16-bit Unicode 0 Unicode 2^16-1 Character ‘\u0000’(null)
    byte 8bits -128 +127 Byte (byte)0
    short 16bits -215 +215-1 Short (short)0
    int 32bits -231 +231-1 Integer 0
    long 64bits -263 +263-1 Long 0L
    float 32bits IEEE754 IEEE754 Float 0.0f
    double 64bits IEEE754 IEEE754 Double 0.0d
    void - - - Void

    高精度计算类:BigInteger & BigDecimal

  3. 数组
    Java数组对象自动初始化为null,范围检查保证了数组无法越界访问。

  4. 作用域
    Java的作用域由花括号的位置决定。

  5. 对象的作用域
    Java对象可存活于作用域之外。在Java中我们只需要创建对象,一旦不再需要,垃圾回收器会让它们自行消失。


  6. class ATypeName { /* Class body goes here */}
    类中可设置字段(数据成员)和方法(成员函数)

  7. 方法、参数、返回值
    方法基本组成部分:名称在、参数、返回值、方法体。
    方法的参数列表指定要传递给方法什么样的信息。

  8. static关键字
    当一个事物被声明为static时,就意味着这个域或方法不会与包含他它的那个类的任何对象实例关联在一起。静态数据成员可以通过对象名来定位它,也可以直接通过类名访问。静态方法雷同,自行类比。

    class StaticTest {
          
    	static int i = 48public static void main(String[] args) {
          
    		StaticTest st = new StaticTest();
    		/*两种访问方式*/
    		st.i; //这里eclipse会建议使用下面那种静态方式访问
    		StaticTest.i;
    	}
    }
    
  9. 第一个Java程序
    java.lang默认导入到每个Java文件中,其所有类都可以被直接使用。
    类的名字和文件名必须相同。

  10. 编码风格
    “驼峰风格”

第三章 操作符

  1. 操作符“+”
    "+"在System.out.println()中意味着字符串拼接,当“+”后面紧接着一个非String类型的元素时,就会尝试把这个非String类型的元素转换为String。

  2. 别名问题

    class Tank {
          
    	int level;
    }
    
    public class Assignment {
          
    	public static void main(String[] args) {
          
    		Tank t1 = new Tank();
    		Tank t2 = new Tank();
    		t1.level = 9;
    		t2.level = 47;
    		System.out.println("1: t1.level:" + t1.level + ", t2.level:" + t2.level);
    		t1 = t2; 	//这里已经绑在一起了,两个引用指向同一个对象,老t1已经被回收
    		System.out.println("1: t1.level:" + t1.level + ", t2.level:" + t2.level);
    		t1.level = 27;
    		System.out.println("1: t1.level:" + t1.level + ", t2.level:" + t2.level);
    	}
    }
    /*Output:
    1: t1.level:9, t2.level:47
    1: t1.level:47, t2.level:47
    1: t1.level:27, t2.level:27
    */
    

    这里我们期望t1和t2是独立的,因此我们可以如此解决:

    t1.level = t2.level;
    
  3. 对象的等价性
    ==!= 比较的是对象的引用。equals()方法用于比较对象的实际内容是否相同,但equals()方法不适用于基本类型ÿ

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《Thinking in Java》是一本经典的Java编程入门教材,通过阅读该书可以系统地学习Java编程的基础知识和高级概念。阅读过程中,我结合自己的学习体验和实践,进行了详细的学习笔记。 首先,该书从基础语法开始介绍,包括数据类型、控制语句、数组等。对于初学者来说,这些基础知识是最基本的,通过书中的示例代码和解析,我能够更好地理解这些概念和语法规则。 其次,书中对面向对象编程进行了深入的讲解。通过学习面向对象的思想,我明白了类、对象、继承、多态等概念的含义和使用方法。同时,书中还讲解了接口、内部类、异常处理等较为高级的概念,极大地拓宽了我的Java知识面。 另外,该书还介绍了Java的常见类库和工具,如字符串操作、集合框架、输入输出、线程等。这些内容对于实际开发非常有用,而且书中的示例代码也能帮助我更好地理解和应用这些类库和工具。 此外,该书通过大量的实例和案例,生动地展示了Java编程的实战应用。这些实例涵盖了各种不同的应用场景,从简单的程序到复杂的项目,都有所涉及。通过分析这些实例,我不仅可以学习到实际编程的技巧,还能提高自己的解决问题的能力。 总的来说,读完《Thinking in Java》后,我对Java编程有了更深入的理解和掌握。通过学习笔记的整理,我不仅复习了各个知识点,还加深了对这些概念的理解。希望这份学习笔记能够帮助到其他想要学习Java的同学,让他们能够更快地入门和掌握这门编程语言。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值