Java编程思想读书笔记

Java编程思想读书笔记
Java编程思想读书笔记

Java编程思想读书笔记

这是一份试图提纲挈领的读书笔记,《java编程思想》这本八百多页的书娓娓道来地包含了太多细节,这对读者是非常贴心的,我也强烈建议细细读这本书,如果你希望在短时间内学会java这种语言,那么这本书不是最好的选择,你可以看看谭浩强系列。我把看这本书的过程中,个人觉得每一章中最重要的思想、用整理在这里,希望自己回顾的时候有所参照和提高。也希望大家带着同样的目的来看本篇读书笔记。

第一章对象导论

比起过程型语言编写的程序,用面向对象语言编写的程序更加简单、易于理解、可复用。《c++编程思想》里也有这一章,是一个抛砖引自己的玉的章节,不明白可以跳过,回头再看。

第二章一切都是对象

java语言里面,一切都是对象,并且程序员是通过引用来操纵对象。一个简单的例子,非常轻松地让读者进入java 的世界。需要注意的是java数据会储存在5个不同的地方:寄存器、堆栈、堆、常量存储、非ram存储,用new创建的一般对象都放在堆中,而特殊的基本对象放在堆栈中,如果想把基本对象也放在堆中,需要包装基本类型。

第三章操作符

java中的操作符语法类似于c,所以学习起来一点困难也没有。要特别注意两个比较大的整数相加或者相乘的时候的溢出问题,用long或者biginteger解决这个问题。

第四章控制执行流程

我想起《pointer on c》这本书第一章就有这一句话,本书适合那些希望迅速学习一门新语言而不是被“为什么if 和for很重要”的弱智问题耽搁进度的读者。呵呵,这一章很不厌其烦地介绍了运算、操作符优先级、类型转换、选择循环等基本特性,有c或者c++编程经验的读者可以大概浏览一下。

第五章初始化和清理

关于初始化:

1.初始化很重要,一定不要忘记。而且java编译器会很好的防止使用未初始化数据的意外,这是比c和c++更优的地方。

2.编译器初始化的顺序为:

a.类首次加载的时候,有关静态初始化的所有动作都会执行。

a1.类的加载包括首次创建该类型的对象,或者该类的静态方法/静态域首次被访问

a2.静态域的初始化在一切初始化之前,即静态变量散

布在代码不同的地方,它们也会在任何方法(包括构造器)调用之前被初始化

b.当用new calssname 创建对象的时候,会在堆上开辟足够的存储空间,这块存储空间被清零,然后执行字段的初始化动作。(这里的字段初始化都是非静态的,因为静态的变量已经在a中执行完毕,而且静态变量存储在不同的地方,静态数据只占用一份存储空间)

c.执行构造器

关于清理

c++关于清理的部分包含很大不确定性。目前需要知道的事情是,正常情况下,我们是不需要调用finalize方法的,而且垃圾回收区会自动回收不再使用的对象,同时我们需要自己注意一些需要关闭的文件。

需要注意的是,用=对数组进行“赋值”的时候,实际上是引用的传递,就是说,二者指向同一堆。

第六章访问权限控制

关于包

你应该有一个自己的域名,这样发布你的java程序的时候,就可以将你的包名设置为你的域名倒转。想要正确让包工作,要正确设置classpath,对于新手来说,这的确是一个挑战。我当初就难到了。

关于访问权限修饰词

值得注意的是,如果两个编译单元放在同一个目录下并且都没有设置包名的话,他们对于对方都是拥有包访问权限的。访问权限修饰词是修饰方法和数据,而不是类。类只有两种访问权限,包访问权限或public访问权限。默认为包访问权限。如果不希望其它任何人对该类拥有访问权限,可以把所有的构造器设置为private。但是有一个例外,可以通过该类自己的static成员内部创建(于是就有了工厂设计模式和单例设计模式)。

第七章复用类

有三种方法复用类:组合,继承,代理。

组合即是在新的类里面放上已经定义的类的对象,然后通过调用它的方法来实现自己的功能。

继承是通过extends关键词继承某一父类,这样就能访问父类的所有public方法(因此为了继承,一般的规则是将父类的所有数据成员都指定为private,将所有的方法都指定为public)。子类的初始化需要注意的是,(当创建了一个子类的对象时,该对象包含一个基类的子对象)java会在子类的构造器中插入对基类默认构造器的调用。但是如果没有默认的基类构造器,或者想调用一个带参数的基类构造器,就必须用关键词super显式地编写调用基类构造器的语句,并且配上适当的参数列表。

代理很有意思,(我们姑且使用导出类和基类这样的字

眼,但要清楚我们不是在讨论继承里面的关键词)在导出类里保存一个基类的对象,然后用自己的方法对该基类的种种方法进行包装。

如何决定使用哪种方法复用类呢?is-a就继承,has-a 就用组合。而且,组合比继承总体上使用更广泛、代价更小。

向上转型

这个就牛逼了,第八章,第九章,第十章都与此密切相关。看完本书之后印象最深的就是向上转型了。

使用final的原因有很多种,一定要弄清楚为什么使用final,是由于设计还是效率。

final作用于数据的时候:final作用在基本对象比如int上,该值就成为不可改变的,一旦被初始化就无法再被更改,但是作用在普通的对象引用的时候,final使引用恒定不变,但是引用指向的对象是可变的。编译器需要我们确保final对象一定要被初始化,我们可以通过在构造器中初始化他们,以达到相对自由的效果(称为空白final,我认为这个名字容易让人误解)。java允许在参数列表中以声明的方式将参数指明为final,这一特性主要用来向匿名内部类传递数据(这很重要)。

