Java 零星知识实时补充

 、、

  • 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 String toString(int i) 
              返回一个表示指定整数的 String 对象。
    static String toString(int i, int radix) 
              返回用第二个参数指定基数表示的第一个参数的字符串表示形式。
    tatic String toBinaryString(int i) 
              以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。
    static String toHexString(int i) 
              以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。
    static String toOctalString(int i) 
              以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。
    static int bitCount(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 这样的语法
原文地址:https://www.cnblogs.com/Coder-Pig/p/6606185.html