1. \ 转义字符 '\\' 代表一个字符 因此下面输出长度为 2
String s = new String("\\\\");
System.out.println(s.length());
2.String.lastIndexOf() 字符串中某个字符或者字串最后一次出现的index
3.file.list() 列出file下的文件 得到 String[] 类型
4.String类不可变,是因为final修饰类?no:final修饰类代表类不可被继承 因为 String类里有如下声明?
private final char value[];
也不是:这个只能说明value数组的地址指向不能被改变 但是里面的数据可以改变
具体 原因:开发String的时候没有暴露任何内部成员 同时API操作没有设计没有操作vlaue的值 而是new String()的方式返回新的字符串;
String不可变的好处:效率提升和安全性提高 字符串常量池的需求 允许String缓存hashcode
private int hash; // Default to 0
因为不可变 所以hashcode唯一 作为一种性能优化手段
5. (1)商业计算使用BigDecimal。
(2)尽量使用参数类型为String的构造函数,因为double的构造函数结果存在不可预知性。
(3) BigDecimal都是不可变的的,在进行每一步运算时,都会产生一个新的对象,所以在做加减乘除运算时千万要保存操作后的值。
(4)往往容易忽略JDK底层的一些实现细节,导致出现错误,需要多加注意。
6. java中的访问权限控制符:
public protected default private
外部类只能用 public 和 default修饰
内部类类似与类的成员变量和成员方法 可以用任何权限修饰符修饰
default 默认 包访问 子类不能访问
protected 子类和本类同一个包可以访问
public 任何类都可以访问
private 只有本类可以访问