final作用于方法的时候,说明作者想保持该方法在继承的过程中不被改变,并且不被覆盖。同时,被final修饰的方法会被关闭“动态绑定”,这样编译器就会为final方

法调用生成“有限”有效的代码。之所以说有限,是因为随着编译器的牛逼,它生成的代码越来越有效。

final作用于类的时候,即是作者声明对该类的设计不允许任何继承。

学习得更深入一些,可能对以下事实感到有兴趣:java 中所有的事物都是对象,每个类的编译代码都存在于电脑中的文件夹里(文件夹的层次根据反转域名得到),该文件只有在需要使用程序代码时才被加载。具体的说,就是“类在其任何static成员函数(包括构造函数)被访问时加载”。第八章多态

多态的重要基本原理就是向上转型:继承允许将对象视为它自己本身的类型或其基类型加以处处理。

将一个方法调用和一个方法主题关联起来称为绑定,java中所有的方法都是后期绑定(除了static方法和final 方法),所以我们可以编写只与基类打交道的程序代码,并且这些代码对所有的导出类都可以正确运行。

(为什么static不动态绑定:因为static方法的主要用法就是用类名.方法名这样的方式来调用,不存在“发送消息给某个对象,让对象判断自己怎么做”这样的情况。

为什么final不动态绑定:这是早期final的一种用法,由程序员指定某方法为final,意味着程序员明了动态绑定的机制,并且声明该方法不需要动态绑定,这样可以获得更

好的性能。这种用法已经很少使用了。)

初始化的时候,导出类的构造函数会自动调用基类的默认构造函数,此过程一直递归到最基本的基类。如果需要调用有参数的构造函数就需要手动执行。反过来,如果需要进行清理工作(大部分时候我们都不需要),务必手动执行基类的清理工作先。比如继承链的每个类都实现dispose 方法,那么执行某个类的清理工作的时候,需要手动调用。不过此种情况下,务必在执行之前释放成员对象,清理顺序与执行顺序是相反的。

此外,构造器方面有更加复杂的调用机制,我们不用理它,只需要知道一条有效的准则“用尽可能简单的方法使对象进入正常状态,如果可以的话避免调用其它方法”。

java编译器能够允许向上多态,就是因为java的机制能保存对象的类型信息,即rtti,正因为这种机制,java 编译器也允许向下转型,以获得扩展类的“扩展出”的方法。(另,扩展类“扩展”了方法的这种继承不是“纯继承”,这样做好不好?用户自己度量)。向下转型失败的话会抛出一个classcastexception。

虽然这一章都是在讲多态,但是多态并不总是解决问题最好的方案,它有可能使事情不必要地复杂起来,我们应该总是优先考虑更加灵活的组合。

第九章接口

一种专门提供“接口”的类叫抽象类,若含有至少一个abstract方法,该类就必须被声明为abstract的。抽象方法没有方法体,派生类必须实现它,否则派生类也必须被生命为抽象的。

interface关键词使抽象的概念更进了一步:1.这个“类”完全抽象。2.一个类可以向上转型为多种interface。要让一个类遵循某个特定接口,需要使用implement关键字。

在这一章中出现了“策略设计模式”这个词。创建一个能够根据所传递的参数对象的不同而具有不同行为的方法,被称为策略设计模式。

策略设计模式跟适配器设计模式联合使用可以提供非常强大的功能,比如我们遇到了无法更改的类(别人编写的),想要它满足我们的接口然后放到设计模式里面去(当然满足了接口之后的用法就不止如此了),就可以编写一个适配器,包装该类同时产生我所需要的接口。

使用抽象类和接口的两个原因是:1.在多重继承关系中(这真的很常见,看看java api就知道了),导出类可以被向上转型为每一个接口。2.防止客户端程序员创建该类的对象。那么我们该使用抽象类还是接口呢?事实上,如果知道某事物应该成为一个基类,那么第一选择应该是使它成为一个接口。

接口之间的继承能够形成很好的体系,更像我们的现实

生活。但是要特别注意的是,在不同接口中使用相同的方法名通常会造成代码可读性的混乱,令人不快。

工厂方法设计模式是又一个重要的设计模式。我们在代码中增加额外的间接性,一个重要的原因是想要创建框架。

《java语言及其程序设计》读书笔记

