好几次碰到已经刷过的奇怪的题,还是想不起来,所以还是好记性不如烂笔头,都记下来面试之前看一遍好了。
语言特性
不借助中间变量,交换字符串
要用到三次亦或:
1 | int a=5555; |
2 | int b=6666; |
3 | a^=b; |
4 | b^=a; |
5 | a^=b; |
6 | System.out.println(a+" "+b); |
Java不能字符串的亦或操作,用数字表示了,好像c可以??
Java类型转换
今天犯了个错,char转int直接强转,然后得到了Unicode。
可以Integer.parseInt('x'+"")
转成string再转换
或者Character
的静态方法:Character.getNumericValue((int)'5')
今天发现个好玩的事情,测试一个回文字符串算法,重复十亿次看时间,发现二十个字符和十个字符好时差别不大,四十个和二十个却有十倍的差距,我猜应该是虚拟机对段字符串有优化,留个坑改天详细研究。
Java语言基础
final关键字
static关键字
静态变量
同一个类在内存中只有同一个拷贝,可以用类名直接访问,也可以通过对象访问(不推荐)
静态方法
可以通过类名调用,任何势力都可以调用,所以静态方法中不能有this和super关键字。静态方法必须被实现,不能是abstract。
静态代码块
JVM加载类的时候按照出现的先后顺序执行,每个代码块只被执行一次。
静态内部类
- 一个内部类如果想要有静态的成员变量或者成员方法,那他本身必须是static关键字修饰的。
- 静态内部类只能访问外部的静态方法和变量,非静态的不能访问,这是静态内部类最大的使用限制,普通的非静态内部类没有这个限制。
静态导包
导入静态方法,简化操作,比如:1
import static java.lang.System.out
2
out.println("text");