一、java基础篇

  1. jdk与jre的区别
    jdk:java开发工具,为开发人员使用
    jre:java运行环境
    jvm:java运行平台
    在这里插入图片描述
  2. ==和equals的区别
    通过源码可以看到,object时,是相同的;引用类型时,equals比较的是内容
    看下源码:
    object的:
    在这里插入图片描述
    String的在这里插入图片描述
  3. 两个对象的hashcode相同,则equals()也一定为true,对吗?. 在这里插入图片描述在这里插入图片描述. 在这里插入图片描述
    在这里插入图片描述
    可见,equals为true的,hashcode一定相同,hashcode相同,则不一定equals
  4. final在java中的作用
    final用在类上,表明该类不能被继承
    final用在方法上,表明该方法不能被重写
    final用在变量上,表明该变量的值不能被更改,并需要在初始化时进行赋值
    被final修饰的变量,在编译阶段就被放入到了常量池中,如下截图:aa由于未在常量池中,所以无法再编译阶段确定该值,bb由于在编译阶段就放入常量池,所以aa+2020的结果在编译阶段就在常量池当中,结果如下
    在这里插入图片描述
  5. String属于基础数据类型吗?
    不属于,基础数据类型为char、byte、short、int、long、float、double、boolean,注意基本类型与引用类型转换时带来的装箱和拆箱问题
  6. 如何将字符串反转
    方式很多,用最简单常用的方式StringBuffer或者StringBuilder的reverse(),例子见下图:
    在这里插入图片描述
  7. String类常用方法有哪些
    好多,随便说几个,equals,compareTo,startWith,endWith,toUpper
  8. 抽象类必须有抽象方法吗
    不是,只要类声明 的关键字为abstract即为抽象类;有抽象方法的类必须声明为 抽象类
  9. 普通类和抽象类有哪些区别
    普通类不能有抽象方法;
    抽象类不能被实例化;
    抽象类的子类如果不是抽象类,需要实现抽象类中的所有抽象方法;
    抽象类中的抽象方法只能是protected或者public;
    抽象方法不能被final修饰
    在这里插入图片描述
  10. 抽象类能使用final修饰吗
    不能;抽象类设计的初衷就是为了可以被继承实现,而final修饰的类,不能被继承
    在这里插入图片描述
  11. 接口和抽象类有什么区别
    抽象类只能单继承,接口可以多个实现
    jdk1.8之前接口不能有方法,1.8之后可以有默认方法,用default修饰
    接口中的变量默认为static的,抽象类中的变量为普通变量,默认为public static final的;接口中定义的方法,默认为public abstract的
    在这里插入图片描述
  12. java中IO流分为几种
    (1)按照数据的流向:
    输入流、输出流
    (2)按照流数据的格式:
    字符流、字节流
    (3)按照流数据的包装过程:
    节点流(低级流)、处理流(高级流)
    引用网上的图片说明
    在这里插入图片描述在这里插入图片描述
  13. BIO、NIO、AIO有什么区别
    BIO:同步阻塞IO,数据的读取写入必须阻塞在一个线程内等待其完成
    在这里插入图片描述
    NIO:同步非阻塞IO,多路复用的思想,提供了 Channel , Selector,Buffer等抽象,支持面向缓冲的,基于通道的I/O操作方法。 NIO提供了与传统BIO模型中的 Socket 和 ServerSocket 相对应的 SocketChannel 和 ServerSocketChannel 两种不同的套接字通道实现,两种通道都支持阻塞和非阻塞两种模式,对于高负载、高并发的(网络)应用,应使用 NIO 的非阻塞模式来开发
    在这里插入图片描述
    AIO:异步非阻塞IO,步 IO 是基于事件和回调机制实现的,也就是应用操作之后会直接返回,不会堵塞在那里,当后台处理完成,操作系统会通知相应的线程进行后续的操作
    在这里插入图片描述
发布了8 篇原创文章 · 获赞 0 · 访问量 125

猜你喜欢

转载自blog.csdn.net/weixin_38647628/article/details/104676706