java是1990年james.gosling主持的一项研究计划的产品,他们在计划的初期是想设计 出一个能够使用最少的系统资源,而且能够有效、安全地传递应用程序的语言。进一步的要求是这个语言有一定的延伸性,而且可以应用在不同的硬件和操作系统上面。 他们最开始是想在c++的基础上修改,但是一段时间后,他们觉得应该自己编写一个小的语言。在他们的努力下,这个程序终于开发出来了,这个新语言适用于开发安全、分散式、网络式的的应用程序。最主要的特性就是安全性,java语言不是超文本标识语言(HTML) 的替代品,也不是专门用来书写信息网主页的。虽然java基本上类似c++,有逻辑的流程设计、数据结构、数据处理以及演算的功能,所以本质上是一种面向对象的语言,但是,java 不是另一种c++,它的特点之一就是可以提供直接在信息网主页上传递交互的功能,及时地展现声音、影像及动画,这是c++望尘莫及的。 java程序语言是介于直译语言(Basic)和编译语言(c/c++)的,是想在两者之间求得 一种平衡。 java的另一个特点就是打破电脑执行程序的传统观念:以往用于电脑运算的程序和数据都必须放在使用者了电脑上才能执行。而java则自行解体,它的应用程序的执行码、浏览器、编译器、直译器、原始程序等可被分散在国际电脑网络上的任何地点存放,任何网络上的使用者在任何时间皆可由哪些据点将它们载入自己的电脑进行执行。“网络即电脑”这个口号从java开发出来一直被sun公司推崇,而且被更多的人认可了。 根据程序的写法以及执行方法的不同,可以将java程序分成两种: java小程序(java Applet); 单独式java应用程序(Stand_alone java application); java Applet需要依附于信息主页上的一个小面板内(Tablet),适用于java的浏览器会依据java Applet所描述的存放地点及名称,及时将它的执行码载入,而且可以在小面板里面显示执行结果。java Application则不需要浏览器的支持,只要电脑上有JVM(java virtual machine)就可以执行。 java可以很轻松实现人机交互,什么是交互的概念呢?当你把鼠标放入俄罗斯方块画面 的时候,这个应用程序的接口能够马上探测到,并能够根据你的输入而迅速做出反应,这就是交互的概念。在java进入全球信息网之前,绝大部分的主页设计都只是拘泥于静态设计 的范畴,即如果你摆放一张照片或图像在主页里,它既不会动也不会发出音效。 由于java具有这么强大的功能,因此对各种操作系统以及软件业(Microsoft)来说是一种很大的冲击。java不同于c++最大的地方可能就是java语言是适用于网络的编程语言,这一点是c++无法达到的。 java程序在定义类的时候,可以加入异常处理方法,能够使得例外情况下,程序能够正常运行。所谓的例外情况就是:程序在正常执行时,因为一些没有预期的运算错误而导致程序中断。 在java里面,print()和println()函数的区别在于前者在输出数据以后不会自动换行,而 后面一个方法在输出数据以后能够自动换行。 java语言同c/c++语言的区别: (1)我们知道,c语言最大的不足就是它的程序在软件维护方面花费太高,所谓的维 护成本是指一种程序无论它的功能有多么强大,如果是因为语法定义、或者设计结构方面的因素,使得程序内容不易被了解或者容易产生错误,以致于在修改的时候很是花费时间。 (2)为了能够适应国际电脑网络上的TCP/IP协议通信规则,包括HTTP以及FTP等通 信方法,java提供了很完备的网络类型程序包(类似于一个标准程序库)

java编程思想读书心得

竭诚为您提供优质文档/双击可除java编程思想读书心得 篇一:Java编程思想第四版读书笔记 Java编程思想第四版读书笔记 一基础知识点 1.面向对象程序设计 (object-orientedprogrammingoop), umL(unitiedmodellingLanguage统一建模语言)。将对象想像成“服务提供者”,它们看起来像什么?能够提供哪些服务?需要哪些对象? 2.Java中动态绑定是默认行为。Java采用动态内存分配方式,通过new操作在堆(heap)的内存池中动态创建对象。 Java存储结构类型:1)寄存器2)堆栈,主要存储对象引用3)堆,主要用于存放所有的Java对象4)常量存储,也就是程序代码区5)非RAm存储,如流对象和持久化对象。基本类型不用new来创建变量,而且这个变量直接存储”值”,并置于堆栈中。 3.bigInteger和bigDecimal的使用。当变量作为类的

成员使用时当变量作为类的成员使用时,Java才确保给定其默认初当变量作为类的成员使用时始值,但是在方法中定义的变量,它有可能是任意值。面向对象的程序设计可以归纳为“向对象发送消息”。关键字static。 4.Javadoc只能为public和protected成员进行文档注释,但是也可以通过-private进行标记注释。 Javadoc常用方法: @see引用其他类,linkpackage.class#memberlabel},{@{@docRoot},{@inheritDoc},@version,@author, @since,@param,@return,@throws,@deprecated。 5.整数除法会直接去掉结果的小数位。基本类型的对象如果直接对它们赋值,对象指向同一个常量存储区,但是如果通过对象来初始化则会指向不同的堆的存储区。如: stringst1=newstring("A");stringst2=newstring("A");s t1==st2falsestringst1="A";stringst2="A";st1==st2tru e 6.逻辑操作符:与 (Leafincrement(){i++;returnthis;}} 10.回答一个新技术的问题大概思路和步骤是: 我们想干什么,怎么干,干的过程中遇到了什么问题,现在用什么方式来解决。

个人读书方法总结(..

{读书}个人读书方法总结(看Jun Yang兄的读书文章后有感而写) 看了Jun Yang的文章,我也想写我自己的读书总结了,呵呵。 不过看这个的前提是:每个人的读书习惯都是不同的,不要随便“全盘”拿别人的习惯来培养自己的习惯,找到合适自己的才是最重要的。“全盘”二字重点,不要全盘接受别人的习惯。我下面所说的也不一定是读到我文章的人所需要的。 我的读书方法,一些是我爸爸培养的,一些是我以后总结的。 1、挑选合适的时间连续阅读。 我也一样不推荐计划阅读。看了Jun Yang的文章,在这一点有些共鸣。 C专家编程的作者Peter Van Der Linden曾经玩笑的解释“什么时候数组与指针相同”这个标题的时候说: The C Programming Language,第二版(K&R)99页的底部是: 作为函数定义的形式参数, 然后翻到第100页,紧接前一句, char s[]和char* s是一样的。 呜呼,真是不幸,这么重要的一句话竟然在K&R第二版种被分别印在两页上。 嗯,如果按计划看这样的书,恰巧看到99页,而不看100页,那么100页的关键部位岂不是看不到?呵呵,玩笑。 毕竟连续阅读头脑才有印象。看书不是锻炼,看书不是锻炼记忆力,获取书本知识不能“量化”。 2、快速浏览,然后多看几遍。 这个是我爸爸在我小时候就给我提的,我接受了这个建议到现在。他给我说:书你一遍看完就掌握其中重要的内容是不现实的。但是在掌握之前要有个大概的印象,掌握这个印象的方法就是快速浏览,不要知道某些条目是为什么,需要研究的重点就记下来,第二次看的时候再去仔细看,能理解多少就是多少,第一次要以看完为目的。而真正掌握,是随后的通读,有了第一遍的基础,随着看这本书的次数增加,看书速度会越来越快,因为头脑里早已经知道那些是没有掌握的,已经掌握的就会快速略过,但是会加深印象。此后可以带着实际问题从新来翻阅该书,会有更深的理解。《C++Primer第三版》潘爱民老师翻译的版本,我在2002年购买到现在看了不知道多少遍了。从最初的花了近3个月的浏览第一遍,到现在的可以花一天就可以通读一遍。期间给我带来了不少好处。 曾经非常非常不待见这种方法,自从亲身使用过好感到确实是好方法。特别是一些技术书籍,尽管你第一遍看的很仔细,你仍然不能记住对你来说第一次接触到的概念,读多了(可能跟艾宾浩斯曲线有关吧),记住的概念多了,也就更好理解了。 3、学会记忆也要学会忘记。 记住重点,尽量忘记细节。甚至记住哪本书可以找到这个概念就够了,然后忘记它。每个人对待书的态度不同的,或许与自己的成长经历有关。我的习惯是,记住重点,想了解细节再去查。学会记住很难,其实学会忘记也很难。有时候记忆是一种负担,日积月累会很沉重,不用的知识会越来越多,而且书承载的是作者他的想法,看书在吸收知识的时候,无形中也在被作者所“干涉”思想。但模仿的过程是学习的重要过程,但脱离不了模仿就不能成为自己的思想和知识。学会查是一种重要的手段,还是《C++Primer》,前几天我还就构造函数和析构函数的细节,特别对多继承的析构函数作为重点仔细看了一下,有时候一些类似常用的概念,有很多种形式,平时也就用最常用的,那些不常用换言之特殊的概念,能查就可以了。嗯,看了Jun Yang的第二点,他说“知识存储机器”,呵呵有些夸张了。不过也可以理解他这么说,上面我已经提到书本给我们带来的负面影响了。 “看书”而不是“读书”,读书也是中国常用词语。英语就是read book。很多人都喜欢用嘴去“读”书,或者边看书边自言自语。这是不太好的一个习惯,读是一种干扰人思维的方式。语言虽然能加深记忆,但会影响思考。 4、不要“太”强迫自己。 不喜欢就不要看,看不进去可以极端的选择干脆不看,或者隔一段时间再看,或者静下心来的时候再看,或者换一本同类的书,按照自己需要的知识点来寻找书籍。曾经和朋友交流过,他说《编译原理》也就是那本经典的“龙书”,虽然他也知道很好,可怎么也看不进去,不知道为什么。但是看《编译原理与实践》,他很容易的就看进去了,之后,他根据掌握的编译原理写了一个汇编语言的代码着色器,可以生成UBB代码和HTML代码。 我为什么要突出不要“太”强迫自己这个“太”呢?有时候也需要强迫一下自己,不能太随性,也得掌握一个度。有时候很重要的概念书籍,看起来是很枯燥的,朋友建议看的书,可能有他受益过的地方。比如我看《Structure and Interpretation of Computer Programs(SICP)》,就是那位只能看《编译原理与实践》的朋友推荐我看的,北大裘宗燕老师已经翻译为中文版。经典的SICP是用Lisp描述的,一本古老的介绍functional编程的书。看一点就感觉很乏味,但稍微强迫一下自己,就知道这本书的优异之处。我就是看了求解费波那契数列的使用递归,以及递归优化那一章,对我以后写任何语言递归的分析,受益那是一辈子的。比如C++之父写的书,就被公认的哲学味太浓,不适合绝大多数人阅读,但我就很喜欢看,书本就是这样,因人而宜,就像配偶一样,自然有适合自己的

SQL数据库+java学生管理系统

《数据库系统原理》 课程设计报告说明书 学生信息管理系统 学生姓名 学号 所在专业 所在班级 指导教师 提交时间 评阅情况 成绩

目录 读书笔记 ............................................................................................................................... 1. 学生信息管理系统概述................................................................................................... 1.1 研究背景 ....................................................................................................................... 1.2开发意义 ....................................................................................................................... 2. 系统需求分析 ................................................................................................................... 2.1 开发环境和软件 ........................................................................................................... 2.2 系统设计与功能分析 ................................................................................................... 3数据库设计 ...................................................................................................................... 3.1 系统概念结构设计 ....................................................................................................... 3.2 系统逻辑结构设计 ....................................................................................................... 3.3 数据库实现 ................................................................................................................... 3.3.1 数据库关系图 ........................................................................................................... 3.3.2SQL语句实现........................................................................................................... 4. 系统模块详细设计........................................................................................................... 4.1用户登录模块.......................................................................................................... 94.2 各用户操作模块 ........................................................................................................... 4.2.1 管理员操作模块 ....................................................................................................... 4.2.2 教师操作模块 ....................................................................................................... 7 4.2.3 学生操作模块 ........................................................................................................... 5. 系统运行与测试............................................................................................................... 5.1 管理员登录 ..................................................................................................................... 5.2 教师登录 ......................................................................................................................... 5.3 学生登录 ......................................................................................................................... 6.课程设计总结 ................................................................................................................... 7.附录(代码) ................................................................................................................... I.读书笔记 关于网上花店管理系统的读书笔记: 在网上购物逐步平民化的今天,网上购物人数不断增加,现代IT技术和互联网的结合。给了市场创造了无限商机!我阅读了一片“网上花店管理系统”的论文。该论文主要研究网上花店管理系统。该系统以MySQL作为后台数据库,JSP作为前台开发工具,通过Java中的JDBC连接数据库。提供给用户网上浏览,购买,支付等功能,同时.管理员对可以该系统进行维护和管理! SQL Server安全可靠,性能好,易用性强,JSP的Web运用跨平台,系统底层

Java编程思想读书笔记

Java编程思想读书笔记 Java编程思想读书笔记 这是一份试图提纲挈领的读书笔记,《java编程思想》这本八百多页的书娓娓道来地包含了太多细节,这对读者是非常贴心的,我也强烈建议细细读这本书,如果你希望在短时间内学会java这种语言,那么这本书不是最好的选择,你可以看看谭浩强系列。我把看这本书的过程当中,个人觉得每一章中最重要的思想、用整理在这里,希望自己回顾的时候有所参照和提高。也希望大家带着同样的目的来看本篇读书笔记。第一章对象导论比起过程型语言编写的程序,用面向对象语言编写的程序更加简单、易于理解、可复用。《c++编程思想》里也有这一章,是一个抛砖引自己的玉的章节,不明白可以跳过,回头再看。第二章一切都是对象 java语言里面,一切都是对象,并且程序员是通过引用来操纵对象。一个简单的例子,非常轻松地让读者进入java的世界。需要注意的是java数据会储存在5个不同的地方: 寄存器、堆栈、堆、常量存储、非ram存储,用new创建的一般对象都放在堆中,而特殊的基本对象放在堆栈中,如果想把基本对象也放在堆中,需要包装基本类型。第三章操作符 java中的操作符语法类似于c,所以学习起来一点困难也没有。要特别注意两个比较大的整数相加或者相乘的时候的溢出问题,用long或者biginteger解决这个问题。第四章控制执行流程我想起《pointer on c》这本书第一章就有这一句话,本书适合那些希望迅速学习一门新语言而不是被“为什么if和for很重要”的弱智问题耽搁进度的读者。呵呵,这一

章很不厌其烦地介绍了运算、操作符优先级、类型转换、选择循环等基本特性,有c或者c++编程经验的读者可以大概浏览一下。第五章初始化和清理关于初始化: 1。初始化很重要,一定不要忘记。而且java编译器会很好的防止使用未初始化数据的意外,这是比c和c++更优的地方。 2。编译器初始化的顺序为: a。类首次加载的时候,有关静态初始化的所有动作都会执行。 a1。类的加载包括首次创建该类型的对象,或者该类的静态方法/静态域首次被访问 a2。静态域的初始化在一切初始化之前,即静态变量散布在代码不同的地方,它们也会在任何方法(包括构造器)调用之前被初始化 b。当用new calssname创建对象的时候,会在堆上开辟足够的存储空间,这块存储空间被清零,然后执行字段的初始化动作。(这里的字段初始化都是非静态的,因为静态的变量已经在a中执行完毕,而且静态变量存储在不同的地方,静态数据只占用一份存储空间) c。执行构造器关于清理 c++关于清理的部分包含很大不确定性。目前需要知道的事情是,正常情况下,我们是不需要调用 finalize方法的,而且垃圾回收区会自动回收不再使用的对象,同时我们需要自己注意一些需要关闭的文件。需要注意的是,用=对数组进行“赋值”的时候,实际上是引用的传递,就是说,二者指向同一堆。第六章访问权限控制关于包你应该有一个自己的域名,这样发布你的java程序的时候,就可以将你的包名设置为你的域名倒转。想要正确让包工作,要正确设置classpath,对于新手来说,这的确是一个挑战。我当初就难到了。关于访问权限修饰词值得注意的是,如果两个编译单元放在同一个目录下并且都没有设置包名的话,他们对

Java读书笔记

读书笔记 1、类和对象:类是用来定义一组对象共同具有的状态和行为的模版。而对象是 现实世界中个体或事物的抽象表示,并且封装了它们的属性和行为。 2、为了防止命名冲突,Java采用了管理类文件的机制,即类包机制。(package) 定义包名的语法格式: “package包名;” Java命名规则要求包的命名需要使用小写字母。 3、成员变量和成员方法: ○1成员变量是在类体中定义的变量即全局变量,成员变量一般用于定义对象的状态。成员变量是给对象使用的,每个对象被创建后都会有属于自己的属性,即成员变量。通过修改这些属性,从而改变对象的某个状态。 ○2成员方法是对象行为的描述。 定义成员方法的语法格式: “[修饰符] 返回值类型方法名([形参表]){ ······//方法体 ruturn返回值; }” 修饰符:可以是:public private protacted static final l等; 返回值类型:如果方法需要返回值,必须这里声明方法的返回值类型,可以是基本数据类型(int short double booleanvoid等),也可以是对象 类型如:数组、字符串等。 形参表:(可选部分)说明方法被调用时应该向它传递的数据。形参表可以有一个也可以有多个,当有多个形参时每个形参之间要用“,”隔开。 4、对象:○1创建对象:创建对象使用到new语句。 声明并创建对象的语法格式如下: “类名对象名=new 类构造方法()” 构造方法:构造方法是类创建对象是必须执行的方法,用于构造一个新的对象并初始化对象属性。 ○2访问对象的属性: 语法格式: “对象名.属性” ○3执行对象的行为:对象的行为就是对象的成员方法,通常说调用或执行对象的某个方法。 语法格式: “对象名.成员方法名();” ○4对象的销毁:Java提供了垃圾回收机制,对不再使用的对象会自动销毁,也可以在程序中显式的为某个对象赋null值,使对象不再被使用。 垃圾回收机制会找到并销毁它,释放该对象所占用的资源。语法格式: “对象名=null” 5、类:○1创建类:Java中使用class关键字来创建类。 声明并创建类的语法格式: “权限修饰符class类名{

Java编程思想读书笔记

Java编程思想读书笔记 各位读友大家好,此文档由网络收集而来,欢迎您下载,谢谢 这是一份试图提纲挈领的读书笔记,《java编程思想》这本八百多页的书娓娓道来地包含了太多细节,这对读者是非常贴心的,我也强烈建议细细读这本书,如果你希望在短时间内学会java 这种语言,那么这本书不是最好的选择,你可以看看谭浩强系列。我把看这本书的过程当中,个人觉得每一章中最重要的思想、用整理在这里,希望自己回顾的时候有所参照和提高。也希望大家带着同样的目的来看本篇读书笔记。 第一章对象导论 比起过程型语言编写的程序,用面向对象语言编写的程序更加简单、易于理解、可复用。《c++编程思想》里也有这一章,是一个抛砖引自己的玉的章节,不明白可以跳过,回头再看。

第二章一切都是对象 java语言里面,一切都是对象,并且程序员是通过引用来操纵对象。一个简单的例子,非常轻松地让读者进入java 的世界。需要注意的是java数据会储存在5个不同的地方:寄存器、堆栈、堆、常量存储、非ram存储,用new创建的一般对象都放在堆中,而特殊的基本对象放在堆栈中,如果想把基本对象也放在堆中,需要包装基本类型。 第三章操作符 java中的操作符语法类似于c,所以学习起来一点困难也没有。要特别注意两个比较大的整数相加或者相乘的时候的溢出问题,用long或者biginteger解决这个问题。 第四章控制执行流程 我想起《pointer on c》这本书第一章就有这一句话,本书适合那些希望迅速学习一门新语言而不是被“为什么if和for很重要”的弱智问题耽搁进度的读者。呵呵,这一章很不厌其烦地介绍了运算、

操作符优先级、类型转换、选择循环等基本特性,有c或者c++编程经验的读者可以大概浏览一下。 第五章初始化和清理 关于初始化: 1。初始化很重要,一定不要忘记。而且java编译器会很好的防止使用未初始化数据的意外,这是比c和c++更优的地方。 2。编译器初始化的顺序为: a。类首次加载的时候,有关静态初始化的所有动作都会执行。 a1。类的加载包括首次创建该类型的对象,或者该类的静态方法/静态域首次被访问 a2。静态域的初始化在一切初始化之前,即静态变量散布在代码不同的地方,它们也会在任何方法(包括构造器)调用之前被初始化 b。当用new calssname()创建对象的时候,会在堆上开辟足够的存储空间,这块存储空间被清零,然后执行字段的

Java 编程规范(第三版)_读书笔记

1.Java编程语言是一种强类型化的语言,这意味着每个变量和每个表达式都有一个在编译 时已知的类型。类型限制了变量可以保存或者表达式可以产生的值,限制了那些值上支持的操作,并且确定了操作的含义。 2.八进制转义:只能表示Unicode值\u0000 ~ \u00FF, 3.Java编程语言的类型分为两类:基本类型和引用类型。引用类型有类类型、接口类型和 数组类型。所有对象(包括数组)都支持Object类的方法。 4.任何整型的任何值都可以被强制转换为任何数值类型,反之亦然。在整型和boolean 类型之间没有强制转换。 任何浮点型的值都可以强制转换为任何数值类型,反之亦然。在浮点型和boolean类型之间不能进行强制转换。 5.如果两个引用类型满足以下条件,则它们是相同的运行时类型: ●它们都是类或接口类型,都通过相同的类加载器定义,并且具有相同的二进制名称, 在这种情况下,有时把它们称为相同的运行时类或相同的运行时接口。 ●它们都是数组类型,并且它们的元素类型是相同的运行时类型。 6.每个数组也有一个类:当为数组对象调用方法getClass时,该方法将返回一个类对象 (类Class的对象),它表示数组的类。数组的类有奇特的名称,它们不是有效的标识符:例如,int元素的数组的类具有名称“[ I ”,因此表达式: New int[10].getClass().getName() 的值是字符串“[ I”;参见Class.getName的规范以了解详细信息。 7.扩展基本转换:

? byte to short, int, long, float, or double ? short to int, long, float, or double ? char to int, long, float, or double ? int to long, float, or double ? long to float or double ? float to double 注意:byte和short都不能扩展转换为char类型。从有符号到无符号的扩展,看来是不行的.--by hxrs. 8.收缩基本转换: ?short to byte or char ?char to byte or short ?int to byte, short, or char ?long to byte, short, char, or int ?float to byte, short, char, int, or long ?double to byte, short, char, int, long, or float 注意:从浮点数到整型T的收缩转换采用两个步骤: In the first step, the floating-point number is converted either to a long, if T islong, or to an int, if T is byte, short, char, or int, as follows: If the floating-point number is NaN, the result of the first step ofthe conversion is an int or long 0. Otherwise, if the floating-point number is not an infinity, the floating-pointvalue is rounded to an integer value V, rounding toward zero using IEEE754 round-toward-zero mode. Then there are two cases: ?If T is long, and this integer value can be represented as a long, then the result of the first step is the long value V. ?Otherwise, if this integer value can be represented as an int, then the result of the first step is the int value V. ◆Otherwise, one of the following two cases must be true: ?The value must be too small (a negative value of large magnitude or nega-tive infinity), and the result of the first step is the smallest representablevalue of type int or long. ?The value must be too large(a positive value of large magnitude or posi-tive infinity), and the result of the first step is the largest representablevalue of type int or long. 2. In the second step: ◆If T is int or long,the result of the conversion is the result of the first step. ◆If T is byte, char, or short, the result of the conversion is the result of a narrowing conversion to type T (§5.1.3) of the result of the first step.

Java编程思想第四版_读书笔记

一基础知识点 1.面向对象程序设计(Object-oriented Programming OOP),UML(Unitied Modelling Language统一建模语言)。将对象想像成“服务提供者”,它们看起来像什么?能够提供哪些服务?需要哪些对象? 2.Java中动态绑定是默认行为。Java采用动态内存分配方式,通过new操作在堆(Heap)的内存池中动态创建对象。Java存储结构类型:1)寄存器2)堆栈,主要存储对象引用3)堆,主要用于存放所有的Java对象4)常量存储,也就是程序代码区5)非RAM存储,如流对象和持久化对象。基本类型不用new来创建变量,而且这个变量直接存储”值”,并置于堆栈中。 3.BigInteger和BigDecimal的使用。当变量作为类的成员使用时当变量作为类的成员使用时,Java才确保给定其默认初当变量作为类的成员使用时始值,但是在方法中定义的变量,它有可能是任意值。面向对象的程序设计可以归纳为“向对象发送消息”。关键字Static。 4.Javadoc只能为public和protected成员进行文档注释,但是也可以通过-private进行标记注释。Javadoc常用方法:@see引用其他类,link package.class#member label},{@{@docRoot},{@inheritDoc},@version,@ author,@since,@param,@return,@throws,@deprecated。 5.整数除法会直接去掉结果的小数位。基本类型的对象如果直接对它们赋值,对象指向同一个常量存储区,但是如果通过对象来初始化则会指向不同的堆的存储区。如: String st1=new String("A");String st2=new String("A");st1==st2false String st1="A"; String st2="A";st1==st2true 6.逻辑操作符:与(&&)、或(||)、非(!),其中与(&&)、或(||)会产生短路现象。&|也支持逻辑也支持逻辑 运算操作。运算操作 7.直接常量中L代表Long,F代表Float,D代表Double。显示二进制形式的话,可以通过Integer和Long类的静态方法toBinaryString()。如:Long.toBinaryString(10L)。 8.在返回void的方法中没有return语句,那么在该方法的结尾处会有一个隐式的return。一般情况下每个方法都会有一个显示的return语句。9.Break用于强行退出循环,不执行循环中剩余的语句,而continue则停止执行当前的迭代,然后退回循环起始处,开始下一次迭代。goto仍是Java的一个保留字,但在语言中并未使用它。Break和continue与标签一起使用,可以中断循环,直到标签所在的地方。This用法:public class Leaf{int I=0; Leaf increment(){i++;return this;}} 10.回答一个新技术的问题大概思路和步骤是:我们想干什么,怎么干,干的过程中遇到了什么问题,现在用什么方式来解决。答题时,先答是什么,再答有什么作用和要注意什么(这部分最重要,展现自己的心得)。11.finalize的使用:垃圾回收只与内存有关,当“垃圾回收”时,finalize()得到调用。Java中的对象都能被垃圾回收器回收,但是在“本地方法”的情况下,有可能在分配内存时采用类似C语言的做法通过malloc()函数来分配存储空间时,这时只能通过free()函数来释放空间,而这些释放操作必须要放到finalize()方法中,垃圾回收器才能正确的释放内存。“垃圾回收”都不保证一定会发生。 12.垃圾回收原理:引用记数引用记数是一种简单但速度很慢的垃圾回收技术。每个对象都含有一个引用记数 1 Java编程思想第四版读书笔记 引用记数器,当有引用连接至对象时,引用计数加1。当引用离开作用域或被置为null 时,引用计数减1。垃圾回收器会在含有全部对象的列表上遍历,当发现某个对象的引用计数为0时,就立即释放其占用的空间。定位交互自引用的对象组所需的工作量极大,所以并没有被应用于任何一种Java虚拟机中。Java虚拟机采用一种自适应自适应的垃圾

