当前位置:
文档之家› 《java语言及其程序设计》读书笔记
《java语言及其程序设计》读书笔记
java.util
java应用程序包:这个程序包类似于百货公司,提供各式各样的对象和类型供你的程序使用,从各种数据结构、扫描程序到日期的换算、监督对象的观察者界面。
j。各种处理与连接网络的支援程序都在这个包里面,如FTP、URL的连结、插孔连接、以及一般的网络地址(IP Address)
interface
把一些常用的方法或者静态数据包装起来,组合成一个如同类型而可以让其它类型来共同使用的结构体,叫做界面(接口)。一个类型虽然只能承袭一个父类,但是却可以承袭多个接口,但是值得注意的是,界面既然是标榜自己让大家都来使用,那么一定不能写得太具体,否则就不能被广泛使用了。interface的声明语句:
我们知道,定义好的类只是一个模板,而要创建对象才会给你一个实体,什么是实体呢,实体就是占据了一定的存储空间的。
null
没有了指针,如何在java表达一个尚未产生或者不存在的对象呢?java提供了null语句,如果对象被指定为null,它表示一个不存在的对象,不能够被参用。
//java implementation of a Binary Tree
java.applet
java小程序包:除了音效、图形、动画外,这个程序包也包含了鼠标以及各种互动媒体的处理。
java.awt
这是java程序的另外一个精髓,它提供了一个简便而好用的窗口应用程序界面(API),一般在图形使用者界面(GUI)设计上常用的小窗口(Window),按钮(Button),滚动条(Scrollbar),菜单(Menu)以及图形,字体字形(Image Font)的输入输出都在里面。这个程序包可以在一般的java程序中,作为编写一般的程序窗口而用。
java程序语言是介于直译语言(Basic)和编译语言(c/c++)的,是想在两者之间求得一种平衡。
java的另一个特点就是打破电脑执行程序的传统观念:以往用于电脑运算的程序和数据都必须放在使用者了电脑上才能执行。而java则自行解体,它的应用程序的执行码、浏览器、编译器、直译器、原始程序等可被分散在国际电脑网络上的任何地点存放,任何网络上的使用者在任何时间皆可由哪些据点将它们载入自己的电脑进行执行。“网络即电脑”这个口号从java开发出来一直被sun公司推崇,而且被更多的人认可了。
class BinTree{
String data;
BinTree left=null;//null is empty object
BinTree right=null;
BinTree(String d){//constructor for leaf
data=d;
left=null;
right=null;
对象
我们可以总结出对象的两个特点:(1)对象的状态是可以描述出来的,(2)对象具有一定的动作。
java的封装性体现在将其中的数据隐藏,那么将数据隐藏有什么用处呢?(1)保护私有数据的隐蔽性,一方面可以防止其它对象的干扰,另外一方面可以防止因为自身变化而影响其它对象。(2)让每一个对象模块独立于其它对象以外,无论你今后对这个对象模块作了哪些修改,对其它的对象模块都没有影响。
由于java具有这么强大的功能,因此对各种操作系统以及软件业(Microsoft)来说是一种很大的冲击。java不同于c++最大的地方可能就是java语言是适用于网络的编程语言,这一点是c++无法达到的。
java程序在定义类的时候,可以加入异常处理方法,能够使得例外情况下,程序能够正常运行。所谓的例外情况就是:程序在正常执行时,因为一些没有预期的运算错误而导致程序中断。
BinTree e=new BinTree("/",c,d);
e.preorder();System.out.println();
e.posorder();System.out.println();
}
}
在对象方法中,this这个特殊变量代表对象本身,事实上在对象中使用自己的变量成员或者是成员方法的时候,它们前面都有一个this,只是我们常常把这个this省略了。而super则是用来调用从父类继承而来的的变量和对象方法。一定要切记,this和super是代表的一个对象变量。
如果一个类型将被很多的子类型继承,而且每一个子类型对于同一个方法都有不同的用法,我们不如将这个方法定义成抽象函数,也就是只在父类中给予这种方法一个方法名,而没有具体的方法体。
为什么java不像c++那样实行多承袭而要实行单一承袭呢?单一承袭可以避免来自不同的父类的变量数据或者方法函数,可能因为名字雷同而产生矛盾的现象。
public class你取的类型名称extends java.applet.Applet{...}
面向对象程序设计
首先我们可以提出几个问题,(1)面向对象程序语言的精髓在那里?(2)类型与对象的主要区别?界面(interface)是java为了弥补对象之间仅能单一承袭的不足而设计的。它与类型的结构雷同,一样有数据成员和方法成员,只是其中的所有对象方法只是空架子而没有实质的内容。
(2)为了能够适应国际电脑网络上的TCP/IP协议通信规则,包括HTTP以及FTP等通信方法,java提供了很完备的网络类型程序包(类似于一个标准程序库)
(3)编译与直译:在不同的机器上或者是系统上,c++语言需要重新编译,而java程序只要有了.class执行码,那么无论在什么地方都可以运行出结果。并且.class执行码只需要直译就可以执行了。
java是1990年james.gosling主持的一项研究计划的产品,他们在计划的初期是想设计出一个能够使用最少的系统资源,而且能够有效、安全地传递应用程序的语言。进一步的要求是这个语言有一定的延伸性,而且可以应用在不同的硬件和操作系统上面。
他们最开始是想在c++的基础上修改,但是一段时间后,他们觉得应该自己编写一个小的语言。在他们的努力下,这个程序终于开发出来了,这个新语言适用于开发安全、分散式、网络式的的应用程序。最主要的特性就是安全性,java语言不是超文本标识语言(HTML)的替代品,也不是专门用来书写信息网主页的。虽然java基本上类似c++,有逻辑的流程设计、数据结构、数据处理以及演算的功能,所以本质上是一种面向对象的语言,但是,java不是另一种c++,它的特点之一就是可以提供直接在信息网主页上传递交互的功能,及时地展现声音、影像及动画,这是c++望尘莫及的。
(5)弹性与容错性:弹性与容错性是指程序不会因为一些不经意的疏失而中断程序的执行,java有两点可以大大提高它的弹性和容错性,那就是抛弃了指针,因为使用指针可轻易改变系统存储器的配置和规划;另外一个就是try-throws-catch这个例外处理功能。
java Applet
每一个java Applet都是java.applet.Applet包的子类,自己设计的类的定义格式:
既然这样,那么两个独立的对象之间,通过什么来联系呢?现在我们也知道了,其实是通过消息传递,比如说如果你这个对象依执行需求,必须要使用另外一个对象的公用变量或者是公用方法,首先你得送一个消息给对方。
对象在系统使用上有两个重要的特点,那就是类型的可重复使用性和承袭性。子类基本可以继承一切父类的变量、方法,但是如果不满意的话,也可以进行重写父类的方法以达到覆盖的目的。
根据程序的写法以及执行方法的不同,可以将java程序分成两种:
java小程序(java Applet);
单独式java应用程序(Stand_alone java application);
java Applet需要依附于信息主页上的一个小面板内(Tablet),适用于java的浏览器会依据java Applet所描述的存放地点及名称,及时将它的执行码载入,而且可以在小面板里面显示执行结果。java Application则不需要浏览器的支持,只要电脑上有JVM(java virtual machine)就可以执行。
[public]interface interfaceName [extends iN1,In2,In3...]{
...list of static data;
...list of methods
}
但是接口不能够写implementsIn1,iN2等语句,因为接口里面的方法只能是形式上的方法.
存储器清除
长期以来,各种电脑程序语言都要求编写者在使用动态存储器的时候特别注意,因为如果动态存储器的产生以及善后工作没有处理得当,往往会造成动态存储器的流失,给程序执行系统带来很大的损失。对于这个工作,java程序作了一些处理,它充许用户创建一些对象,但是用户没有必要去管那些弃置不用的对象,java会自动处理。它所采用的策略是压缩、定点、扫除、并且逐时检查存储区的使用。
}
}
}
public class Ex25{
public static void main(String args[]){
BinTree a=new BinTree("X");
BinTree b=new BinTree("12");
BinTree c=new BinTree("Y");
BinTree d=new BinTree("+",a,b);
java可以很轻松实现人机交互,什么是交互的概念呢?当你把鼠标放入俄罗斯方块画面的时候,这个应用程序的接口能够马上探测到,并能够根据你的输入而迅速做出反应,这就是交互的概念。在java进入全球信息网之前,绝大部分的主页设计都只是拘泥于静态设计的范畴,即如果你摆放一张照片或图像在主页里,它既不会动也不会发出音效。
程序包的说明
包是由一群相关的类组合而成的集合。
如何使用
什么是java执行码?执行码就是java程序编译后产生的给虚拟机的使用代码,它不受机器各类的限制,因而提高了程序的可移植性。