javase基础知识总结


接口interface 成员变量 public static final     成员方法 public abstract  没有构造器
一个类先继承在实现


   * Collection
     *         List(存取有序,有索引,可以重复)
     *             ArrayList
     *                 底层是数组实现的,线程不安全,查找和修改快,增和删比较慢
     *             LinkedList
     *                 底层是链表实现的,线程不安全,增和删比较快,查找和修改比较慢
     *             Vector
     *                 底层是数组实现的,线程安全的,无论增删改查都慢
     *             如果查找和修改多,用ArrayList
     *             如果增和删多,用LinkedList
     *             如果都多,用ArrayList
     *         Set(存取无序,无索引,不可以重复)
     *             HashSet
     *                 底层是哈希算法实现
     *                 LinkedHashSet
     *                     底层是链表实现,但是也是可以保证元素唯一,和HashSet原理一样
     *             TreeSet
     *                 底层是二叉树算法实现
     *             一般在开发的时候不需要对存储的元素排序,所以在开发的时候大多用HashSet,HashSet的效率比较高
     *             TreeSet在面试的时候比较多,问你有几种排序方式,和几种排序方式的区别
     * Map
     *         HashMap
     *             底层是哈希算法,针对键
     *             LinkedHashMap
     *                 底层是链表,针对键
     *         TreeMap
     *             底层是二叉树算法,针对键
     *         开发中用HashMap比较多






try:用来检测异常的
catch:用来捕获异常的
finally:释放资源




Throwable的几个常见方法
* a:getMessage()
* 获取异常信息,返回字符串。
* b:toString()
* 获取异常类名和异常信息,返回字符串。
* c:printStackTrace()
* 获取异常类名和异常信息,以及异常出现在程序中的位置。返回值void。


:throws和throw的区别
* a:throws
* 用在方法声明后面,跟的是异常类名
* 可以跟多个异常类名,用逗号隔开
* 表示抛出异常,由该方法的调用者来处理
* b:throw
* 用在方法体内,跟的是异常对象名
* 只能抛出一个异常对象名
* 表示抛出异常,由方法体内的语句处理




 后续程序需要继续运行就try
 后续程序不需要继续运行就throws


Properties的load(new FileIputstream())和 store(new FileOutStream());第二参数是对列表参数的描述,可以给null




RandomAccessFile随机访问流,即能读又能写,还可在在指定位置写和读;


* LineNumberReader是BufferedReader的子类, 具有相同的功能, 并且可以统计行号


InputStreamReader 是字节流通向字符流的桥梁


用默认编码表(gbk)读写,出现乱码,gbk一个汉字占两个字节,而utf-8一个汉字占3个字节


 打印流只操作数据目的


使用ReentrantLock类的newCondition()方法可以获取Condition对象
* 需要等待的时候使用Condition的await()方法, 唤醒的时候用signal()方法
* 不同的线程使用不同的Condition, 这样就能区分唤醒的时候找哪个线程了




ThreadGroup 线程组;


程序启动一个新线程成本是比较高的,因为它涉及到要与操作系统进行交互。而使用线程池可以很好的提高性能,尤其是当程序中要创建大量生存期很短的线程时,更应该考虑使用线程池。
线程池里的每一个线程代码结束后,并不会死亡,而是再次回到线程池中成为空闲状态,等待下一个对象来使用。
在JDK5之前,我们必须手动实现自己的线程池,从JDK5开始,Java内置支持线程池


线程池
ExecutorService pool = Executors.newFixedThreadPool(2);


第三种实现方式:
implements Callable<Integer> 
Future<Integer> f1 = pool.submit(new MyRu());


工厂方法模式中抽象工厂类负责定义创建对象的接口,具体对象的创建工作由继承抽象工厂的具体类实现。
工厂接口中有抽象父类,子类实现接口,创建父类引用,子类实例




GUI
 事件: 用户的一个操作
* 事件源: 被操作的组件
* 监听器: 一个自定义类的对象, 实现了监听器接口, 包含事件处理方法,把监听器添加在事件源上, 
当事件发生的时候虚拟机就会自动调用监听器中的事件处理方法


f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {




b1.addMouseListener(new MouseAdapter() {
/*@Override
public void mouseClicked(MouseEvent e) { //单击




 端口号范围从0-65535


udp
发送Send    DatagramSocket   DatagramPacket, 指定数据, 长度, 地址, 端口
接收Receive   DatagramSocket, 指定端口号    DatagramPacket, 指定数组, 长度   DatagramSocket接收DatagramPacket
String ip = packet.getAddress().getHostAddress();
* int port = packet.getPort();


tgp
客户端
Socket ip和端口号, getinputstream   
ServerSocket 端口号, accept得到socket然后相同




.getDeclaredField



你可能感兴趣的:(java,se,java成长记)