Java学习读书笔记

JAVA注释 //注释//以后的内容,注释一行 /*注释段落 */ Javac编译 Java 执行 IDE:Integrated Development Environment,集成开发环境,像Jbuilder,编译,执行等在一个环境下 JAVA虚拟机机制:一次编译,到处执行 JAVA的垃圾收集机制: J2SE基础语法 标识符:凡是自己可以起名字的地方,都称之为标识符 取名规则: ?标识符由字母,下划线”_”,美元符号”$”或者数字构成 ?标识符应该以字母,下划线,美元符号开头 关键字: Void: 没有返回值 Goto 和const也作为java关键字保留

Java常量:不可变的变量 ?整形常量 ?实型常量:3.14 ?字符常量 ?逻辑常量:true,false ?字符串常量:”Hello word” Java变量:内存中的一小块区域,每一个变量都属于特定的数据类型 变量名,作用域 使用变量名来访问这块区域,每个变化使用前必须先申请(声明),然后必须进行赋值(填充内容),才能使用 程序执行过程 JAVA变量分类 局部变量,成员变量

凡是在大括号里面申明的变量,出了大括号就没有人认识它了 Java的数据类型 4类8种 逻辑类型:Boolean: true, false, 非0就是true 文本类型:char 整数型: byte, short, int, long 十进制 八进制0 十六进制0x 0x的A和十进制的10在内存上的存储空间是一样的,都是以二进制形式来存储 浮点数型: float, double 十进制数形式 科学计数形式 浮点类型默认是double类型 Double d = 123456.6 Float f = 12.3f //必须加f,否则会出错

