您的位置:首页 > 编程语言 > Java开发

javase基础知识总结

2017-06-11 18:10 288 查看
接口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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: