1.java 基本类型的默认值和取值范围

整数类型 byte(1 个字节)short(2 个字节)int(4 个字节)long(8 个字节)
字符类型 char(2 个字节)
浮点类型 float(4 个字节)double(8 个字节)

Java基础概念
2.Java 标识符有如下命名规则:

  • 由 26 个英文字母大小写,数字:0-9 符号:_ $ ¥ 组成
  • 标识符应以字母、_ 、$ 开头。
  • 标识符不能是关键字。

3.包引用

import java.util.* ;
能访问java/util目录下的所有类,不能访问java/util子目录下的所有类

4.servlet

是运行在服务器端的小应用程序,是接收网络服务的请求和产生响应的一种方式。
servlet 的功能:接受 http 请求,产生动态 http 响应。Web容器负责将 HTTP 请求转换为 HttpServletRequest 对象

5.java 中 IO 流

按照流的流向分,可以分为输入流和输出流

按照操作单元划分,可以划分为字节流和字符流

InputStream/Reader: 所有的输入流的基类,前者是字节输入流,后者是字符输入流

OutputStream/Writer: 所有输出流的基类,前者是字节输出流,后者是字符输出流

6.字符流和字节流的区别

字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。 字节流和字符流的区别:

  • 读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。
  • 处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。
  • 字节流:一次读入或读出是8位二进制。通过字节的形式一个字节一个字节或者字节数组来操作文件中内容,可以操作一切文件。
  • 字符流:一次读入或读出是16位二进制。通过单个字符或者是字符数组的形式来操作文件的,存在一定的局限性,是专门用于对文本文件操作的,默认的版本为GBK

设备上的数据无论是图片或者视频,文字,它们都以二进制存储的。二进制的最终都是以一个8位为数据单元进行体现,所以计算机中的最小数据单元就是字节。意味着,字节流可以处理设备上的所有数据,所以字节流一样可以处理字符数据。

7.BIO,NIO,AIO

  • BIO (Blocking I/O): 同步阻塞I/O模式,数据的读取写入必须阻塞在一个线程内等待其完成。可以让每一个连接专注于自己的 I/O 并且编程模型简单,也不用过多考虑系统的过载、限流等问题。

  • NIO (New I/O): NIO是一种同步非阻塞的I/O模型,在Java 1.4 中引入了NIO框架,对应 java.nio 包,提供了 Channel , Selector,Buffer等抽象。它支持面向缓冲的,基于通道的I/O操作方法。NIO提供了与传统BIO模型中的 Socket 和 ServerSocket 相对应的 SocketChannel 和 ServerSocketChannel 两种不同的套接字通道实现,两种通道都支持阻塞和非阻塞两种模式。阻塞模式使用就像传统中的支持一样,比较简单,但是性能和可靠性都不好;非阻塞模式正好与之相反。对于低负载、低并发的应用程序,可以使用同步阻塞I/O来提升开发速率和更好的维护性;对于高负载、高并发的(网络)应用,应使用 NIO 的非阻塞模式来开发

  • AIO (Asynchronous I/O): AIO 也就是 NIO 2。在 Java 7 中引入了 NIO 的改进版 NIO 2,它是异步非阻塞的IO模型。异步 IO 是基于事件和回调机制实现的,也就是应用操作之后会直接返回,不会堵塞在那里,当后台处理完成,操作系统会通知相应的线程进行后续的操作。AIO 是异步IO的缩写,虽然 NIO 在网络操作中,提供了非阻塞的方法,但是 NIO 的 IO 行为还是同步的。对于 NIO 来说,我们的业务线程是在 IO 操作准备好时,得到通知,接着就由这个线程自行进行 IO 操作,IO操作本身是同步的。

8.管道

对于管道,有下面这几种类型:

  • 普通管道(PIPE):通常有两种限制,一是单工,即只能单向传输;二是血缘,即常用于父子进程间(或有血缘关系的进程间)。
  • 流管道(s_pipe):去除了上述的第一种限制,实现了双向传输。
  • 命名管道(name_pipe):去除了上述的第二种限制,实现了无血缘关系的不同进程间通信
    要求是对于不同的服务器之间的通信,是要要求全双工形式的,而管道只能是半双工,虽然可以双向,但是同一时间只能有一个方向传输,全双工和半双工的区别可以如下图示理解:

Java基础概念

9.Math 类中提供了三个与取整有关的方法:ceil,floor,round,

这些方法的作用于它们的英文名称的含义相对应,例如:ceil 的英文意义是天花板,该方法就表示向上取整,Math.ceil(11.3)的结果为 12,Math.ceil (-11.6) 的结果为 - 11;floor 的英文是地板,该方法就表示向下取整,Math.floor (11.6) 的结果是 11,Math.floor (-11.4) 的结果 - 12;最难掌握的是 round 方法,他表示 “四舍五入”,算法为 Math.floor (x+0.5), 即将原来的数字加上 0.5 后再向下取整,所以,Math.round (11.5) 的结果是 12,Math.round (-11.5) 的结果为 - 11.

10.Vector 类 是在 java 中可以实现自动增长的对象数组

vector 是线程安全的 ArrayList(Vector和 List 用法差不多,不过现在已经很少用了,List 已经能全部取代 Vector 了),在内存中占用连续的空间。初始时有一个初始大小,当数据条数大于这个初始大小后会重写分配一个更大的连续空间。如果 Vector 定义为保存 Object 则可以存放任意类型。

11.JRE和JDK区别

  • JRE:Java Runtime Environment( java 运行时环境)。即 java 程序的运行时环境,包含了 java 虚拟机,java 基础类库。

  • JDK:Java Development Kit( java 开发工具包)。即 java 语言编写的程序所需的开发工具包。JDK 包含了 JRE,同时还包括 java 源码的编译器 javac、监控工具 jconsole、分析工具 jvisualvm 等。


【Java 面试那点事】

这里致力于分享 Java 面试路上的各种知识,无论是技术还是经验,你需要的这里都有!

这里可以让你【快速了解 Java 相关知识】,并且【短时间在面试方面有跨越式提升】

面试路上,你不孤单!
Java基础概念

相关文章:

猜你喜欢
  • 2021-11-05
  • 2021-05-16
  • 2021-06-26
相关资源
相似解决方案