2020年凡卡读书笔记范文5篇

2020年凡卡读书笔记范文5篇 俄国著名小说家契诃夫在一部作品《凡卡》中塑造了一个由乡下来城里做学徒的 9岁男孩——凡卡。讲述了凡卡童年的悲惨生活。下面是小编给大家整理的凡卡读后 感200字作文,供大家参阅! 凡卡读后感1 过了一个钟头,他怀着甜蜜的希望睡熟了。他在梦里看见一铺暖炕,炕上坐着他 的爷爷,耷拉着两条腿,正在念他的信……泥鳅在炕边走来走去,摇着尾巴…… “啊!”凡卡尖叫一声,他被一阵剧烈的疼痛惊醒了。凡卡睁开眼睛,一眼就看见老 板那狰狞的面孔。老板一把揪着凡卡稀疏棕色的头发,大声吼道:“小兔崽子,你竟然 偷用我的墨水和钢笔,还在这儿睡觉偷懒。快起来,快去给我干活,快去。”“噢,”凡 卡翻身起来,哆哆嗦嗦地问,“刚才您让我干的活我都干完了,请问还有什么活?”“混蛋,快去按我教你的方法做鞋,我还有一大堆订单呢。”老板凶巴巴得向凡卡吼道。“知道了,我这就去。先生。”凡卡说完连忙跑去做鞋的房间了。 凡卡拿起大木锤把小铁钉往皮鞋里锤,边锤边想着爷爷收到信后让自己回去,结 果一不小心,木锤砸在了自己的手指上。可他不觉得怎么疼,只是用另一只手捂住受 伤的手指,心里却想着他那快乐的心事。在每天晚上的梦里,凡卡都会梦见他日思夜 想的爷爷接他回家。 凡卡在这种幻想中度过了三个月的时间,可爷爷却还没来接他。这已经是冬天了,莫斯科冷的要把人冻死了。凡卡穿着单薄的衣服坐在门槛上,两只眼睛炯炯有神得注 视着前方。一位绅士骑着和雪一样白的马笔直向凡卡走来,问凡卡:“你可以告诉我你 们店里的伊凡·茹科夫在哪吗?我有非常重要的事告诉他。”“噢,我就是,先生,请问您有什么事?”凡卡站起来说。“告诉你一个坏消息,你的爷爷康斯坦丁·马卡里奇在守夜时被树根绊倒,头刚好碰在一块石头上死了,我们已经把他埋葬了。由于你是他唯一的 亲人,所以日发略维夫老爷让我来告诉你。保重了,可怜的孩子。”绅士在马背上向凡 卡说。 绅士骑着他那匹马走了,凡卡一个人呆呆地站在那儿。他是多么伤心,多么痛苦呀,亲爱的爷爷是他坚持生活到现在的精神支撑,是他活下去的信念。现在,这个支 柱倒了,这个信念没有了,那他还怎么活得下去啊!凡卡鼻子一酸,豆大的泪珠顺着他 那消瘦的脸颊淌下来。

