Think IN JAVA ①

本文介绍了《Think in Java》一书的前两章节内容,涵盖了对象的概念、Java的基本特性、数据类型、作用域等基础知识,并对面向对象编程进行了初步探讨。

 昨天开始在网上在线看Think IN JAVA的,工作之余在看,或许是这几天刚好没啥事,顺便看看,反正就是在看这本书,在家也看。

 两天看了两章了,速度够快的,但是没什么感觉,都是最基础的思想疏导,我简要做一下笔记,反正这两章对于我目前来说没多大作用,也不是白看,存在即是合理的,但是对于没有java基础的人来说,理解这些东西不是那么容易滴,好,我做如下简约的记录:

第一章:对象入门

1.抽象的进步

所有编程语言的最终目的都是提供“抽象”方法。

五大特征:

⑴所有的东西都是对象。

⑵程序是一堆对象的组合。

  ⑶每个对象都有自己的存储空间,可容纳其他对象。

⑷每个对象都有一种类型。

⑸同一类所有对象都能接收相同的消息。


     1.2 对象的接口

在面向对象的程序设计中,尽管我真正要做的是新建各种各样的数据“类型”(type),但几乎所有面向对象的程序设计语言都采用了“class”关键字,提出了“问题空间”和“方案空间”的概念。


1.3实现方案的隐藏

Java采用三个显示(明确)关键字以及一个隐式(暗示)关键字设置类边界:public、private、protect以及暗示性的friendly,默认就是后者friendly。


1.4方案的重复使用

          ↓

1.13略,并没有写记录。


第二章:一切都是对象

2.1用句柄操作对象

句柄:Handle 类比于电视机与遥控器,遥控器就像句柄,电视机就是对象。String s 是句柄,创建一个句柄时,无论如何都要进行初始化 String s="abc" ;

   

2.2所有的对象都必须创建

    String s = new String ("abc");


2.2.1保存到什么地方

①寄存器。

②堆栈,通过“堆栈指针”获得处理的直接支持,向上移动可以释放那些内存,向下移动则是创建新内存。

③堆,和堆栈不同,“内存堆”或“堆”(Heap)在于编译器不必知道要从堆里分配多少存储空间及需要停留时间,通过new关键字编制。

  ④静态储存,“静态”(static)指“位于固定位置”。

    ⑤常数存储,常数值通常直接置于程序内部。

⑥非RAM(随机访问存储器)存储,基于远程机器或者磁盘存储。

2.2.2特殊情况:主要类型(基本数据类型)

有一系列类需特别对待;可将它们想象成“基本”、“主要”或者“主”(Primitive)类型,进行程序设计时要频繁用到它们。之所以要特别对待,是由于用new创建对象(特别是小的、简单的变量)并不是非常有效,因为new将对象置于“堆”里。对于这些类型,Java采纳了与C和C++相同的方法。也就是说,不是用new创建变量,而是创建一个并非句柄的“自动”变量。这个变量容纳了具体的值,并置于堆栈中,能够更高效地存取。

boolean-->Boolean; char-->Character;

byte-->Byte; short-->Short;

int-->Integer; long-->Long;

float-->Float; double-->Double;

void-->Void;

高精度数值:BigInteger和BigDecimal,代价:失去了速度得到了精度。


2.2.3数组


2.3绝对不要清除对象


2.3.1作用域

作用域同时决定了它的“可见性”以及“存在时间”。

2.3.2对象的作用域

{

String s = new String("abc");

}/*作用域终点*/

句柄s会在作用域终点处消失,但s指向的String对象依然占据着内存空间,“垃圾收集器”会识别引用是否还有效来判断是否需要释放被占用的内存空间。


2.4新建数据类型:类(class)


2.4.1字段与方法

数据成员(字段)及成员函数(方法)

⑴主要成员的默认值

boolean-->false; char-->'\u0000'(null);

byte-->(byte)0; short-->(short)0;

int-->0; long-->0L;

float-->0.0f; double-->0.0d;


2.5方法、自变量、返回值

2.5.1自变量列表

2.6构建java

2.6.1名字的可见性

2.6.2使用其他组件

import导入其他需要用的对象。

2.6.3 static关键字

通常,我们创建类时会指出那个类的对象的外观与行为。除非用new创建那个类的一个对象,否则实际上并未得到任何东西。只有执行了new后,才会正式生成数据存储空间,并可使用相应的方法。
但在两种特殊的情形下,上述方法并不堪用。一种情形是只想用一个存储区域来保存一个特定的数据——无论要创建多少个对象,甚至根本不创建对象。另一种情形是我们需要一个特殊的方法,它没有与这个类的任何对象关联。也就是说,即使没有创建对象,也需要一个能调用的方法。为满足这两方面的要求,可使用static(静态)关键字。一旦将什么东西设为static,数据或方法就不会同那个类的任何对象实例联系到一起。所以尽管从未创建那个类的一个对象,仍能调用一个static方法,或访问一些static数据。而在这之前,对于非static数据和方法,我们必须创建一个对象,并用那个对象访问数据或方法。这是由于非static数据和方法必须知道它们操作的具体对象。当然,在正式使用前,由于static方法不需要创建任何对象,所以它们不可简单地调用其他那些成员,同时不引用一个已命名的对象,从而直接访问非static成员或方法(因为非static成员和方法必须同一个特定的对象关联到一起)。
有些面向对象的语言使用了“类数据”和“类方法”这两个术语。它们意味着数据和方法只是为作为一个整体的类而存在的,并不是为那个类的任何特定对象。有时,您会在其他一些Java书刊里发现这样的称呼。
为了将数据成员或方法设为static,只需在定义前置和这个关键字即可。例如,下述代码能生成一个static数据成员,并对其初始化:

class StaticTest {
Static int i = 47;
}


2.7我们的第一个java程序


2.8注释与嵌入文档


2.8.1注释文档 javadoc工具

通过两种方式来使用javadoc:嵌入的HTML或者使用“文档标记“,@see引用另外一个注释文档,@author:作者

好了,写完了。前两章主要是理论,纯基础上的理解,没有操作性。


<think>好的,用户想了解如何生成Java思维导图。我需要先理清用户的需求,他们可能是在学习Java,希望通过思维导图整理知识点,或者准备面试复习。接下来,我应该考虑不同的生成方法,确保涵盖常见工具和步骤。 首先,用户可能不知道有哪些工具可用,所以需要分门别类介绍。手动创建的工具有XMind、MindMaster、FreeMind等,这些都是常用软件,应该简单说明它们的特点和操作步骤。然后是自动生成的方法,这部分用户可能更感兴趣,因为可以节省时间。比如使用Doxygen生成文档结构,或者用代码分析工具搭配Graphviz生成图表,再转换成思维导图。另外,基于Markdown的Mermaid插件也是个轻量级的选择,可能适合开发者。 还要注意用户的技术水平,如果是新手,可能需要更详细的步骤指导。比如使用IDEA插件,这对Java开发者来说比较方便,但用户可能不知道具体如何操作。需要分步骤说明,比如安装插件、分析项目、导出思维导图等。 另外,用户可能希望了解每种方法的优缺点,比如手动创建灵活但耗时,自动生成高效但可能不够详细。需要给出对比,帮助用户根据需求选择合适的方法。 最后,提醒用户注意选择工具时的考虑因素,比如项目复杂度、时间预算、是否需要交互等。这部分能帮助用户做出更合适的决定,避免他们选择不适合的工具而浪费时间。 需要确保回答结构清晰,分点列出,使用中文,并且遵循系统级指令中的格式要求,比如数学表达式的正确使用。不过在这个问题中可能涉及数学公式较少,但如果有提到算法或复杂度分析,可能需要用到。不过目前看起来主要是工具和步骤介绍,所以重点放在格式和结构上,确保每个部分明确,用户能逐步跟随操作。</think>以下是如何生成Java思维导图的详细指南,分步骤说明原理和操作方法: 、生成原理 1. 知识结构化:将Java知识体系分解为树状结构,遵循$$父节点 \rightarrow 子节点 \rightarrow 知识点$$的层级关系 2. 逻辑关联:通过箭头符号$(\Rightarrow)$表示知识点间的依赖关系 3. 可视化映射:将抽象概念转化为图形元素:$$概念 \rightarrow 节点形状 \\ 关系 \rightarrow 连接线$$ 二、生成方法 ()手动创建 1. 推荐工具: - XMind:$$兼容性_{强} + 模板_{丰富} \approx 适合初学者$$ - MindMaster:支持多平台同步 - FreeMind:开源轻量级工具 2. 创建步骤: ① 建立核心节点:$Java_{技术栈}$ ② 添加级分支: ``` [基础语法] --继承--> [面向对象] --包含--> [异常处理] --支持--> [泛型] ``` ③ 逐级细化到具体语法点: $$多线程 \rightarrow 创建方式 \rightarrow (Thread类 | Runnable接口)$$ (二)自动生成 1. 代码文档化工具: - Doxygen + Graphviz ```bash doxygen -g config_file # 生成配置文件 doxygen config_file # 生成文档结构 ``` - 输出格式支持:$\text{HTML} \cup \text{PDF} \cup \text{XML}$ 2. IDEA插件方案: ① 安装`SequenceDiagram`插件 ② 右键点击Java类 → `Diagrams` → `Show Diagram` ③ 导出为$\text{.mmd}$格式 → 用MindManager打开 3. Markdown转换法: ```markdown ```mermaid graph TD A[Java基础] --> B[数据类型] B --> C[基本类型] B --> D[引用类型] C --> E[byte/short/int...] ``` ``` 使用Typora等支持Mermaid的编辑器可直接生成可视化图表 三、典型结构示例 $$ \begin{array}{ccc} & \text{Java技术体系} & \\ \text{基础语法} & \downarrow & \text{高级特性} \\ \hline \text{数据类型} & \rightarrow & \text{多线程} \\ \text{流程控制} & \rightarrow & \text{IO/NIO} \\ \text{OOP} & \rightarrow & \text{集合框架} \\ \end{array} $$ 四、注意事项 1. 深度建议:$$层级深度 \in [3,5] \text{层}$$(避免过于扁平或臃肿) 2. 颜色编码标准: - 红色:$\text{核心概念}$ - 蓝色:$\text{实现细节}$ - 绿色:$\text{最佳实践}$ 3. 更新机制:建议建立版本控制$\text{(如Git)}$跟踪思维导图演进 五、工具对比分析 $$ \begin{array}{|l|c|c|c|} \hline \text{特性} & \text{手动创建} & \text{自动生成} & \text{混合模式} \\ \hline \text{准确性} & 85\% & 95\% & 90\% \\ \text{灵活性} & 100\% & 60\% & 80\% \\ \text{时间成本} & 高 & 低 & 中 \\ \hline \end{array} $$ 根据实际需求选择生成方式: - 学习笔记:建议手动创建加深记忆 - 项目分析:推荐使用IDEA插件自动生成 - 架构设计:混合模式效果最佳(先用工具生成基础框架,再手动优化)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值