1.java默认浮点型为double型,所以需加"f或F"或强制转型
float num=3.14159f
2.float浮点型基本类型计算不精确
3-2.6==0.4->false
3-2.6=0.399999....
可用高精度数字计算类BigDecimal解决
3.位运算是乘以2的倍数最快的计算方法
int value=2<<4
//2乘以2的4次方
4.&与&&的区别
'&':位与运算符 对数进行运算
"&&":逻辑与运算符 对表达式进行运算
5.整数默认为int型,浮点数默认为double型
不同类型数值进行运算,结果为精度最高的类型
double num=3+3.14;//可以
int num=3+3.14//需强制转型
6.形参实参问题
基本数据类型在传参时是值传递
引用类型在传参时是引用传递(对象,数组...)
String有点特殊,可以当作值传递理解
7.java采用Unicode编码,2字节表示一个字符
'a'的ASCII编码的二进制数据形式为01100001
Unicode字符编码的数据形式为00000000 01100001
'd'==100;//true
"d"==100;//false
8.java类都继承Object类
Object.equals通常比较两个引用是否指向内存中的同一个对象
所以String重写equals比较两者内容是否相等
9.如何创建Class对象?
Class也是一种类,各种name.class其实是它的实例化对象
- Class c=Class.forName("java.lang.String");//通过类的完整路径获取Class对象
- Class c=String.class;//通过类的class属性得到Class对象
- Student stu=new Student();//通过类的实例调用getClass方法得到
Class c=stu.getClass();
10.分割字符串
String[] split=text.split("");//将每个字符分离出来成为字符串数组
text.charAt[];//索引字符
11.java为什么要出现包装类?
面向对象特点 :使基本数据类型赋予类和对象的特性,方便增加修改其中方法.
12.String类型不能继承,定义为final的类不能被继承
13.线程安全与非线程安全的区别:
线程安全:多个线程访问资源时,会将资源锁住,等待线程结束,其他线程才能访问.
ps:非线程安全比线程安全效率高,估计是省了上锁时间.
14.replace(charsequence oldChar,charsequence newChar)与replaceAll(String regex ,String replacement)区别.
前者为匹配字符或字符串
后者为匹配正则表达式
String s="Hello.wolrd";
print (s.replace(".","/"));//=>"Hello/world"
print (s.replaceAll(".","/"));//=>"//"变成全是'/'
15.ArrayList和LinkedList的区别?
ArrayList 相当于数构中的线性表,底层使用数组来储存元素。适合快速取得指定位置的元素,但删除元素时,后面元素必须全部向前移动一位。
LinkedList 相当于数构中的链表,底层使用对象来保存元素,适合增加和删除,获取指定元素时,需从头开始遍历。
16.TreeSet是Set接口中唯一实现排序的实现类。
17.Map类似于数学中的函数,Set类似集合
18.Collections工具类是为Collection接口及其实现类提供附加操作。
19.方法内部有throws Exception ,就需要在调用此方法时使用try…catch捕捉异常
20.释放资源时应该遵循先打开后释放的原则
例:先打开输入流,再打开输出流,就需要先关闭输出流,后关闭输入流
21.字符流和字节流的区别?
字符流多用于文本文件(按字符字节数大小读取)
字节流多用于二进制文件(按数据类型字节数大小读取)
22.泛型不支持协变
List<Object> a=new List<Integer> ;//编译不通过