221.9.17 菜鸡日记
7/10
1、
2、
replace和replaceAll是JAVA中常用的替换字符的方法,它们的区别是:
1)replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也就是字符串);
2)replaceAll的参数是regex,即基于规则表达式的替换,比如,可以通过replaceAll("\d", "*")把一个字符串所有的数字字符都换成星号;
题目中“.”,在正则表达式中表示任何符号,
3、
4、
对于c/c++语言来说:char是一个字节,第一位是符号位,chr在计算机中是补码形式存储,而正数的补码就是原码本身:0111 1111,chr+=1后,chr变为1000 0000,实际上已经溢出了,sum在计算机中存储形式是(假设当前编译器int为16位):0000 0000 1100 1000,接着算sum += chr,sum是16位的而chr是8位的,chr会自动转成16位的,按照按符号位扩展规则,前面补1111 1111,chr变成了1111 1111 1000 0000,于是在计算机内部是0000 0000 1100 1000和1111 1111 1000 0000相加,得到(1)0000 0000 0100 1000 ,第一个1舍去,1001000是72。但是对于我们来说不需要了解那么多,知道补码1000 0000代表-128,200-128=72就完事了。
5、
StringBuilder , StringBuffer ,String 都是 final 的。
string与stringbuffer都是通过字符数组实现的。
其中string的字符数组是final修饰的,所以字符数组不可以修改。
stringbuffer的字符数组没有final修饰,所以字符数组可以修改。
string与stringbuffer都是final修饰,只是限制他们所存储的引用地址不可修改。
至于地址所指内容能不能修改,则需要看字符数组可不可以修改。