随笔分类 - JavaSE
摘要:package demo; import java.util.Arrays; class Person implements Comparable<Person>{ //实现Comparable接口 private String name; private int age; public Perso
阅读全文
摘要:package demo; import java.util.Optional; import java.util.UUID; interface IMessage{ public String getContent(); } class MessageImpl implements IMessag
阅读全文
摘要:package demo; class Message{ private String info; public void setInfo(String info) { this.info = info; } public String getInfo() { return info; } } cl
阅读全文
摘要:package demo; import java.util.Base64; public class Base64Demo { public static void main(String[] args) { String msg = "fighterk"; System.out.println(
阅读全文
摘要:String可以和各种数据类型相互转换,并且提供许多字符串处理方法,实用性很强。所以项目中,用户输入的信息基本都用String表示。 为了确保信息格式的正确,通过正则表达式进行验证。 常用正则标记,参考https://developer.aliyun.com/lesson_1012_9003?spm
阅读全文
摘要:同一个程序要推广到不同国家,就要显示对应区域的语言。解决方案是,每个国家有自己的区域编码,区域编码映射到对应语言的资源包。相关类有Locale,ResourceBundle 另外,常见一种情况,要显示固定格式的文本,并且对部分内容进行填充。相关类有MessageFormat 读取资源文件的顺序:指定
阅读全文
摘要:要求3个线程进行抢答,并返回抢答结果。 package ThreadDemo; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurr
阅读全文
摘要:StringBuffer类(是线程安全的,而StringBuilder类非线程安全的):String对象不能修改,可以用StringBuffer类来应对频繁修改的情况(需要正常实例化)。append加到字符串末尾("+"编译后就是append),toString返回字符串内容,insert(int
阅读全文
摘要:Date类,实质上是对代表时间的long数据各种处理的封装。常用的有无参构造获取当前时间,接收long数据单参构造,getTime()返回long数据。 DateFormat继承Format,SimpleDateFormat继承DateFormat。SimpleDateFormat类可以通过构造方法
阅读全文
摘要:守护线程围绕在用户线程周围,随着用户线程结束而结束。JVM中最大的守护线程是GC(垃圾回收)线程,在程序运行时进行垃圾回收。 设为守护线程setDaemon(boolean on) , 判断是否为守护线程isDaemon() volatile和synchronized的区别: volatile关键字
阅读全文
摘要:构造方法加String命名线程,currentThread获取当前线程,setName设线程名,getName获取线程名。 sleep(毫秒数)线程休眠(暂缓执行),isInterrupted判断是否被中断,interrupt中断线程,join线程强制执行。 yield线程礼让(礼让一次),setP
阅读全文
摘要:概念看操作系统课本。 可以用关键字synchronized锁实现线程同步,常用于修饰方法: 作用于当前对象上锁,确保独占资源被互斥地访问。更多用法、格式参考文章https://www.cnblogs.com/three-fighter/p/14396208.html
阅读全文
摘要:Object类的方法:等待wait() , 唤醒队首线程notify() , 唤醒全部等待线程notifyAll()。利用等待和唤醒实现Producer线程、Consumer线程的互斥访问Message对象。 代码如下: package ThreadDemo; class Message { pri
阅读全文
摘要:继承java.lang.Thread的类,成为多线程的主体类(Thread implements Runnable)。通过覆写run方法实现功能,通过调用start启动。 常用Runnable接口实现多线程(避免单继承的局限):覆写接口的run方法,然后将接口对象作为Thread构造方法参数,用Th
阅读全文
摘要:内建函数式接口,也就是系统提供的函数式接口,比自定义更方便。 常用的有4类:功能型(有参数、有返回值)、供给型(无参数、有返回值)、消费型(有参数、无返回值)、断言型(有参数、boolean判断)。 具体格式参考:https://blog.csdn.net/Beyond_Nothing/articl
阅读全文
摘要:Lambda表达式的使用条件是SAM(Single , Abstract , Method),也就是只含单个抽象方法的接口(称为函数式接口),可以在接口前加上注解@FunctionalInterface。 Lambda表达式属于函数式编程,比匿名内部类更简便,但结构不够规范。 满足SAM条件的接口,
阅读全文
摘要:异常处理三个关键字:try , catch , finally。try{}里是 可能出现异常的语句,catch(异常类型 异常对象){}里是 对异常进行处理,finally{}里是 不管是否捕获异常都能执行的语句。 异常对象.printStackTrace()方法可以输出最完整的异常信息。 可以使用
阅读全文
摘要:内部类,是在类/方法/代码块中定义一个类。内部接口,是在接口中定义一个接口。 内部类的优点是方便调用所在类的属性、方法,缺点是结构变得复杂。 常用的有静态内部接口、匿名内部类。static内部接口,可以细分接口的不同功能,使结构更清晰。匿名内部类,是对接口的一次性实现,在new的时候接上实现代码块。
阅读全文
摘要:枚举是简化的多例设计,所以构造方法不能public。 使用enum关键字定义枚举类,在第一行列出所有的实例化对象。Enum是JDK提供的抽象类,enum定义的枚举类隐含地继承Enum类。 package package1; enum Sex{ MALE("男"),FEMALE("女"); priva
阅读全文
摘要:包相当于文件夹。作用是解决同名类的冲突、把功能相似或相关的类放在一起、对访问权限进行管理。 引用两个同名类,要用完整类名称,即"包名.类名"。 访问权限:public允许所有其他类访问,protected允许子类或同一个包中的类访问,private只允许类的内部访问(缺省的default允许同一个包
阅读全文