`
laststand
  • 浏览: 10383 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Thinking in Java 学习笔记 四

阅读更多

内部类,简单而言就是一种代码隐藏机制:将类置于其他类的内部。具体的指明这个对象的类型:OuterClassName.InnerClassName。内部类对象在创建时就与外围环境建立联系,可以无条件访问外围对象所有成员 。内部类对外围类成员的访问权是怎么做到的?当外围类创建内部类对象的时候,内部类对象必定会秘密捕获一个指向外围类的对象的引用。内部类是非static的,这个实现细节由编译器来完成。.this对外围对象引用,.new创建内部对象。Interface的方法默认设为public。


对于声明为static的内部类,在引用的时候,创建内部类对象无需先创建外围对象,而内部对象也不能引用外围非static的成员。


对内部类最大的疑问就是为什么需要内部类,这项特性有什么是其他特性解决不了的适应区域么?内部类最吸引人的一点:可以独立地继承一个接口的实现,无论外围类是否已经实现,对内部类都没有影响。(作为对一个多重继承机制的补充,这项特性可以确保对一个接口的纯粹实现,而不必担心因多重继承导致的混乱)


Java最惹人争议的问题就是没有类似指针的机制,这样导致无法使用callback回调。
内部类对象中的闭包以及回调实现并不理解,希望留待以后验证。


对于一种语言,如Java应该如同对待一款软件系统一般来看待它:当你使用winxp的时候,你觉得很好很强大,win7你发现更好,有了更多的特性。但是对java你所使用的东西确一直停留在3、5年前的经典书籍的语法特性,Java SE5发了,6发了,7也要发了,这些个新的特性你会去用么?


程序的复杂性,主要是程序不能预知会产生多少对象及其生命周期。对于对象的持有(因为不能只是通过创建对每一个对象的命名来持有),java提供了一套使用容器(类似STL),名为Collection,包含了基本类型List、Set、Queue、Map(Google Collection可以尝试使用,有更大的惊喜)Set对每个值都只是保存一个对象,Map允许将某些对象与其他对象关联起来的关联数组,Java容器类都可以自动地调节自己的尺寸(这点与ArrayList类似,这个是最基本最可靠的容器了)
对于ArrayList而言,保存的都是Object类(java中多态的伪实现也是如此),所以你可以随便将各个类型的对象add进去,如论编译还是运行都没有问题。所以在取出时(get)你得到的也只是Object的引用,必须将其转为需要的类型(强制转型,不然使用时语法错误)。如果你将取得的A类对象强制转为B类对性,那就要悲剧。为了防止这种现象,可以使用预定义的泛型,ArrayList<A>这样的好处在于在编译期就能防止错误类型放入 。


这就是一个编译时错误与运行时错误,当然我们期望在编译时就解决错误,而绝非是运行时。向上转型也是允许的。
Java容器的作用为保存对象。分为两类:
1) collection,服从一或多条规则的许留:List顺序保存;Set不能有重复;Queue按照队列来处理。
2) Map。一组成对的“键值对”对象,语序你使用键(key)来查找值(value)
尽管并非如此,你大部分编程实践都在与这些接口打交道。这些都有扩展,如ArrayList至于List,HashMap、TreeMap之于Map等等。

 

分享到:
评论

相关推荐

    Thinking in java学习笔记

    《Thinking in Java》是一本深度解析Java编程语言的经典著作,其深入浅出的讲解和丰富的实例使得读者能够全面理解Java的精髓。以下是对书中部分关键知识点的总结: 1. **Java 泛型**:泛型是Java SE 5.0引入的重要...

    Thinking in Java 自学笔记——第二章 一切皆对象

    ### Thinking in Java 自学笔记——第二章 一切皆对象 #### 重要概念解析 ##### 2.1 用引用操纵对象 在Java中,一切都被视为对象,这意味着无论是字符串、数字还是其他数据类型都可以被视为对象来进行操作。当...

    Thinking in Java读书笔记

    ### Thinking in Java 读书笔记知识点总结 #### 一、万事万物皆对象 1. **对象存储位置** - **寄存器**:程序无法直接控制。 - **栈(Stack)**:存储基本类型数据和对象引用,但对象本身不在此处。 - **堆(Heap)...

    王者归来之Thinking in java读书笔记

    《王者归来之Thinking in Java读书笔记》是对Bruce Eckel的经典之作《Thinking in Java》第四版的深度学习与总结。这本书是Java程序员的必备参考书,它深入浅出地阐述了Java语言的核心概念和技术,旨在帮助读者理解...

    Thinking in Java 自学笔记——第一章 对象导论

    Thinking in Java 自学笔记——第一章 对象导论 本章节总结了面向对象程序设计(Object-oriented Programming, OOP)的基本概念和原则,以帮助读者更好地理解 Java 编程语言。以下是对标题、描述、标签和部分内容的...

    Thinking In java学习笔记

    ### Thinking In Java 学习笔记知识点总结 #### 面向对象编程(OOP)的重要性及其影响 面向对象编程(OOP)在软件开发领域产生了深远的影响。它不仅提高了开发效率和降低了维护成本,还简化了设计流程,使得编程任务...

    thinking in java 读书笔记(五)

    《Thinking in Java》是Bruce Eckel的经典之作,它深入浅出地讲解了Java语言的核心概念和技术,对于初学者和有经验的开发者来说都是极好的学习资源。这篇读书笔记主要聚焦在第五部分的内容,可能涵盖了类、对象、...

    Thinking in java读书笔记.docx

    这些只是《Thinking in Java》中的一部分内容,全书还包括类、接口、多态性、异常处理、集合框架、并发编程等多个主题,是Java学习者的宝贵资源。理解和掌握这些基础知识是成为一名熟练Java程序员的关键步骤。

    Thinking In Java的笔记_第一章

    通过以上概述,《Thinking In Java》第一章深入浅出地讲解了Java的基础概念,涵盖了面向对象编程的核心原则、数据的存储与管理、基本类型与包装类的使用,以及高精度数字的处理技巧,为初学者和进阶学习者提供了宝贵...

    java基础补足和thinking In Java学习.rar

    JAVA学习日记---Thinking in Java学习笔记 第5章总结 第五章 初始化与清理 5.1 用构造器确保初始化 1.构造器命名必须与类名相同 2.构造器也是方法,满足方法的各种特征,无参数的构造器称为默认构造器,默认构造...

    Java学习笔记.pdf

    我的学习笔记的书本课程来自于:《Thinking in Java》和《Head First Java》 视频课程主要来自于:廖雪峰老师《Java 基础课程》 如涉及版权侵犯请联系我更正。 初来乍到,文笔稚嫩,学识浅薄,请多指教。

    包括JAVA夜未眠,thinkingJAVA和学习笔记

    在IT领域,特别是Java编程的学习过程中,"JAVA夜未眠,thinkingJAVA和学习笔记"这一主题涵盖了许多核心概念和实践技巧。以下是对这些资源的详细解释: 首先,"Java夜未眠"可能指的是一个深入探讨Java编程的书籍或...

    中文版Thinking in Java 4th编程思想(笔记)

    《中文版Thinking in Java 4th编程思想》是学习Java编程的重要参考资料,它深入浅出地介绍了面向对象编程的核心概念。下面将详细解读其中的主要知识点。 1. **对象导论** - **万物皆对象**:Java编程的核心是对象...

    《Thinking+in+Java》读书笔记共38页.pd

    总之,《Thinking in Java》的读书笔记结合了广泛的Java知识和实践应用,从基础知识到高级主题,从理论到实践,为学习和提升Java编程技能提供了全面的资源。无论是对初学者还是经验丰富的开发者,这都是一个宝贵的...

    用于存放java源码和Thinking of Java的资源

    其次,"Thinking in Java"的资源可能包括了课后练习、习题解答、代码注释或者其他辅助学习材料。这些资源对于自学Java的人来说极其宝贵,它们可以帮助检验学习效果,解决遇到的问题,并提供额外的实践机会。通过完成...

    Java JDK 6.0 学习笔记.pdf

    **Java JDK 6.0 学习笔记** Java JDK(Java Development Kit)是Java编程语言的核心组件,包含Java运行环境、编译器、类库以及各种工具,是开发者进行Java程序开发的基础。Java JDK 6.0是Oracle公司发布的一个重要...

    19个JAVA学习的资料,包括电子书,练习题!

    6. **Java学习笔记.doc**: 这可能是个人或教师的教学笔记,可能包含学习心得、重点难点解析,对学习者来说是宝贵的参考资料。 7. **2011最新整理Java练习题.doc**: 提供了最新的练习题目,反映了当时Java技术的发展...

    5本java学习用书

    3. **《Thinking in Java》**:Bruce Eckel的这部巨著深入细致地介绍了Java语言,不仅涵盖基础,还涉及高级特性如多线程、网络编程、反射等。它的特点是理论与实践相结合,通过大量的实例来阐述概念,是提升Java技能...

Global site tag (gtag.js) - Google Analytics