
01 Java基础
Java面试题
喵了个咪的回忆丶
Java后台
展开
-
Java基础知识
JDK、JRE、JVM 的区别?JRE 是Java程序的运行环境,面向Java程序的使用者,而不是开发者。JDK包含JRE,同时还包含了编译 Java 源码的编译器 Javac,以及很多 Java 程序调试和分析的工具。JVM 指java虚拟机。是JRE的一部分。它是一个虚构出来的计算机,有自己的硬件架构,比如方法区、堆栈、寄存器等。如果需要运行Java程序,只需安装 JRE 就可以了,...原创 2019-12-10 14:06:03 · 261 阅读 · 0 评论 -
Java 与 C++ 的区别、面向对象和面向过程、封装继承多态、重载和重写
Java 与 C++ 的区别Java 是纯粹的面向对象的语言,所有的对象都继承 java.lang.Object;C++ 既支持面向对象也支持面向过程。Java和C++都具有面向对象的三大特性,也就是继承、封装和多态。Java 通过JVM虚拟机实现跨平台的特性; C++ 依赖于特定的平台。Java 没有指针; C++ 有指针。Java 支持自动垃圾回收;C++ 需要手动回收。Java 不支持多继承; C++ 支持多继承。面向对象和面向过程的区别面向过程是先分析出解决问题需要的步骤,然后用原创 2020-08-26 17:49:36 · 711 阅读 · 0 评论 -
exception和error
exception 和 error它们都继承了 Throwable 类,在java中只有 Throwable 类型的实例才能被抛出或 catch。exception 是程序正常运行中可以预料的意外情况,而且可以被捕获并进行处理。error会导致程序处于非正常状态,难以捕获。exception可以分为编译时异常和运行时异常。编译时异常必须显示的进行捕获处理,运行时异常是可以通过编码来避免的逻辑错误,它不会在编译期强制要求进行捕获。编译时异常有 IOException,运行时异常有RuntimeExc原创 2020-08-26 15:36:04 · 137 阅读 · 0 评论 -
函数式编程中map、flatMap、toMap 的区别
map和flatMap的区别map:将一种类型的值转换为另外一种类型的值。flatMap:将多个Stream连接成一个Stream,这时候不是用新值来取代Stream的值,而是重新生成一个Stream对象取而代之。原创 2020-08-04 11:01:54 · 901 阅读 · 0 评论 -
泛型
泛型泛型指的是参数化类型,可以在不创建新类型的情况下,通过泛型指定的不同类型。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口和泛型方法。泛型只在编译阶段有效,在编译之后程序会去泛型化。也就是说,泛型信息不会进入到运行时阶段,但它可以方便我们做编译期的类型检查。...原创 2020-07-16 12:44:53 · 119 阅读 · 0 评论 -
反射
什么是反射?在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法,这种动态获取信息以及动态调用对象方法的功能成为 Java 反射机制。获取class对象的三种方法Class.forName(“全类名”);类名.class;对象.getClass();反射应用场景使用 JDBC 连接数据库时使用 用 Class.forNa...原创 2019-12-12 13:40:25 · 124 阅读 · 0 评论 -
Java8实战
1. 行为参数化 指把一个行为(代码块)作为参数传入另一个方法。 代码实现步骤是:先创建一个接口,接口中有且仅有一个抽象方法,然后实现这个接口,建立不同的行为,接着将行为当做参数传入 filter 方法中,这种做法类似于策略设计模式。import java.util.ArrayList;import java.util.List;public class sss { pub...原创 2019-11-09 15:39:11 · 457 阅读 · 0 评论 -
Java8新特性
Java8新特性可以通过 default 关键字向接口中添加非抽象方法的实现。java8之前,接口里的方法只能是抽象方法,我们需要通过接口创建对象,然后实现接口中的方法。java8之后,就可以直接在接口中通过 default 关键字添加非抽象方法,然后在接口创建的对象中直接使用,而不用自己再去实现了。提供了更简洁的语法:Lambda 表达式。通过它,我们可以去掉写法中的一些大括号以及 ret...原创 2020-04-22 18:17:03 · 126 阅读 · 0 评论 -
StringBuffer、StringBuilder和String的区别
1.运行速度(执行速度)StringBuilder > StringBuffer > String原因:String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。1 String str="abc";2 System.out.println(str);3...原创 2019-04-30 20:44:07 · 107 阅读 · 0 评论 -
this 和 super
thisthis表示一个对象的引用,它指向正在执行方法的对象,在构造方法中,通过this关键字调用其他构造方法时,必须放在第一行,且只能通过 this 调用一次其他构造方法。public class Test_this_super { int id; String name; boolean man; double width; public Te...原创 2020-04-28 14:49:00 · 269 阅读 · 0 评论 -
Java里的 IO
IO种类从数据传输方式可以将IO分为字节流和字符流:字节流:InputStream输入流,OutputStream输出流字符流:Reader输入流,Writer输出流如何选择:对于频繁处理字符串的情况,选择字符流会好一些,因为字符流具备缓冲区,提高了性能。缓冲区是一块特殊的内存区域,通过将数据缓存在缓冲区,之后直接从中读写,可以显著提高性能,字符流的操作都是在缓冲区进行的。字节流的操作不...原创 2020-04-23 13:45:11 · 145 阅读 · 0 评论 -
BIO、NIO、AIO、同步异步
BIO同步阻塞式IO模型: 服务端的线程会一直阻塞等待客户端发起请求,如果客户端一直不发起,那服务器端的线程会一直存在。弹性伸缩能力差: 每个客户端都会对应一个线程,对于上千万客户端的接入,会难以承受。多线程耗费资源: 线程的创建、销毁和阻塞等待,都会耗费CPU资源。NIO非阻塞式IO模型:服务器端提供一个单线程的 Selector 来同一管理所有客户端接入的 socket 连接,...原创 2019-12-27 22:10:15 · 136 阅读 · 0 评论 -
Linux和centos的关系
Linux和centos的关系 Linux是一个广义的范围,但通常指的是Linux内核。CentOS是GNU/Linux众多发行版的一种,他使用Linux内核外加一整套的介面,组成一个完整的可供使用的操作系统。...原创 2019-11-09 08:49:31 · 869 阅读 · 0 评论