随笔分类 - java基础
记录一些java基础
摘要:有时候需要存储一组数据,之前使用数组,但是数组具有固定的容量,但是在写程序时并不知道需要多少对象,在java.util包下提供了一套完整的集合类,包含List、Set、Queue、Map。java集合类都可以自动地调整自己的大小。 在创建集合时,经常使用泛型,可以在编译期防止将错误的类型放入到集合中
阅读全文
摘要:函数式编程 函数式编程强加了额外的约束,即所有数据必须是不可变的:设置一次,永不改变。将值传递给函数,该函数然后生成新值但从不修改自身外部的任何东西,不可变对象和无副作用范式解决了并发编程中最基本和最棘手的问题之一。 Lambda表达式只支持函数式接口,也就是只有一个抽象方法的接口 普通用法和函数式
阅读全文
摘要:java stream操作 Stream是什么 Stream又称为流,可以将集合转换为一种流,对集合中的每个元素进行一系列的流式操作,流并不存储元素,对流的操作也不会修改数据源 数据源 转换为--》流 》进行中间操作 》终止操作 多个中间操作可以连接起来形成一个流水线,除非流水线触发终止操作,否则中
阅读全文
摘要:反射 Java提供反射来在运行时状态下动态的获取类的属性、方法等信息,在框架中很多地方都应用到了反射 反射的操作 获取Class对象 获取Class对象的四种方式 // 第一种Class<Person> clazz = Person.class;// 第二种Person person = new P
阅读全文
摘要:网络IO 阻塞模型 在之前网络通信都是阻塞模型 客户端向服务端发出请求后,客户端会一直处于等待状态,直到服务器端返回结果或网络出现问题 服务器端也是如此,在处理某个客户端A发来的请求时,另一个客户端B发来的请求会等待,直到服务器端的处理线程线程上一个请求的处理 在服务端使用ServerSocket来
阅读全文
摘要:zip压缩 zip文档可以以压缩格式存储一个或多个文件,可以使用ZipInputStream读取Zip文档,使用ZipOutputStream来写入到Zip文件中 ZipInputStream读取 ZipInputStream zin = new ZipInputStream(in);ZipEntr
阅读全文
摘要:NIO NIO早在JDK1.4中就已经提出来了(JSR51),在JDK1.7中对NIO进行了补充类库NIO.2(JSR 203),NIO又叫Non-blocking IO,即非阻塞IO 同步非阻塞 阻塞与非阻塞的区别: 阻塞时,在调用结果返回时,当前线程会被挂起,并在得到结果之后返回 传统的 IO
阅读全文
摘要:用户进程发起请求,内核接收到请求后,从I/O设备中获取数据到buffer中,再将buffer中的数据copy到用户进程的地址空间,该用户进程获取到数据后再响应客户端。 数据输入到buffer需要时间,从buffer复制数据至进程也需要时间,根据在这两段时间内等待方式不同,I/O动作可分为五种模式 阻
阅读全文
摘要:注解 java中包含5种元注解 @Target 表示注解可用于哪些地方,包含TYPE(类)、METHOD(方法)、PARAMETER(参数)、CONSTRUCTOR(构造器)、FIELD(字段)、LOCAL_VARIABLE(局部变量)、ANNOTATION_TYPE、PACKAGE(包)、TYPE
阅读全文
摘要:泛型 泛型是在JDK1.5增加的功能,在没有泛型之前,从集合中取出来的每一个对象都必须进行强制类型转换,如果有人插入了错误类型的对象,在运行时的转换就会出现问题,有了泛型之后,这些问题就会在编译期暴露出来。 泛型的好处 在编译期间检测类型,避免了运行期出现的ClassCastException 使得
阅读全文
摘要:异常 当异常发生时,该线程会暂停,逐层退出方法调用,直到遇到异常处理器,异常处理器可以catch到异常对象,进行相应的处理 异常的类型 Throwable有两个子类,一个是Error错误,一个是Exception异常 Throwable包含了其线程创建时线程执行堆栈的快照,使用printStackT
阅读全文
摘要:字符串 String String是一个final修饰的不可变类,其属性也是final的,底层使用char数组存储。 字符串拥有字符串常量池,对于String s = new String("xyz"); 如果之前没有用过xyz的话,需要创建两个对象,一个是new String创建的对象,一个是常量
阅读全文
摘要:final关键字 final可以用来修饰变量、方法和类 final方法 final方法的作用是防止子类通过重写改变方法的行为 类中所有的private方法都是隐式的指定为final,因为不能访问private方法,所以不能重写它。给private方法加上final修饰并不会给方法带来额外的含义。重写
阅读全文
摘要:java操作时间的方式 获取年月日时分秒 public class Test { public static void main(String[] args) { System.out.println(" 使用Calendar "); Calendar cal = Calendar.getInsta
阅读全文
摘要:内部类 内部类是一种较为特殊的类形式,定义在另一个类中的类,叫做内部类,是主类的一部分,可以把一些逻辑相关的类组织在一起,并控制位于内部的类的可见性。 作用 内部类方法可以访问该类定义所在的作用域中的数据,包括私有数据 内部类可以对同一个包中的其他类隐藏起来 内部类分为 静态内部类 成员内部类 局部
阅读全文
摘要:数组 数组的本质是一个相同数据类型的元素集合。元素是数组的组成部分,数组中每一个元素都可以使用唯一的索引值来访问,这个索引值也可以叫做数组下标。数组是很多集合类的底层存储结构,在了解java集合类之前大家先了解一下数组吧。 数组初始化 数组的声明语法为 // type为类型 arrayName为数组
阅读全文
摘要:接口和抽象类 抽象类 抽象方法的声明没有方法体。 abstract void func(); 包含抽象方法的类叫做抽象类。 public abstract class Basic{ abstract void func(); protected abstract void func1(); publ
阅读全文
摘要:重载与重写 java中有overload重载和override重写 重载 重载是指一个类中有多个名称相同但是参数列表不同的方法(参数列表不同是指参数个数或类型不同),编译器在比较方法重载时会忽略掉它们的返回类型以及抛出的异常 重写 重写是指子类中的方法与父类中的某个方法名称和参数完全相同,通过子类创
阅读全文
摘要:为了避免重复代码太多,导致代码不好维护,大家需要学会如何复用代码,代码复用的两种方式,组合和继承 组合:在新类中创建现有类的对象 has-a 继承:创建现有类的新类 is-a 依赖:uses-a UML关系 继承 继承使用的关键字是extends,Object是所有类的父类,在Java中每个类都是由
阅读全文
摘要:初始化顺序 在类中变量定义的顺序决定了它们初始化的顺序。在创建任何java对象时,都是依次调用父类非静态初始化块、父类构造器执行初始化、本类的非静态初始化块、本类构造器执行初始化 public class House { // 构造器之前 Window w1 = new Window(1); Hou
阅读全文