(1)String、 StringBuffer、StringBuild的区别
String和StringBuffer都是jdk10.出现的,StringBuild是jdk1.4出现的,先谈谈他们的相互转化
String 转 StringBuffer StringBuffer sb = new StringBuffer("Str") ;
StringBuffer 转 String StringBuffer .toString(sb)
StringBuffer,StringBuild常用的几个方法append()我就不说了(String类没有的)
public StringBuffer reverse() //字符串反转 下面自己也可以反转 面试题可能会问
public static void main(String[] args) {
//反转一个字符串
String str = "12345 67890";
String[] strAry = str.split("");
ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i < strAry.length; i++) {
if(!strAry[i].equals("")){
list.add(strAry[str.length() +1 - i]);// length + 1 = i(起初) +y(对应的最后一个)
}
}
for (String string : list) {
System.out.println(string);
}
}
public StringBuffer insert(int offeet,数据类型变量) //在指定位置追加内容
public StringBuffer delete(int start, int end) //删除指定索引的内容
StringBuild 类似 它们两个都实现了serializable,CharSequence接口 String不仅实现了这两个还实现了Compareable接口
总结:三者区别
String类一旦被创建就不能被修改,修改的只是地址值的引用,如果频繁修改建议用StringBuffer(地址值没人指向会差生垃圾,等待被RunTime类的单例模式的静态方法调用回收,gc())
StringBuffer,StringBulid可以修改,但是由于StringBuffer是线程安全的,StringBulid是异步的是线程不安全的
三者都不能被继承 类的修饰符 final:表示终结器,用于定义不能被继承的父类,不能被复写的方法和常量
public synchronized StringBuffer append(String str) {
super.append(str);
return this;
}
(2)重载与重写的区别
重写:发生在一个类里面,方法名相同,参数类型和个数不同,没有权限限制
覆写:发生在继承关系里,方法名相同,参数类型、个数、方法返回值相同,被复写的方法不能比父类更严格
(3)java如何实现序列化,有什么意义?
序列化是处理对象流的一种机制,所谓对象流就是对对象流化,可以对流化后的对象进行读写操作,也可以将流化后对象进行读写操作,也可以将流化后的对象传输于网络之间。序列化是为了解决对象流读写操作时可能引发的数据乱序问题。
实现序列化,需要让类实现serializable接口,然后是使用输出流来构造对象输出流并同writeObject(Object)方法就可以实现对象写出,如需要反序列化,可以用输入流建立对象的输入流,然后通过对象的readObject(Object)方法就可以从流中读取对象,序列化除了实现对象的持久化之外,还能够用于对象的深度克隆。