java基础面试

(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)方法就可以从流中读取对象,序列化除了实现对象的持久化之外,还能够用于对象的深度克隆。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值