Java日常小结

Java日常小结

Tip1:AWT与Swing的区别

AWT(Abstract WindowToolkit,抽象窗口工具包):是通过调用操作系统的native方法实现的,所以在Windows系统上的AWT窗口就是Windows的风格,而在Unix系统上的则是XWindows的风格。AWT中的图形函数与操作系统所提供的图形函数之间有着一一对应的关系,我们把它称之为peers。也就是说,当利用AWT来构建图形用户界面的时候我们实际上是在利用操作系统所提供的图形库。由于不同操作系统的图形库所提供的功能是不一样的,在一个平台上存在的功能在另外一个平台上则可能不存在。为了实现Java语言所宣称的“一次编译,到处运行”的概念,AWT不得不通过牺牲功能来实现其平台无关性,也就是说,AWT所提用的图形功能是各种通用型操作系统所提供的图形功能的交集。由于AWT是依靠本地方法来实现其功能的,我们通常把AWT控件称为重量级控件。

Swing(用户界面开发工具包):是所谓的LightWeight组件,不是通过native方法来实现的,所以Swing的窗口风格更多样化。但是Swing里面也有heavyweight组件。比如,JWindow,Dialog,JFrame。Swing由纯Java写成,可移植性好,外观自不同平台上相同。Swing部件称为轻量级组件(理由:由纯JacaCode所写,因此Swing解决了Java因窗口类而无法跨平台的问题,是窗口功能也具有跨平台与延展性的特性,而且Swing不需要占有太多系统资源,因此称为轻量级组件)

Tip2:System.out与System.err的区别

1、JDK文档对两者的解释

out:“标准”输出流。此流已打开并准备输出数据。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。

err:“标准”错误输出流。此流已打开并准备接受输出数据。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。按照惯例,此输出流显示那些用户输出流(变量out的值)已经重定向到通常不被连续监视的某一文件或其他目标,也应该立刻立刻用户注意的其他信息。

2、out和err的一个区别

out往往是带缓存的,而err没有缓存(默认设置,可以改)。所以如果你用标准出错打印出来的东西可以马上显示在屏幕上,而标准输出打印出来的东西可能要在积累几个字符才能一起打印出来。如果你在应用中混用标准输出和标准出错就可能看到这个问题。

3、如果使用了log4j的日志记录,System.err会被记入日志,System.out不会

PS;打印System.err在Myeclipse是红色的。System.out是黑色的。
Tip3:paint()方法使用Graphics类型的参数

Tip4:Servlet的生命周期

分为5个阶段:加载、创建、初始化、处理客户请求、卸载

  1. 加载:容器通过类加载器使用servlet类对应的文件加载servlet

  2. 创建:通过调用servlet构造方法创建一个servlet对象

  3. 初始化:调用init()方法初始化

  4. 处理客户请求:每当有一个客户请求,容器会创建一个线程处理客户请求

  5. 卸载:调用destroy方法让servlet自己释放其占用的资源

Tip5:实例化和初始化的区别

实例化是初始化其中的一部分,初始化还包括类本身的加载,比如静态代码的执行和静态变量的初始化。因为实例化就是new一个新的对象到堆内存空间,单静态的代码就是类本身拥有的内存空间,被所有new的实例对象共享。

Java I/O

字节流:可以处理所有类型的数据,如MP3、图片、文字、视频等。在读取时,读到一个字节流就返回一个字节。(在Java中对应的类都以Stream结尾)

字符流:仅能处理纯文本数据,如txt文本等。在读取时,读到一个或者多个字节,先查找指定的编码表,然后将查到的字符返回。

字符集(Charset):各个国家和地区所指定的不同ANSI编码标准中,都只规定了各自语言所需的“字符”,比如:汉子标准(GB2312)中没有规定韩国语字符怎样存储。这些ANSI编码标准所规定的内容包含两层含义:

  1. 使用哪些字符。也就是说那些汉字,字母和符号会被收入标准中。所包含“字符”的集合就叫做“字符集”。

  2. 规定每个“字符”分别用一个为字节还是多个字节存储,用哪些字节来存储。这个规定就叫做“编码”。

Tip:处理字符数据时,必须指定其编码

Tip:关于flush()方法的解释

与在网络硬件中缓存一样,流还可以在软件中得到缓存,即直接在Java代码中缓存。这可以通过BufferedOuputStream或BufferedWriter链接代底层流上来实现。因此在写数据时,Flush很重要。

例如,一个Web服务器通过输出流向客户端响应了一个200字节的信息,但是此时的输出流有一个500字节的缓冲区。所以,输出流就一直等着Web服务器继续想客户端响应信息,当Web服务器的响应信息把输出流中的缓冲区填满时,输出流才向Web客户端响应信息。

Flush方法则可以强制输出流(或缓冲的流)发送数据,即使此时缓冲区还没有填满,以此来打破这种死锁的状态。

当我们使用输出流发送数据时,当数据不能填满输出流的缓冲区时,这时,数据就会被存储在输出流的缓冲区中。如果,我们这个时候调用关闭(close)输出流,存储在输出流的缓冲区中的数据就会丢失。所以说,在关闭输出流之前,应先刷新(flush)缓冲的输出流,强制缓冲的输出数据被写到底层输出流中。

对于PrintWriter对象,可以在构造方法中的参数中设置是否使用autoflush

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值