java总结

论坛 期权论坛 脚本     
匿名技术用户   2021-1-3 09:23   50   0
  • 重写equals和hashcode
    • hashset add对象数据时,先比较hashcode是否相同,如果hashcode不同的话,直接写进去,如果相同的话会比较equals方法
    • 在将对象存储在HashSet之前,要先确保对象重写equals()和hashCode()方法
  • 接口
    • 属性默认public static final,方法默认public abstract
  • 抽象类
    • 作为父类:没有抽象方法,可以有成员变量和成员方法,可以定义子类共有的方法给子类做默认实现,提高代码复用性
    • 作为抽象类:有抽象方法,规定子类必须重写的方法
    • 构造方法
      • 创建子类对象时,默认调用父类无参构造
      • 可以通过super(参数),访问父类的有参构造
  • 重载(Overload)和重写(Override)的区别
    • 重载:一个类中,同名的方法有不同的参数列表,与返回值无关,编译时的多态性
    • 重写:子类继承父类方法,有相同的参数列表,有兼容的返回类型,运行时的多态性
  • 多态
    • 接口或父类的引用指向实现类或子类对象
    • 接口或父类不能调用实现类或子类独有的方法,如要调用需向下转型(强转为子类对象)
    • 字节流byte
      • fileinputstream/fileoutputstream
      • 高效:bufferinputsteam/bufferoutputstream
      • 转换流---字节转字符
        • inputstreamreader/outputstreamwriter
      • 读写二进制文件datainputstream/dataouputstream
    • 字符流char/string
      • filereader/filewriter
      • 高效:bufferedreader/bufferedwriter
  • jvm
    • System.exit(1)
      • 中断程序,退出java虚拟机
  • exception
    • 体系
      • object
        • throwable
          • error程序无法解决的异常
          • exception
            • checked exception编译时期异常
            • runtion exception
    • try-cath-finally中存在return,则先执行finally释放资源,再return
    • throw和throws
      • throws声明异常,在方法参数后面,可以声明多个异常
      • throw 抛出异常,在方法体内,抛出一个异常
    • 异常链
      • 调用MyException2的有参构造函数,把MyException1当作cause传递进去
  • string、stringbuilder、stringbuffer
    • string
      • Immutable不可变的
      • 没有大量的字符串操作的业务场景
    • stringbuilder
      • mutable可变的,线程不安全
      • 在单线程,有大量的字符串操作的业务场景
    • stringbuffer
      • mutable可变的,线程安全
      • 在多线程,有大量的字符串操作的业务场景
  • 集合
    • Collection单列集合add(Object)/remove(Object)/clear/isEmpty/size/contain()/sort()/shuffle()
      • List不唯一,有序add(int index, Object)/remove(int index)/get(int index)
        • ArrayList底层动态数组,适合查
        • LinkedList底层链表,适合增删改
        • Vector
        • 遍历
          • 迭代器
            • Iteractor it = c.iterator();
            • while(it.hasNext()) {
            • System.out.println(it.next());
            • }
          • list.stream().forEach(System.out::println);
      • Set唯一,无序
        • HashSet底层哈希算法
        • TreeSet底层二叉树,可以排序
    • Map双列集合keySet()/entry entrySet()/Collection values()
      • HashMap
      • TreeMap
      • HashTable
    • 排序
      • Comparable内比较器
        • 基本数据类型/对象已实现Comparable接口,重写compareTo,返回值是int(1,0,-1)
      • Comparator外比较器
        • 对象未实现Comparable接口/比较方式不适合当前场景,重写compare,返回值是int(1,0,-1)
    • 数组转集合
      • Array.asList(arr/a,b,c...);
    • 泛型
      • 定义:参数化类型的一种语法
      • 集合使用E,K,V等泛型来定义元素类型
      • 创建集合时传输类型给泛型,来指定集合元素类型,防止存入错误类型的值
      • 避免了使用object,取值时强转出错的问题
      • 泛型类/接口
        • public class/interface mydata<A> {A data;}
      • 通配符(?)
        • 在不确定方法的参数类型时,使用通配符继承其超类/父类,以确定一个参数类型范围
        • List<? extends HasWord>

          • 如果你想从一个数据类型里获取数据,使用 ? extends 通配符,add()方法受限,不能确定实例化对象类型
        • List<? super HasWord>

          • 如果你想把对象写入一个数据结构里,使用 ? super 通配符,get()方法受限,因为list存放的对象类型不确定
  • 内部类
    • 成员、静态、局部(方法中)
    • 匿名内部类(方法中)
      • new test(){重写父类方法}.equals(),相当于new一个test的实现类的对象,可在对象后直接调方法
      • Collections.sort(list, comparingInt(Person::getAge).thenComparing(Person::getName));
      • lambda
        • Collections.sort(list, (o1, o2) -> {int result = o1.getAge()-o2.getAge(); return result==0? o1.getName().compareTo(o2.getName()): result;});
  • 枚举enum test{male,female}
  • 序列化/反序列化
    • 序列化:将对象的状态写入特定流中的过程
    • 反序列:将特定流中获取的数据构建为对象的过程
    • 前提
      • 实现serializable接口,标记实现类可以被序列化
      • 创建序列化流ObjectOutputStream/ObjectInputStream
      • ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("user.data"));
  • 线程
    • 线程的生命周期

    • Thread 是实现的Runnable接口
      • 因为java单继承、多实现,因此实现Runnable,预留继承位置更好
      • start()方法被用来启动新创建的线程,而且start()内部调用了run()方法,
      • 当你直接调用run()方法的时候,只会是在原来的线程中调用, 没有新的线程启动,start()方法才会启动新线程
      • 在执行完任务之后无法获取执行结果。
    • 如果需要返回线程执行结果
    • CyclicBarrier和CountDownLatch
      • 都可以用来让一组线程等待其它线程。CountdownLatch不能重新使用
  • 网络协议
    • 应用层:http/ftp/tftp/smtp/snmp/dns
    • 传输层:基于tcp/udp协议的socket网络通信
      • tcp:面向连接,可靠、双向通信,速度相对慢,三次握手方式验证
      • udp:无连接,不可靠的,速度快,适合视频,通话等能够容忍部分数据丢失的场景
    • 网络层:icmp/igmp/ip/arp/rarp
    • 数据链路层/物理层:底层网络定义协议
  • 可变长度形参
    • public void test1(String ... books){}
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP