20-12-29
1.java 中操作字符串都有哪些类?它们之间有什么区别?
操作字符串的类有:String、StringBuffer、StringBuilder。
String 和 StringBuffer、StringBuilder 的区别在于 String 申明的是不可变的对象,每次操作都会生成新的 String 对象,而后将指针指向新的 String 对象,而 StringBuffer、StringBuilder 能够在原有对象的根底上进行操作,所以在常常扭转字符串内容的状况下最好不要应用 String。
StringBuffer 和 StringBuilder 最大的区别在于,StringBuffer 是线程平安的,而 StringBuilder 是非线程平安的,但 StringBuilder 的性能却高于 StringBuffer,所以在单线程环境下举荐应用 StringBuilder,多线程环境下举荐应用 StringBuffer。
2.String str=”i” 与 String str=new String(“i”) 一样吗?
不一样,因为内存的调配形式不一样。String str=”i” 的形式,java 虚构机会将其调配到常量池中;而 String str=new String(“i”) 则会被分到堆内存中。
因为他 new 了 new 就会进堆内存
- String 类的罕用办法都有那些?
- indexOf():返回指定字符的索引。
- charAt():返回指定索引处的字符。
- replace():字符串替换。
- trim():去除字符串两端空白。
- split():宰割字符串,返回一个宰割后的字符串数组。
- getBytes():返回字符串的 byte 类型数组。
- length():返回字符串长度。
- toLowerCase():将字符串转成小写字母。
- toUpperCase():将字符串转成大写字符。
- substring():截取字符串。
- equals():字符串比拟。
4. 接口和抽象类有什么区别?
- 实现:抽象类的子类应用 extends 来继承;接口必须应用 implements 来实现接口。
- 构造函数:抽象类能够有构造函数;接口不能有。
- main 办法:抽象类能够有 main 办法,并且咱们能运行它;接口不能有 main 办法。
- 实现数量:类能够实现很多个接口;然而只能继承一个抽象类。
- 拜访修饰符:接口中的办法默认应用 public 润饰;抽象类中的办法能够是任意拜访修饰符。
5.BIO、NIO、AIO 有什么区别?
- BIO:Block IO 同步阻塞式 IO,就是咱们平时应用的传统 IO,它的特点是模式简略使用方便,并发解决能力低。
- NIO:New IO 同步非阻塞 IO,是传统 IO 的降级,客户端和服务器端通过 Channel(通道)通信,实现了多路复用。
- AIO:Asynchronous IO 是 NIO 的降级,也叫 NIO2,实现了异步非梗塞 IO,异步 IO 的操作基于事件和回调机制。