关闭

learning think in java

标签: 学习Java的方法Java常见问题对Java的理解
103人阅读 评论(0) 收藏 举报
分类:

1.自始至终,你需要在头脑中创建一个模型,以加强对这种语言的深入理解;每当你遇到了问题,就将它反馈到头脑中的模型并推断出答案

2.人们所能够解决的问题的复杂性直接取决于抽象的类型和质量。

对象以及引用的理解:

    在Java中,一切都被视为对象,但是在操纵的标识符实际上是对象的一个引用。可以将一切都看做对象,但操纵的标识符实际上是对象的一个“引用”(reference)。可以将这一情形想象成用遥控器(引用)来操纵电视机(对象)。只要握住这个遥控器,就能保持与电视机的连接。当有人想改变频道或者减小音量时,实际操控的是遥控器(引用),再由遥控器来调控电视机(对象)。如果想在房间里四处走走,同时仍能调控电视机,那么只需携带遥控器(引用)而不是电视机(对象)。Besides,即使没有电视机,遥控器也可以独立存在。也就是说,你拥有有个引用,并不一定需要有一个对象与它关联。take action,创建了实例必须初始化才能使用,否则编译会报错,就像C语言里面的空指针一样

程序的存储位置:

  1.寄存器。这是最快的存储区,因为它位于不同于其他存储区的地方-----处理器内部。但是寄存器的数量极其有限,所以寄存器根据需求进行分配。我们不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象。

  2.堆栈。位于通用RAM(随机访问存储器)中,但通过堆栈指针可以从处理器那里获得直接支持。堆栈指针若向下移动,则分配新的内存;若向上移动,则释放内存。这是一种快速有效的分配存储方法,仅次于寄存器。创建程序时,Java系统必须知道存储在堆栈内所有项的确切生命周期,以便上下移动堆栈指针。这一约束限制了程序的灵活性,所以虽然某些Java数据存储于堆栈中-----特别是对象引用,但是Java对象并不存储于其中。

  3.堆。一种通用的内存池(也位于RAM区),用于存放所有的Java对象。堆不同于堆栈的好处是:编译器不需要知道存储的数据在堆里存活多长时间。因此,在堆里分配存储有很大的灵活性。当需要一个对象时,只需用new写一行简单的代码,当执行这行代码时,会自动在堆里进行存储分配。当然,为这种灵活性必须要付出相应的代价:用堆进行存储分配和清理可能比用堆栈进行存储分配需要更多的时间

  4.常用存储。常量值通常---------------------------

关于内存泄漏:

  在C和C++中,一个变量声明后,就占用内存,如果不手动释放内存就会导致内存填满,就有了“内存泄漏”这一说法。而在Java中,会有一个垃圾回收机制,会去判断你不再使用的new变量,然后将其处理掉。


基本成员默认值;

Java中,若类的某个成员是基本数据类型,即使没有进行初始化,Java也会确保它获得一个默认值。当变量作为类的成员使用时,Java才确保给定其默认值,以确保那些是基本类型的成员变量得到初始化(C++没有此功能),防止产生程序错误。但是,这些初始值对你的程序来说,可能是不正确的,甚至是不合法的。所以最好明确的对变量进行初始化。Besides,上述确保初始化的方法不适用于“局部变量”(即并非某个类的子段),例如,定义int x;那么变量x得到的可能是任意值(这和C和C++中一样),而不会被自动初始化为0.所以在使用X前,应该先对其初始化赋一个适当的值。如果忘记了这么做,Java会在编译时报错。而C和C++则会出现警告。


面向对象的程序设计通常简单地归纳为“向对象发送消息”


程序只是一系列带有方法的对象组合,这些方法以其他对象为参数,并发送消息给其他对象。-----------page  73


import提示编译器导入一个包,也就是一个类库(在其他语言中,一个库不仅包含类,还可能包括方法和数据;但是Java中所有的代码都必须写在类里)。


import java.util.ArrayList;这里只是导入util包里的ArrayList类,通常使用通配符"*"写成import java.util.*;这样直接导入util包,一次导入一群类,比一个个导入更实用。----page75

java.lang
java language(java programming language),提供java语言编程核心

















0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3804次
    • 积分:143
    • 等级:
    • 排名:千里之外
    • 原创:9篇
    • 转载:4篇
    • 译文:1篇
    • 评论:0条
    文章分类