java基础

1. 怎么确保一个集合不被修改

  Collections的unmodiableList(); unmodiableMap(); unmodiableSet();

2. replace 和 replaceAll的区别

  相同点:都是全部替换,即把源字符串中的某一字符或字符串全部换成指定的字符或字符串;

  不同点:replaceAll支持正则表达式,因此会对参数进行解析(两个参数均是),如replaceAll("\d", "*"),而replace则不会,replace("\d","*")就是替换"\d"的字符串,而不会解析为正则。

  另外还有一个不同点:“”在java中是一个转义字符,所以需要用两个代表一个。例如System.out.println( "\" ) ;只打印出一个""。但是“”也是正则表达式中的转义字符,需要用两个代表一个。所以:\\被java转换成\,\又被正则表达式转换成,因此用replaceAll替换“”为"\",就要用replaceAll("\\","\\\\"),而replace则replace("\","\\")。

如果只想替换第一次出现的,可以使用replaceFirst(),这个方法也是基于规则表达式的替换,但与replaceAll()不同的是,只替换第一次出现的字符串。

3.  自动装箱与自动拆箱

  装箱:基本类型转换为包装类型,例如:Integer i = 1,其实是  Integer i = Integer.valueOf(i);

  拆箱:包装类型转换为基本类型,例如:int x = i ,其实是 int x = i.intValue(); 就是包装器类型.xxxValue()。

  补充:基本类型和包装类型用==比较时,包装类型会自动拆箱为基本类型,所以实际就是两个基本类型在比较

4. final和static的区别

  相同:可以修饰类,成员属性,方法。修饰的方法都不能被重写。都不能修饰构造方法

  不同:static可以修饰代码块,final不行。final可以修饰方法内的局部变量,static不可以

5. 操作字符串都有哪些类

  String:String类的方法都是返回 new String。对String的任何修改都不影响到原对象,对字符串的修改操作都会生成新的对象所以效率低

  StringBuffer:对字符串的操作方法都加了synchronize,保证线程安全

  StringBuilder:相比StringBuffer效率高,不保证线程安全。如果对某个字符串频繁的修改操作,不推荐使用String去操作

原文地址:https://www.cnblogs.com/elian91/p/15342752.html