java 读书笔记
第一, Java语言和C++语言一样,是面向对象的语言,它封装了好多底层的内容,是工程应用中进行编程的相当好的选择。要想运行Java程序,首先得有环境,即要安装JDK。
第二, 介绍一些重要的包和类
Java.lang:提供用Java语言开发编程所用的基本类,如Object,System,String,Integer
Java.awt:用来管理和构建应用程序的图形界面
Java.applet:提供可执行Applet特殊行为的类
Java.net:网络通信和URL类
Java.io:提供输入输出文件的类
Java.util:为任务设置的使用程序类和集合框架类
第三, Java程序开发的流程:在TEXT文档中写好程序->在DOS下打开该文件->javac 程序名.java->java 序名。
第四, 重要的函数
输出System.out.println();
数组长度 int x[],则它的长度为x.length
将数值转化为字符串toString()
比较两个数是否相等 equals()
得到事件的命令 e.getCommand();其中 e是ActionEvent类型的。
第五, 程序的一般架构是:
Public class 类名
{
Public static void main(String[] args)
{
}
}
第六, 方法重载,编译器将根据参数的个数和类型来决定当前所调用的方法。
第七, Static说明:创建一个类的成员,但它又独立于该类的任何实例对象,只需要声明为static就可以了。于是乎,就不能使用this,也不能直接访问实例变量(通过实例对象)。
第八, Final的说明:final修饰成员变量则为常量,final修饰成员函数则为最终方法。
第九, 类继承的实现:extends
第十, Super的说明:this用来引用当前对象,super用来引用当前对象的父类。
第十一, 关于包的应用,其实它就是一个文件夹,import test.*;的话就得先创建test文件夹。
第十二, 对异常的处理:一、使用try-catch-finally语句捕获异常;二、通过throws子句生命异常,还可以定义自己的异常类,并用throw语句来抛出它。
第十三, InputStream和OutputStream是面向字节的,Reader和Writer是面向字符的。
第十四, 输入字节流抽象类InputStream有许多的子类,比如FileInputStream……
第十五, 建立一个文件输入流FileInputStream的步骤:
File myFile=new File(“..”);
FileInputStream myInputStream=new FileInputStream(myFile);
第十六, 对象的串行化:对象通过写成描述自己状态的数值来记录自己。
一个类对象的串行化:首先,这个类必须实现Serializable接口;其次,该对象必须与一定的输入输出对象流联系起来,通过对象的输出流将对象的状态保存起来,通过对象的输入流将对象的状态恢复。
第十七,对对象进行串行化:
定制串行化时需要重写writeObject(ObjectOutputStream out);以及readObject(ObjectInputStream);其实就是把信息保存在一个*.ser的文件里面,然后再读取。
第十八,RandomAccessFile类提供了随机访问文件的能力。
第十九,对象串行化:可对JAVA对象进行储存和还原,保存运行是产生的信息。
第二十,把JAVA 对象和基本数据类型输出到串行化流中。
FileOutputStream f=new FileOutputStream(“temp”);
ObjectOutputStream s=new ObjectOutputStream(f);
s.writeObject(“Today”);
第二十一,对于某些类型的对象,其状态是瞬时的,这样的对象是无法保存其状态的,需要用transient。
第二十二,构造线程可用继承Thread来创建对象。线程中用start()来启动,实现时要重新实现run()方法。
第二十三,线程的控制:
1, 创建时声明:MyThreadClass myThread=new MyThreadClass();
2, 启动线程:Thread myThread=new MyThreadClass();
myThread.start();
第二十四,wait()方法:.为线程提供的用于线程之间通信的同步控制方法。Wait()使当前线程主动释放互斥锁,并进入该互斥锁的等待队列。等待其他线程调用notify()方法继续执行本线程。
第二十五,daemon线程:服务线程,优先级比较的低,为同一进程中的其他线程或对象提供服务。
第二十六,synchronized(同步)来实现对象的互斥锁关系。
第二十七,几个重要的AWT软件包:
Java.awt:包含基本组件及类和方法。
Java.awt.event:提供事件类和监听器。
第二十八,常用的布局管理器:
FlowLayout:从左到右,从上到下,一个挨一个地放到容器中。
BorderLayout:按北、东、西、南、中安排组件。
GridLayout:网格布局管理器。
SetLayout()方法实现其中的一种布局。
第二十九,事件的授权模型:从一个事件源授权到一个或多个事件监听者,组件作为事件源可以触发事件,通过addxxxxListener向组件注册监听器,一个组件可以注册多个监听器,如果组件触发了相应类型的事件,此事件被传送给已注册的监听器,事件监听器负责事件的处理。
第三十,事件监听:
1, 引入包:import java.awt.event.*
2, 类继承监听类,比如:TestAddListener implements ActionListener
3, 注册监听器,比如:b=new Button(“press”);
b.addActionListener(this);
4,实现具体的接口方法,比如:
Public void actionPerformed(ActionEvent e){}
注意:可以声明多个接口,接口之间用逗号隔开;可以同时监听一个事件源上发生的多种事件。
第三十一,事件适配器:用户通过这个可以不用实现全部的接口方法,只需要实现感兴趣的接口就行了。
第三十二,基本组件的应用
1,BUTTON:
getActionCommnd():得到按钮的标识符。
2,CheckBox:
CheckBox():构造函数。
getItem():获得被修改复选框中的字符串。
第三十三, 向小应用程序传递参数
<PARAM NAME=”size” VALUE=”Helvetica”>
利用Applet类的getParameter()方法获得参数值。
第三十四,多媒体支持:
1, 加载图像 getImage();
2, 跟踪图像文件何时下载完 ,使用MediaTracker类
MediaTracker tracker=new MediaTracker(Component comp);
Tracker.addImage(Image img,int id);
等待一个图像完全下载完毕
try{
tracker.waitForID(id);
}catch(InterruptedException e){};
3, 显示图像 drawImage();
4,处理图像
AWT 提供BufferedImageOp接口进行图像处理。例子;
BufferedImageOp op=….;
BufferedImage filteredImage=new BufferedImage(image.getWidth(),image.getHeigth(),image.getType());
5, 动画显示频率:
long startTime=System.currentTimeMillis();
…….
startTime+=200;
Thread.sleep(Math.max(0,startTime-System.currentTimeMillis()));
第三十五,小应用程序与浏览器的通信
1,URL getCodeBase():用于从浏览器获取Applet 的URL地址。
2,URL getDocumentBase():用于从浏览器获取Applet所嵌入的HTML文件的URL地址。
3, String getParameter(String name);用于获取HTML文件中名称为PARAM单元所给出的参数值(value),其中参数名name是与大小写无关的,但返回的参数值与大小写有关。