、、
-
Java相对路径1、在Java开发工具的project中使用相对路径在project中,相对路径的根目录是project的根文件夹创建文件的写法是:File f = new File("src/com/lavasoft/res/a.txt");File f = new File("doc/b.txt");注意:路径不以“/”开头;脱离了IDE环境,这个写法就是错误的,也并非每个IDE都如此,但我见到的都是这样的。2、通过CLASSPATH读取包内文件读取包内文件,使用的路径一定是相对的classpath路径,比如a,位于包内,此时可以创建读取a的字节流:InputStream in = ReadFile.class.getResourceAsStream("/com/lavasoft/res/a.txt");有了字节流,就能读取到文件内容了。注意:这里必须以“/”开头;
-
Java中的访问权限控制符有四个.
作用域 当前类 同一package 子孙类 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
没有修饰时默认为friendly -
Random类
实际上是一个伪随机数生成,种子一样是时候生成的随机数序列是一样的
可以在构造函数的时候指定种子
不指定种子的时候根据当前的时间获得种子,这个时候往往得到的随机数很随机,因为种子不一样了嘛 -
Enumration和Iterator
(01) 函数接口不同
Enumeration只有2个函数接口。通过Enumeration,我们只能读取集合的数据,而不能对数据进行修改。
Iterator只有3个函数接口。Iterator除了能读取集合的数据之外,也能数据进行删除操作。(02) Iterator支持fail-fast机制,而Enumeration不支持。
Enumeration 是JDK 1.0添加的接口。使用到它的函数包括Vector、Hashtable等类,这些类都是JDK 1.0中加入的,Enumeration存在的目的就是为它们提供遍历接口。Enumeration本身并没有支持同步,而在Vector、Hashtable实现Enumeration时,添加了同步。
而Iterator 是JDK 1.2才添加的接口,它也是为了HashMap、ArrayList等集合提供遍历接口。Iterator是支持fail-fast机制的:当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast事件。 -
Map的四个实现类
HashMap 是基于“拉链法”实现的散列表。一般用于单线程程序中。
Hashtable 也是基于“拉链法”实现的散列表。它一般用于多线程程序中。
WeakHashMap 也是基于“拉链法”实现的散列表,它一般也用于单线程程序中。相比HashMap,WeakHashMap中的键是“弱键”,当“弱键”被GC回收时,它对应的键值对也会被从WeakHashMap中删除;而HashMap中的键是强键。
TreeMap 是有序的散列表,它是通过红黑树实现的。它一般用于单线程中存储有序的映射。 -
List的实现类有LinkedList(插入删除快),ArrayList(随机访问快),Vector(线程安全),Stack(后进先出)
-
ArrayList与Vector
Vector是线程安全的,对于多线程的情况下应该使用Vector
Vector构造方法多了一个可以指定增长系数
// capacity是Vector的默认容量大小,capacityIncrement是每次Vector容量增加时的增量值。 Vector(int capacity, int capacityIncrement)
两者的容量默认都是10,当容量不足时,容量增加方式不同:
若ArrayList容量不足时,“新的容量”=“(原始容量x3)/2 + 1”。
而Vector的容量增长与“增长系数有关”,若指定了“增长系数”,且“增长系数有效(即,大于0)”;那么,每次容量不足时,“新的容量”=“原始容量+增长系数”。若增长系数无效(即,小于/等于0),则“新的容量”=“原始容量 x 2”。 -
Integer的一些方法
static StringtoString(int i)
返回一个表示指定整数的String对象。static StringtoString(int i, int radix)
返回用第二个参数指定基数表示的第一个参数的字符串表示形式。tatic StringtoBinaryString(int i)
以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。static StringtoHexString(int i)
以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。static StringtoOctalString(int i)
以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。static intbitCount(int i)
返回指定 int 值的二进制补码表示形式的 1 位的数量。 -
Java垃圾回收(garbage collection)机制
栈和static数据为 根(root),从根出发,跟随所有的引用,就可以找到所有的可到达对象。也就是说,一个可到达对象,一定被根引用,或者被其他可到达对象引用
-
FileLock
通过Channel来实例化,获得独占锁/共享锁
用于多线程对于文件的锁定 -
枚举
enum Color{
Red,White,Blue,Grey;
}for(Color c:Color.values()){
System.out.println(c);
}Color ss=Color.Blue;
System.out.println(ss);
你完全可以把枚举看成是一个普通的类来处理 -
移位:
a<<n左移n位 ,低位补0
a>>n表示右移n位,如果该数为正,则高位补0,若为负数,则高位补1;
a>>>n表示无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0。
-
java 位运算符:
& | ~ ^,与、或、非、异或
除了非都是二元的运算符,因此可以用:a&=b a^=b 这样的语法