要背诵
import java.lang.Math.*;
Math.sqrt(x) 这是对x开根号
Math.pow(x,a);这是x的a次幂
1.数值类型的转换
实线是完全继承 虚线是有丢失
int转float有精度丢失 9.40以前
2.强制类型转换
double x =9.997;
int nx = (int) x; //nx=9
位运算算法面试
或就是有1就是1 ,与就是都是1 才是1
>>
任何的N进制向左移动M位,都是相当于乘以N^M;向右移动就等价于除以这个数
只要是能转成二进制的数都可以写成几个2的几次幂相加而成
二进制右移时,移几位就在前面加几个符号位
a= a>>>3;这个表示向右移,左侧一律补0
不存在算符
数组的大小是固定的,不能在原地址进行改变,要想增加,就需要重新申请地址进行改变
引用类型的==,是表示引用的是否是同一个地址
new 就是代表新开辟的空间
基本类型的数据无论怎么改,他所占的大小是不变的
引用类型无法预测申请多大的空间,所以每次改变都要重新申请地址进行修改(数组也是引用类型)
面试点:
可以使用 equals 方法检测两个字符串是否相等
s.equals(t)
如果字符串 s 与字符串 t 相等, 则返回 true ; 否则, 返回 false。
例如:
String API
char charAt (int index) :获取指定位置的字符
int codePointAt(int Index) :返回指定位置的码点
i n t compareTo(String other)
常用的API
面试点:int indexOf(String str):返回与字符串 str 或代码点 cp 匹配的第一个子串的开始位置。这个位置从索引 0 或fromlndex 开始计算。 如果在原始串中不存在 str,返回 -1。
String replace( CharSequence oldString,CharSequence newString) :替换
其意义就是用=替换数组中原有的sd
String[ ] split(x):以x为分割线进行分割
运行结果:
int 1ength( ):返回字符串的长度
返回st1中字符串的长度16
运行结果
System.currentTimeMillis();计算运行所需要的毫秒数 //16.42以前
b.append("" + i);能够增加他的速度,时间更短
换成append之后结果比较
面试重点
String ,StringBuilder, StringBuffer的区别
StringBuilder, StringBuffer一开始就申请了足够的空间,只需要在内部修改即可,节省了空间,StringBuffer是加了锁的
String 运行较慢,每次添加都需要重新申请一个页进行修改
StringBuilder, StringBuffer 他会一开始就构建足够大的空间,每次更改不需要重新申请地址,这样会大大加快速度
in.nextlnt():触发等待,输入后回车可进行下一步
向数组中添加数据