java基础刷题笔记4
Java刷题笔记4
T1 赋值符号 | 移位
<<表示左移位
>>表示带符号右移位
>>>表示无符号右移
但是没有<<<(无符号左移)运算符
xxxxxxxxxx 这个错误通常是因为在求解Mi时,如果某个列数为0,那么Mi会变成0,从而导致除数为0的错误。所以需要在计算Mi之前,先判断列数是否为0。修改后的mathWay方法如下:public static int mathWay(int a[]) { int[] m = new int[a.length]; int[] M = new int[a.length]; int[] M1 = new int[a.length]; int[] M2 = new int[a.length]; int M0 = 1; int M1Sum = 0; int M2Sum = 0; for (int i = 0; i < a.length; i++) { int columns = i + 2; m[i] = columns - a[i]; M0 *= columns; } for (int i = 0; i < a.length; i++) { int columns = i + 2; int Mi = 0; if (columns != 0) { Mi = M0 / columns; } M[i] = Mi; M1[i] = inverse(Mi, columns); M1Sum += M1[i] * Mi * m[i]; M2[i] = M1[i] * Mi; M2Sum += M2[i]; } int x = M1Sum % M0; int k = 0; while (true) { int result = x + k * M2Sum; boolean valid = true; for (int i = 0; i < a.length; i++) { int columns = i + 2; if (result % columns != a[i]) { valid = false; break; } } if (valid) { return result; } k++; }}
这样就可以避免除数为0的错误了。java
不会初始化子类的几种
调用的是父类的static方法或者字段
调用的是父类的final方法或者字段
通过数组来引用 (在初始化数组的时候不会初始化,而操作数组中元素时才进行初始化)
T3 正则表达式
正则表达式的规则
- 任意一个字符表示匹配任意对应的字符,如a匹配a,7匹配7,-匹配-。
- []代表匹配中括号中其中任一个字符,如[abc]匹配a或b或c。
- -在中括号里面和外面代表含义不同,如在外时,就匹配-,如果在中括号内[a-b]表示匹配26个小写字母中的任一个;[a-zA-Z]匹配大小写共52个字母中任一个;[0-9]匹配十个数字中任一个。
- ^在中括号里面和外面含义不同,如在外时,就表示开头,如^7[0-9]表示匹配开头是7的,且第二位是任一数字的字符串;如果在中括号里面,表示除了这个字符之外的任意字符(包括数字,特殊字符),如abc表示匹配出去abc之外的其他任一字符。
- .表示匹配任意的字符。
- \d表示数字。
- \D表示非数字。
- \s表示由空字符组成,
[ \t\n\r\x\f]。
- \S表示由非空字符组成,
[^\s]
- \w表示字母、数字、下划线,
[a-zA-Z0-9_]
。 - \W表示不是由字母、数字、下划线组成。
- ?: 表示出现0次或1次。
- +表示出现1次或多次。
- *表示出现0次、1次或多次。
- {n}表示出现n次。
- {n,m}表示出现n~m次。
- {n,}表示出现n次或n次以上。
- XY表示X后面跟着Y,这里X和Y分别是正则表达式的一部分。
- X|Y表示X或Y,比如”food|f”匹配的是foo(d或f),而”(food)|f”匹配的是food或f。
- (X)子表达式,将X看做是一个整体
T4 try…catch…finally问题
结论:
如果try语句里有return,那么代码的行为如下:
如果有返回值,就把返回值保存到局部变量中
执行jsr指令跳到finally语句里执行
执行完finally语句后,返回之前保存在局部变量表里的值
如果try,finally语句里均有return,忽略try的return,而使用finally的return.
T5 String引用问题
str1指向常量池中的字符串;str2是通过StringBuilder类new出的对象,指向堆。故为false
当创建了匿名对象new String(“llo”)时,会在堆内存中开辟空间,地址值不一样了
T6 抽象类 & 接口
abstract class表示的是”is-a”关系,interface表示的是”like-a”关系。
is-a:继承关系 has-a:从属关系 like-a:组合关系
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 半岛Hantou的博客!