java面试宝典读书笔记(二)-传值和引用

第六章、传值和引用

不管java参数的类型是什么,一律传递参数的副本,例1:基本类型引用传递

public class test {
public static void main(String[] args) {
	boolean test=true;
	System.out.println(test);
	test(test);
	System.out.println(test);
}
public static void test(boolean test){
	test=!test;
	System.out.println(test);
}
}

结果true  false  true。以参数形式传递简单类型变量时实际上将参数的值作为副本传递给方法函数那么不管函数中怎么改变其结果对源值

例二。对象引用传递

public class test {
public static void main(String[] args) {
	StringBuffer string=new StringBuffer("hello");
	test(string);
	System.out.println(string);
}
public static void test(StringBuffer str){
	str.append(",world");
}
}

结果输出hello,world。传入的string是一个引用引用变量传递对象形式的变量时实际是引用的一个副本即是对象的地址,通过地址找到值修改对象。
例3、string类型的引用

public class test {
public static void main(String[] args) {
	String string="hello";
	test(string);
	System.out.println(string);
}
public static void test(String str){
	str="world";
}
}

结果输出hello。String类是final型,不可修改,相当于从新分配一块地址进行操作那么跟原来的就没有关系了也就不会影响源变量.
2、静态变量和私有变量:例题中告诉我们,变量被定义为私有并不能阻止构造器对其进行初始化。静态变量的布尔类型默认值是false。静态方法不能访问非静态变量。

3、输入输出流:InputStream/OutputStream(字节操作):抽象类,基于字节的输入/输出操作。Reader/Writer(字符操作):抽象类,基于字符的输入/输出操作。OutputStreamWriter/InputStreamReader(字节、字符转换类):分别是Writer/ Reader的子类,需要InputStream/OutputStream类对象做参数。

java面试宝典读书笔记(二)-传值和引用_第1张图片

4、序列化:Java 串行化技术可以使你将一个对象的状态写入一个Byte 流里,并且可以从其它地方把该Byte 流里的数据读出来,重新构造一个相同的对象。这种机制允许你将对象通过网络进行传播,并可以随时把对象持久化到数据库、文件等系统里。Java的串行化机制是RMI、EJB等技术的技术基础。将需要被序列化的类实现Serializable接口,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着使用ObjectOutputStream对象的writeObject(Objectobj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。
用途:利用对象的串行化实现保存应用程序的当前工作状态,下次再启动的时候将自动地恢复到上次执行的状态。序列化是将java对象内存中的数据变成一串二进制数据,然后把这些数据存放在持久数据存储设备上,当需要还原这些数据的时候,再通过反序列化的过程把对象还原到内存中。
Serializable接口没有任何需要实现的抽象方法,仅仅告诉JVM对象实例可以进行序列化,并通过序列ID标识,它由静态的serialVersionUID变量提供。

你可能感兴趣的:(java面试宝典读书笔记)