当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。
把Java对象转换为字节序列的过程称为对象的序列化。
把字节序列恢复为Java对象的过程称为对象的反序列化。
对象的序列化主要有两种用途:
1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;
2) 在网络上传送对象的字节序列。
一. JDK类库中的序列化API
java.io.ObjectOutputStream代表对象输出流,它的writeObject(Object obj)方法可对参数指定的obj对象进行序列化,把得到的字节序列写到一个目标输出流中。
java.io.ObjectInputStream代表对象输入流,它的readObject()方法从一个源输入流中读取字节序列,再把它们反序列化为一个对象,并将其返回。、
只有实现了Serializable和Externalizable接口的类的对象才能被序列化。Externalizable接口继续自Serializable接口,实现Externalizable接口的类完全由自身来控制序列化的行为,而仅实现Serializable接口的类可以采用默认的 ......
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author Der
* @date 2006-10-23
* @packeage_name regex
*
*/
public class RegexChk
{
public boolean startCheck(String reg,String string)
{
boolean tem=false;
Pattern pattern = Pattern.compile(reg);
Matcher matcher=pattern.mat ......
以下代码先不要在机器上运行,你能答对几道?
1.*以下代码运行的结果是什么?
class Number{
int i;
}
public class Assignment{
public static void main(String[] args) {
Number n1 = new Number();
Number n2 = new Number();
n1.i = 9;
n2.i = 47;
System.out.println ("n1.i="+n1.i+",n2.i="+n2.i);
n1 = n2;
n1.i = 50;
System.out.println ("n1.i="+n1.i+",n2.i="+n2.i);
}
}
2.先看下列代码:
Integer n1 = new Integer(20);
Integer n2 = new Integer(20);
请问如果运行这行代码:System.out.println(n1==n2);打印出来的结果是true还是false?为什么?
3.请问以下程序运行的结果是什么?
public class Display{
public static void main(String[] args) {
int x = 2, y = 3, z = 4;
String str = "x,y,z";
System.out.println (str + x + y + z);
System.out.println (x + y + z + str);
}
}
4.请看下面一段关于构造函数的程序:
cla ......
问题一:我声明了什么!
String s = "Hello world!";
许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是“Hello world!”。这样模糊的回答通常是概念不清的根源。如果要准确的回答,一半的人大概会回答错误。
这个语句声明的是一个指向对象的引用,名为“s”,可以指向类型为String的任何对象,目前指向"Hello world!"这个String类型的对象。这就是真正发生的事情。我们并没有声明一个String对象,我们只是声明了一个只能指向String对象的引用变量。所以,如果在刚才那句语句后面,如果再运行一句:
String string = s;
我们是声明了另外一个只能指向String对象的引用,名为string,并没有第二个对象产生,string还是指向原来那个对象,也就是,和s指向同一个对象。
问题二:"=="和equals方法究竟有什么区别?
==操作符专门用来比较变量的值是否相等。比较好理解的一点是:
int a=10;
int b=10;
则a==b将是true。
......
适配器(变压器)模式:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口原因不匹配而无法一起工作的两个类能够一起工作。适配类可以根据参数返还一个合适的实例给客户端。
案例:
package com.java.adapte;
public interface Shape {
public void Draw();
public void Border();
}
public class Text {
private String content;
public Text() {
}
public void SetContent(String str) {
content = str;
}
public String GetContent() {
return content;
}
}
public class TextShapeClass extends Text implements Shape {
public TextShapeClass() { ......
1. this是指当前对象自己。
当在一个类中要明确指出使用对象自己的的变量或函数时就应该加上this引用。如下面这个例子中:
public class Hello {
String s = "Hello";
public Hello(String s)
{
System.out.println("s = " + s);
System.out.println("1 -> this.s = " + this.s);
this.s = s;
System.out.println("2 -> this.s = " + this.s);
}
public static void main(String[] args){
Hello x="new" Hello("HelloWorld!");
}
运行结果:
s = HelloWorld!
1 -> this.s = Hello 2 -> this.s = HelloWorld!
在这个例子中,构造函数Hello中,参数s与类Hello的变量s同名,这时如果直接对s进行操作则是对参数s进
行操作。若要对类Hello的成员变量s进行操 ......