摘要: BIO:线程发起IO请求,不管内核是否准备好IO操作,从发起请求起,线程一直阻塞,直到操作完成。NIO:线程发起IO请求,立即返回;内核在做好IO操作的准备之后,通过调用注册的回调函数通知线程做IO操作,线程开始阻塞,直到操作完成。AIO:线程发起IO请求,立即返回;内存做好IO操作的准备之后,做I 阅读全文
posted @ 2021-06-16 16:59 凄美地 阅读(136) 评论(0) 推荐(0)
摘要: 他们都不能实例化对象,都可以包含抽象方法,而且抽象方法必须被继承的类全部实现。 区别: 1、抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。 2、抽象类要被子类继承,接口要被类实现。 3、接口只能做方法申明,抽象类中 阅读全文
posted @ 2021-06-16 16:48 凄美地 阅读(272) 评论(0) 推荐(0)
摘要: 不能,抽象类是被用于继承的,而用final修饰的类,无法被继承。 阅读全文
posted @ 2021-06-16 16:37 凄美地 阅读(332) 评论(0) 推荐(0)
摘要: 普通类不能包含抽象方法,抽象类可以包含抽象方法。 抽象类不能直接实例化,普通类可以直接实例化。 抽象类的特点: 1.抽象类不能被实例化 2.抽象类可以有抽象方法,抽象方法只需申明,无需实现 3.含有抽象方法的类必须申明为抽象类 4.如果没有实现抽象基类中所有的抽象方法,则子类成为一个抽象子类;如果实 阅读全文
posted @ 2021-06-16 16:24 凄美地 阅读(753) 评论(0) 推荐(0)
摘要: 抽象类可以没有抽象方法,但是如果你的一个类已经声明成了抽象类,即使这个类中没有抽象方法,它也不能再实例化,即不能直接构造一个该类的对象。 如果一个类中有了一个抽象方法,那么这个类必须声明为抽象类,否则编译通不过。 阅读全文
posted @ 2021-06-16 16:22 凄美地 阅读(231) 评论(0) 推荐(0)
摘要: (1).indexOf():返回指定字符的索引。 (2).charAt():返回指定索引处的字符。 (3).replace():字符串替换。 (4).trim():去除字符串两端空白。 (5).split():分割字符串,返回一个分割后的字符串数组。 (6).getBytes():返回字符串的 by 阅读全文
posted @ 2021-06-16 16:04 凄美地 阅读(392) 评论(0) 推荐(0)
摘要: 使用 StringBuilder 或者 stringBuffer 的 reverse() 方法。 public static String reverse4(String s) { return new StringBuilder(s).reverse().toString(); } 阅读全文
posted @ 2021-06-16 16:01 凄美地 阅读(132) 评论(0) 推荐(0)
摘要: 不一样 因为内存的分配方式不一样。String str="i"的方式,Java 虚拟机会将其分配到常量池中;而 String str=new String(“i”)方式,则会被分到堆内存中。 解释: Java 虚拟机会将其分配到常量池中:常量池不会重复创建对象。 在String str1="i"中, 阅读全文
posted @ 2021-06-16 15:54 凄美地 阅读(230) 评论(0) 推荐(0)
摘要: String、StringBuffer、StringBuilder String : final修饰,String类的方法都是返回new String。即对String对象的任何改变都不影响到原对象,对字符串的修改操作都会生成新的对象。 StringBuffer : 对字符串的操作的方法都加了同步锁 阅读全文
posted @ 2021-06-16 15:45 凄美地 阅读(159) 评论(0) 推荐(0)
摘要: String不是基本的数据类型,是final修饰的java类,java中的基本类型一共有8个以及占用的空间 整形:byte(1)、short(2)、int(4)、long(8) 字符型:float(4)、double(8)、 字符型:char(2) Boolean类型:boolean(1) 阅读全文
posted @ 2021-06-16 15:40 凄美地 阅读(265) 评论(0) 推荐(0)