关闭

learning think in java

标签: 学习Java的方法Java常见问题对Java的理解
128人阅读 评论(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网站的观点或立场

读第一遍Thinking in java的笔记

第一章1.Java一切都是对象,但操纵的标识符是对象的一个“引用”。简单的说,引用代表这个对象内存地址。 如:String s;实际上,我们并没有创建一个对象,我们只是创建了一个引用,它不指向任何...
  • u011253016
  • u011253016
  • 2016-07-18 18:22
  • 1465

Think In Java第四版读书笔记

02-一切都是对象   将一切都“看作”对象,操纵的标识符实际是指向一个对象的“句柄”。 可将这一情形想象成用遥控板(句柄)操纵电视机(对象)。   String s;//这里创建的只是句柄,并不是对...
  • b2222505
  • b2222505
  • 2017-04-16 21:05
  • 1977

Thinking in Java 源码的获取以及编译问题

《Java编程思想》的源代码的获取、编译过程,以及编译中碰到的错误。还有Ant程序的获取和配置。
  • pdcxs007
  • pdcxs007
  • 2014-01-09 10:05
  • 3194

《Think in Java 第四版》笔记X

第1章 对象导论1.1 抽象过程 1.2 每个对象都有一个接口 1.3 每个对象都提供服务 1.4 被隐藏的具体实现 1.5 复用具体实现 1.6 继承 1.6.1 “是一个”(is-a)...
  • qq_33218873
  • qq_33218873
  • 2017-12-28 22:05
  • 55

【笔记】Think in Java 对象导论

1、类,实际上就是一个数据类型。 2、要获取对象,就必须产生对对象的请求。这些请求由对象的接口(interface)所定义 Light lt =new Light(); 类型 引用 创建新对象 ...
  • sinat_20476061
  • sinat_20476061
  • 2014-11-25 10:52
  • 413

Think in Java 读书笔记(二)(浓缩出精华_(:з)∠)_)

ok,继续接着之前的写~~~中间放上几张P站大神的画作和一首歌曲,请慢慢欣赏~(侵删)第10章1、可以将一个类的定义放在另一个类的定义的内部,这就是内部类。2、如果想从外部类的非静态方法之外的任意位置...
  • breavo_raw
  • breavo_raw
  • 2017-07-11 09:42
  • 169

我为什么把think in java 读了10遍

我在想写这篇博文之前,就曾经对我媳妇(她是做web前端的)讲,我把think in java看了几次几次,媳妇那时就用很羡慕和莫名的眼神看着我说,你真有毅力,我当时就蒙了,我以为她会说,你现在基础一定...
  • qiao_198911
  • qiao_198911
  • 2014-07-24 11:57
  • 1779

think in java interview-高级开发人员面试宝典(三)

收集自Oracle公司的10次(60道)电话面试全部问答(英语)Q: What environment variables do I need to set on my machine in ord...
  • lifetragedy
  • lifetragedy
  • 2013-08-05 13:13
  • 15772

Think in Java之构造器的真正调用顺序

构造器是OOP的重要组成部分,很多人认为它很容易。只不过是new了一个对象而已。而think in java的作者却告诉我们,其实这并不容易。 先看下面这个例子。在你没看结果之前,你觉得你的答案是对...
  • smxueer
  • smxueer
  • 2015-08-24 15:21
  • 253

think in java interview-高级开发人员面试宝典(二)

从现在开始,以样题的方式一一列出各种面试题以及点评,考虑到我在前文中说的,对于一些大型的外资型公司,你将会面临全程英语面试,因此我在文章中也会出现许多全英语样题。 这些题目来自于各个真实的公司,公司名...
  • java_7star
  • java_7star
  • 2013-12-21 13:29
  • 806
    个人资料
    • 访问:4684次
    • 积分:154
    • 等级:
    • 排名:千里之外
    • 原创:9篇
    • 转载:4篇
    • 译文:1篇
    • 评论:1条
    文章分类
    最新评论