- 对字符串的都有哪些方法?详细说明下。
具体有String、StringBuffer和StringBuilder这三个类。
- String是不可变类,每次操作都会生成新的String对象,并将结果指针指向新的对象,由此会产生内存碎片。
- 如果要频繁对字符串修改,采用StringBuffer 和 StringBuilder更好一些。
- StringBuffer是线程安全的,多线程的时候推荐使用StringBuffer,但是大多数情况下是单线程,大多使用StringBuilder。
22.String str="abc"与 String str=new String(“abc”)的定义方法一样吗?
不一样,String str="abc"的方式,jvm会将其分配到常量池中;所以建议这种写法。
而 String str=new String(“abc”) 则会被分到堆内存中,如果频繁修改,会导致内存碎片。
23.String 类的常用方法都有那些?
indexOf():返回指定字符的索引。
length():返回字符串长度。
equals():字符串比较。
replace():字符串替换。
trim():去除字符串两端空白。
split():分割字符串,返回一个分割后的字符串数组。
toLowerCase():将字符串转成小写字母。
toUpperCase():将字符串转成大写字符。
substring():截取字符串。
24.一般的类和抽象类有哪些区别?
- 一般的类不能包含没有方法体的抽象方法,而抽象类可以包含抽象方法。
- 抽象类不能直接用new来实例化,普通类可以直接实例化。
25.抽象类能使用 final 修饰吗?
语法上不能,从抽象类的本意来说,抽象类是让其他类继承的,如果定义为final就不能被继承,这样是违背了抽象类的本意,所以final不能修饰抽象类
26.接口和抽象类有什么区别?
接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。
抽象类表示的是,这个对象是什么。cat类,dog类他们的抽象类是pet,说明他们是pet。
接口表示的是,这个对象能做什么。cat吃东西,dog吃东西,这样就可以定义一个接口“吃”,具体吃什么让类自己实现。
一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口、走路接口)。
- 接口是抽象类的变体,接口中所有的方法都是抽象的。而抽象类是声明方法的存在而不去实现它的类。
- 接口可以多继承,抽象类不行
- 接口定义方法,不能实现,而抽象类可以实现部分方法。
- 接口中基本数据类型为static 而抽类象不是的。
当你关注一个事物的本质的时候,用抽象类;当你关注一个操作的时候,用接口。
27.java 中 IO 流分为几种? BIO、NIO、AIO 有什么区别?
按功能分输入流(input)和输出流(output),从类型来分可以是字节流和字符流
BIO,Block IO, 同步阻塞式 IO,就是平常经常使用的传统 IO,特点是简单方便,但并发处理能力低。
NIO,New IO, 同步非阻塞 IO,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。
AIO,Asynchronous IO, 实现了异步非堵塞 IO ,它是基于事件和回调机制。
28.Files的常用方法都有哪些?
Files.exists():检测路径是否存在。
Files.createFile():创建文件。
Files.createDirectory():创建文件夹。
Files.delete():删除文件或文件夹。
Files.copy():复制文件。
Files.move():移动文件,即复制后删除。
Files.size():查看文件的个数。
Files.read():读取文件。
Files.write():写入文件。
29.请你谈谈java中是如何支持正则表达式操作的,请你简单描述一下正则表达式及其用途,
Java中的String类提供了支持正则表达式操作的方法,包括:matches()、replaceAll()、replaceFirst()、split()。此外,Java中可以用Pattern类表示正则表达式对象,它提供了丰富的API进行各种正则表达式操作
在处理字符串时,经常会有 查找符合 某些 复杂规则的字符串的需要,正则表达式就是用于 描述这些规则的工具
30.java和javascript有什么关系与区别
没什么关系,依稀记得好像是java当时很火热,javascript为了蹭热度,所以取名为javascript,实际上是完全不一样的东西。他们的关系就像:老婆和老婆饼,张三和张三丰。
JavaScript 是动态类型语言;而 Java 是静态类型语言。
JavaScript 中的变量声明采用弱类型,即变量在使用前不需作声明,而是解释器在运行时检查其数据类型。Java 采用强类型变量检查,即所有变量在编译之前必须作声明。
它们的语法和 C 语言都很相似;它们都是面向对象的(虽然实现的方式略有不同);
Java和JavaScript各有所长各有专精,Java的舞台在编程领域,而JavaScript的得心之处是在Web页面中
参考:https://blog.csdn.net/sxeric/article/details/113920719