红瓦黑瓦读书心得体会5篇

红瓦黑瓦读书心得体会5篇 红瓦黑瓦是曹文轩写的长篇小说,以下是读后感5篇,欢迎阅读。 红瓦黑瓦读后感1 这个故事讲了主人公林冰在中学直到毕业的生活。 在油麻地中学有个规定,能先进红瓦房学习再进黑瓦房学习的学生就是好学生, 林冰就是先在红瓦房学习的。 因为他作文写的非常好。经常被老师邵其平表扬。不久,林冰来到了黑瓦房。 新老师艾零不欣赏他的作文,林冰不服气,去找艾老师评理。艾老师批评林冰字 写得太乱,看书少,艾老师提来了两箱书,叫林冰每个星期来看书。 林冰有个最好的朋友马水清,他每个星期都要请林冰吃一碗猪头肉。他们经历了 许许多多有意思的事儿。 最后他们都找到了各自的生活。大家都来看看这本书吧! 红瓦黑瓦读后感2 假期中,我读了<<红瓦黑瓦>>这本书。是作者从他的40万字的长篇力作《红瓦》中提炼创作而成的一部少年长篇小说,从小说反映的内容和生活来看,可以视为《草 房子》的续篇。小说以油麻地为背景,从一个中学生的视角诗意地描述了往昔乡村生 活的淳厚风情,细腻地记录了少男少女由少不经事而逐渐明白人生的成长历程。全书 情节起落跌宕、震撼人心,关怀与情意荡漾在字里行间。 读了这本书,让我明白了:别人的优点,我们要正确看待,不能因为在某一项比 不过别人就嫉妒别人。别人有的优点,无论如何,你都要承认,要取人之长,补己之短。相反,对于别人的缺点更要正确看待,不能因为他有缺点而看不起他,甚至嘲笑他。 红瓦黑瓦读后感3 在我家的书桌上,每天中午、每天傍晚,经常有一本书,趴在那里,讲林冰,描 陶卉。 曹文轩写人物时,主要写他——林冰,他是一个十足的“浑丫头”,因为他特爱害臊,所有情景都少不了他,因为书中的整个都是他亲眼所见,亲耳所闻的事儿。

相关主题
相关文档
最新文档