📄 1_java学习笔记.txt
字号:
1. JFC预览
答:1) Java基础类是关于GUI组件和服务的完整集合,它大大简化了健壮Java应用程序的开发和实现;
2) Java基础类其中的一部分就是Swing, Swing是构筑在AWT上层的一些组件的集合;
3) Java基础类主要包含5个API:
a. AWT: 为各类Java应用程序提供了多种GUI工具;
b. Java2D: 一图形API, 为Java应用程序提供了一套高级的有关二维图形图像处理的类;
c. Accessibility API: 提供了一套高级工具,用以辅助开发使用非传统输入和输出的应用程序。
d. Drag & Drop:提供了Java和本地应用程序之间的互操作性,用来在Java应用程序和不支持Java技术的应用程序之间交换数据。
e. Swing:JFC模块的重点,用来进行基于窗口的应用程序开发,它提供了一套丰富的组件和工作框架,以指定GUI如何独立于平台地展现其视觉效果。
2. Swing介绍
答:1) 它是围绕着实现AWT各个部分的API构筑的;
2) 大多数组件不象AWT那样使用与平台相关的实现。
3. 导入Swing过程
答:1) 导入Swing包;
2) 选择外观和感觉(getLookAndFeel());
3) 设置窗口容器
a. JFrame与Frame相似;
b. 你不能直接将组件加入到JFrame中;
c. 一个content pane包含了除菜单条外所有Frame的可视组件
4. JComponent类
答:1) 所有Swing都作为JComponent的子类来实现;
2) Swing组件从JComponent继承了如下功能:
a. 边框(setBorder()方法指定在组件周围显示的边框, EmptyBorder的实例来指定一个组件在其周围留有一定的额外空间);
b. 双缓冲(可以改善一个频繁被改变的组件的外观,缺省是双缓冲);
c. 提示框(通过用setToolTipText()方法来指定一个字符串,提供给用户有关某个组件的帮助信息)
d. 键盘导航
e. 应用程序范围的可插式外观和感觉
Java小程序
1. 什么是Applet?
答:1) Applet是能够嵌入到一个HTML页面中,且可通过Web浏览器下载和执行的一种Java类;
2) Applet通过浏览器或applet viewers运行;
2. Applet的安全限制
答:1) 运行时执行另一程序;
2) 任何文件的输入/输出;
3) 调用本地方法;
4) 尝试打开除提供Applet的主机之外的任何系统的Socket。
3. Applet和AWT的层次
答:java.lang.Object
|
|
java.awt.Component
|
|
java.awt.Containter
|
|
java.awt.Panel
|
|
java.applet.Applet
4. Applet的方法和Applet的生命周期
答:1) init()
a. 只在Applet首次装入时被调用, 并且在调用start()之前执行完成;
b. 可用于初始化数据值;
2) start()
a. 当Applet成为可见时运行
3) stop()
a. 当Applet成为不可见时运行
5. Applet标记
答:1) code=appletFile.class 给定了含有编译好的Applet子类的文件名;
2) width = pixels height = pixels 给出了Applet显示区域的初始宽度和高度;
3) codebase = codebaseURL 指定了Applet的URL(包含有Applet代码的目录, 如该属性未指定,则采用文档的URL);
4) align = alignment 指定了Applet的对齐方式
5) <param name = appletAttribute1 value = value> 提供参数
6. Applet和浏览器的交互方法
答:1) getParameter(String name): 取得参数;
2) getCodeBase(): 返回一个描述Applet类文件本身源目录的URL对象;
3) getDocumentBase(): 返回一个描述装载Applet的HTML文件的URL对象;
2004-9-1 星期三 雨
线程
1. 什么是线程?
答:1) 一个线程是一个程序单个的连续控制;
2) 一个软件能处理一系列的线程构造;
3) 线程能同时运行,彼此独立;
4) 包为java.lang.Thread;
2. 线程或上下文的构成
答:1) 一个虚拟处理机;
2) CPU执行的代码
代码可以或不可以由多个线程共享,这和数据是独立的。两个线程如果执行同一个类的实例代码,则它们可以共享相同的代码。
3) 代码操作的数据
数据可以或不可以由多个线程共享,这和代码是独立的。两个线程如果共享对一个公共对象的存取,则它们可以共享相同的数据。
3. 线程机制
答:1) 当线程开始,run()方法里代码被执行;
2) 创建线程的二种方法:
a. 继承Thread类;
b. 实现Runnable接口。
4. 通过继承Thread类创建一个线程
答:1) 定义
public class MyThread extends Thread{
public void run(){...}
}
2) 初始化
MyThread testThread = new MyThread()
5. 通过实现runnable接口创建一个线程
答:1) 定义
public class MyRunnable implements Runnable {
public void run(){...}
}
2) 初始化
MyRunnable testRunnable = new MyRunnable();
Thread testThread = new Thread(testRunnable)
6. 二种创建线程方法的比较
答:1) 继承Thread类是面向对象编程;
2) 实现Runnable接口解决了单继承
7. 线程调度
答:1) 线程是抢占式的,但并不一定是分时的;
2) 有多个线程可运行,但只有一个线程在实际运行。
3) 所有可运行线程根据优先级保存在池中,当一个被阻塞的线程变成可运行时,它会被放入相应的可运行池,优先级最高的非空池中的线程得到处理机时间。
4) sleep()调用会给较低优先级线程一个运行的机会,yield()方法只会给相同优先级线程一个执行的机会。
8. 线程的基本控制
答:1) 启动线程:使用start()方法,这意味着线程可以由JVM调度并执行,并不意味着线程就会立即执行。
2) 终止一个线程:当一个线程结束运行并终止时,它就不能再运行了。
3) 测试一个线程:isAlive()方法用来确定一个线程是否仍是活的。活着的线程并不意味着线程正在运行。
4) 延迟线程:
sleep():使线程停止一段时间,间隔期满后,线程不一定立即恢复执行。
join():挂起当前线程,直至它所调用的线程终止。
9. synchronized关键字
答:1) 标识一组变量应该被一个线程独占地使用;
2) public void push(char c){
synchronized(this){
...
}
}
public synchronized void push(char c) {
...
}
3) 所有对易碎数据的存取应当是同步的,由synchronized保护的易碎数据应当是private的。
10. 线程交互
答:1) wait():交出锁和CPU的占用;
2) notify():将从对象的等待池中移走一个任意的线程,并放到锁池中,那里的对象一直在等待,直到可以获得对象的锁标记。
3) notifyAll(): 将从等待池中移走所有等待那个对象的线程并放到锁池中,只有锁池中的线程能获取对象的锁标记,锁标记允许线程从上次因调用wait()而中断的地方开始继续运行。
2004-9-2 星期四 阴
流式I/O和文件
1. 流和基础知识
答:1) 一个流是字节的源或目的
2) 二种基本的流是:输入流和输出流
2. InputStream方法
答:1) 三个基本的read()方法
a. int read(): 从流里读出的一个字节或者-1;
b. int read(byte[]):将数据读入到字节数组中,并返回所读的字节数;
c. int read(byte[], int , int):两个int参数指定了所要填入的数组的子范围。
2) 其它方法
a. void close(): 关闭流,如使用过滤器流,关闭栈顶部的流,会关闭其余的流。
b. int available(): 返回可从流中读取的字节数。
c. skip(long): 丢弃了流中指定数目的字符。
2. OutputStream方法
答:1) 三个基本的read()方法
a. void write():
b. void write(byte[]):
c. void write(byte[], int , int):
写输出流。
2) 其它方法
a. void close(): 关闭流,如使用过滤器流,关闭栈顶部的流,会关闭其余的流。
b. int flush(): 允许你强制执行写操作。
3. FileInputStream和FileOutputStream
答:1) 结点流,使用磁盘文件。
2) 要构造一个FileInputStream, 所关联的文件必须存在而且是可读的。
3) 要构造一个FileOutputStream而输出文件已经存在,则它将被覆盖。
FileInputStream infile = new FileInputStream("myfile.dat");
FIleOutputStream outfile = new FileOutputStream("results.dat");
4. BufferInputStream和BufferOutputStream
答:过滤器流,可以提高I/O操作的效率
5. DataInputStream和DataOutStream
答:通过流来读写Java基本类,注意DataInputStream和DataOutputStream的方法是成对的。
6. PipedInputStream和PipedOutputStream
答:用来在线程间通信.
7. Reader和Writer
答:1) Java技术使用Unicode来表示字符串和字符,而且提供16位版本的流,以便用类似的方法处理字符。
2) InputStreamReader和OutputStreamWriter作为字节流与字符流中的接口。
3) 如果构造了一个连接到流的Reader和Writer,转换规则会在使用缺省平台所定义的字节编码和Unicode之间切换。
8. 文件
答:1) 一个文件对象可以代表文件或者目录;
2) File类处理所有磁盘操作;
3) 构造方法:
a. File(File parent, String child):
b. File(String pathName);
c. File(String parent, String child);
d. File(URI uri)
4) 目录分隔
File.separator
9. 随机存取文件
答:1) 实现了二个接口:DataInput和DataOutput;
2) 只要文件能打开就能读写;
3) 通过文件指针能读写文件指定位置;
4) 可以访问在DataInputStream和DataOutputStream中所有的read()和write()操作;
5) 在文件中移动方法:
a. long getFilePointer(): 返回文件指针的当前位置。
b. void seek(long pos): 设置文件指针到给定的绝对位置。
c. long length(): 返回文件的长度。
10. 串行化
答:1) 将一个对象存放到永久存储器上称为保持;
2) 只有对象的数据被串行化;
3) 标记为transient关键字的数据不被串行化。
2004-9-3 星期五 阴
网络
1. socket
答:1) 在一个特定编程模型下,进程间通信链路的端点。
2) 一个socket包括两个流:一个输入流(读取另一个进程所写的数据)和一个输出流(向另一个进程发送数据)。
2. Java技术中的网络
答:1) 连接的地址(Host name 或者 IP Address);
2) 端口号(范围从0-65535, 小于1024的端口号保留给预定义的服务);
3. Java中的网络模型:
答:1) 服务器分配一个端口号,如果客户请求一个连接,服务器使用accept()方法打开socket连接;
2) 客户在host的port端口建立连接;
3) 服务器和客户使用InputStream和OutputStream进行通信。
4. 建立服务器端
答:1) ServerSocket server = new ServerSocket(post)
2) Socket connection = server.accept();
3) ObjectInputStream input = new ObjectInputStream(connection.getInputStream());
ObjectOutputStream output = new ObjectOutputStream(connection.getOutputStream());
4) 处理输入和输出流;
5) 关闭流和socket。
5. 建立客户端
答:1) Socket connection = new Socket(127.0.0.1, 7777);
2) ObjectInputStream input = new ObjectInputStream(connection.getInputStream());
ObjectOutputStream output = new ObjectOutputStream(connection.getOutputStream());
3) 处理输入和输出流;
4) 关闭流和socket。
6. URL连接
答:1) URL和URLConnection类封装了大量复杂的从远端服务器获取信息的操作;
2) 支持HTTP和FTP资源
URL url = new URL("http://www.enterinfo.net")
URL url = new URL("ftp://TonyDeng@enterinfo.net")
3) 打开一个网络连接
URLConnection urlconn = url.openConnection()
4) 打开一个输入流
inputStream in = url.openStream()
7. UDP socket
答:1) 无连接的协议
2) 不保证消息的可靠传输
3) 它们由Java技术中的DatagramSocket和DatagramPacket类支持
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -