Java基础
笛笛好困
这个作者很懒,什么都没留下…
展开
-
JavaNIO
一、NIO与传统IO的区别 与传统的IO相比,NIO有“面向缓存”和“非阻塞”两大特点,NIO还通过选择器(Selector)管理多个读写通道。 NIO是面向缓存的,而不是面向流操作,因此可以跳跃性读取或反复读取;传统IO是面向流的,只能顺序地从流中读取数据。 NIO的读写操作是非阻塞的,例如当从某个通道读取数据,有多少读多少,如当前没有数据,就什么都不会获取,代码能继续执行;传统IO是阻塞的,如调用InputStream.read()方法时,它会一直等待数据到来(或超时)才会继续执行后续代码。 N原创 2021-03-22 21:16:42 · 270 阅读 · 0 评论 -
Java线程常用方法
一、interrupted()、isInterrupted() interrupted():判断线程是否已是中断状态,执行后清除状态标志为false isInterrupted():判断线程是否已是中断状态,但不清除状态标志 二、interrupt() interrupt():设置线程的状态为中断状态。 1.如何使用interrupt()停止线程? (1)异常法: try{ for(int i = 0;i < 10000;i++){ if(this.interr原创 2021-03-17 22:15:04 · 90 阅读 · 0 评论 -
Java-var
从Java10开始,支持使用var定义局部变量,var定义的局部变量的类型由编译器自动推断。 Java的var与JavaScript的var不同,JavaScript是弱类型语言,而Java是强类型语言。因此Java使用var定义的变量仍然有明确的类型——在为局部变量赋初值时,就确定了下来。 ...原创 2021-03-16 22:46:57 · 187 阅读 · 0 评论 -
Java初始化块
一个类中可以有多个初始化块,相同类型的初始化块间有顺序:前面定义的初始化块先执行。 使用static修饰的初始化块称为静态初始化块,没有static修饰的称为实例初始化块。 [static]{ //初始化块的可执行代码 ... } 实例初始化块:当Java创建一个对象时,首先为该对象的所有实例变量分配内存(前提是该类已经加载),接着对这些实例变量执行初始化,初始化顺序为:先执行实例初始化块或声明实例变量时的初始值(执行顺序与它们排列的顺序相同),再执行构造器里指定的初始值。实例初始化原创 2021-03-16 22:40:17 · 108 阅读 · 0 评论 -
Java接口和抽象类的区别
一 接口和抽象类都具有如下特征 接口和抽象类都不能被实例化 接口和抽象类中都可以包含抽象方法 二 接口和抽象类的区别 二者的区别主要体现在设计目的上。接口体现的是一种规范,规定了实现者必须向外提供哪些服务,以及如何调用这些服务。抽象类体现的则是一种模板式设计。抽象类作为多个子类的共同父类,就像是一个中间产品,它已经实现了系统的部分功能,但是必须要进一步完善。 除此之外,他们在用法上的区别如下: 接口中不能为普通方法提供方法实现,但是抽象类中可以包含普通方法。 接口只能定义静态变量,不能定义普通成员原创 2021-03-14 12:08:19 · 84 阅读 · 0 评论 -
Java异常
一、Java异常机制 1.主要依赖于5个关键字:try/catch/finally/throw/throws。 2.异常机制使代码拥有更好的容错性。当程序运行出现意外情况时,系统会自动生成一个Exception对象来通知程序,从而实现“业务逻辑代码”和“错误处理代码”分离。 二、try、catch、finally代码块 //异常处理语法结构中,只有try块是必须的 try{ //业务实现代码 ... }catch(Exception e){ //处理对应异常 ...原创 2021-03-14 11:50:25 · 60 阅读 · 0 评论 -
Java对象序列化的简单实现
一、序列化 一个对象可以被序列化为一个字节序列。该字节序列包括该对象的数据、对象类型的信息、存储在对象中数据的类型。 将序列化对象写入文件之后,可以从文件中读取出来,并且对它进行反序列化。可以用来在内存中新建对象。 一个类的对象要想序列化成功,必须满足两个条件: 该类必须实现 java.io.Serializable 接口。 该类的所有属性必须是可序列化的。如果有一个属性不是可序列化的,则该属性必须注明是短暂的。 二、ObjectOutputStream 类和ObjectI原创 2020-08-31 17:01:55 · 307 阅读 · 0 评论