随笔分类 -  Java / JAVA高级

多线程、常用类、枚举类和注解、集合、泛型、IO流、网络编程、反射机制、新特性
摘要:Collection接口:单列集合,存储一个一个的对象 List接口:存储有序、可重复的数据,长度可变。-->相当于“动态”数组。 Set接口:存储无序的、不可重复的数据。-->相当于高中讲的“集合”(无序、确定、互斥)。 Map接口:双列集合(映射),存储键值对key-value -->函数:y 阅读全文
posted @ 2023-01-04 17:06 植树chen 阅读(54) 评论(0) 推荐(0) 编辑
摘要:1.概述 集合和数组都是对多个数据进行存储操作的结构,此时的存储,主要指内存层面的存储,不涉及到持久化的存储(存到数据库)。 2.数组 一旦初始化以后,数组的长度就确定了。 一旦定义好后,元素的类型就确定了。 String[] arr; int[] arr1; Object[] arr2; 数组的弊 阅读全文
posted @ 2023-01-04 08:44 植树chen 阅读(153) 评论(0) 推荐(0) 编辑
摘要:1.带时区的日期时间:ZoneId / ZonedDateTime (1)ZoneId public void test1(){ Set<String> zoneIds = ZoneId.getAvailableZoneIds(); //获取所有时区 for (String zoneId : zon 阅读全文
posted @ 2022-12-06 16:13 植树chen 阅读(147) 评论(0) 推荐(0) 编辑
摘要:1.System类的currentTimeMills() 返回当前时间与1970年1月1日0时0分0秒之间,以毫秒为单位的时间差,称为时间戳。 long time = System.currentTimeMills(); System.put.println(time); //16693651261 阅读全文
posted @ 2022-11-24 11:09 植树chen 阅读(42) 评论(0) 推荐(0) 编辑
摘要:1.枚举类 类的对象只有有限个,对象是确定的。 当需要定义一组常量时,强烈建议使用枚举类。 如果枚举类中只有一个对象,则可以作为单例模式的实现方式。 2.定义枚举类 JDK 5.0之前:自定义枚举类 JDK 5.0之后:使用enum关键字定义 (1)自定义枚举类 public class Seaso 阅读全文
posted @ 2022-11-24 11:01 植树chen 阅读(161) 评论(0) 推荐(0) 编辑
摘要:1.注解是什么 这个注解表示该方法是重写的 jdk 5.0 新增的功能。 注解:Annotation,代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,通过使用注解,可以在源文件中嵌入一些补充信息。 框架 = 注解 + 反射机制 + 设计模式。 JavaSE中注解一般用来标记过时的功能,忽 阅读全文
posted @ 2022-11-24 11:01 植树chen 阅读(120) 评论(0) 推荐(0) 编辑
摘要:1.System类 System类代表系统,提供很多有用的方法(标准输入、输出、错误输出等),该类在java.lang包。 System类用final修改,构造器用private修改,无法创建对象,内部成员变量和成员方法都是static的,可以直接通过类名调用。 常用方法 native long c 阅读全文
posted @ 2022-11-24 11:00 植树chen 阅读(37) 评论(0) 推荐(0) 编辑
摘要:说明:正常情况下比较对象只能进行 == 或 !=,不能使用 > 或 < 进行比较,但在开发中需要对多个对象进行排序(比较对象的大小),使用Comparable接口或Comparator接口来实现。 Comparable接口中compareTo方法的比较方式,this对象和参数中的对象比较,小于等于大 阅读全文
posted @ 2022-11-24 10:59 植树chen 阅读(119) 评论(0) 推荐(0) 编辑
摘要:1.日期时间API的迭代 jdk 1.0 Date类 jdk 1.1 Calender类,一定程度上替换Date类。 jdk 1.8 一套新的API 2.前两代存在的问题 可变性:像日期和时间这样的类应该是不可变的。 偏移性:Date中的年份是从1900开始的,而月份都从0开始。 格式化:格式化只对 阅读全文
posted @ 2022-11-24 10:58 植树chen 阅读(65) 评论(0) 推荐(0) 编辑
摘要:1.String、StringBuffer、StringBuilder三者对比 底层都使用char[]数组存储数据。 String:不可变的字符序列。 StringBuffer:可变的字符序列,线程安全的,效率低。 Stringbuilder:可变的字符序列,jdk5.0新增的,线程不安全的,效率高 阅读全文
posted @ 2022-11-23 09:21 植树chen 阅读(26) 评论(0) 推荐(0) 编辑
摘要:1.String类概述 该类声明为final,不可被继承。 实现了Serializable接口,表示字符串是支持序列化的。 实现了Comparable接口,表示String可以比较大小。 内部定义了final char[] value;数组用于存储字符串的数据。 通过字面量的方式创建实例(Strin 阅读全文
posted @ 2022-11-22 14:35 植树chen 阅读(154) 评论(0) 推荐(0) 编辑
摘要:1.实现Callable接口方式 和实现Runnable接口相比 call()可以有返回值。 call()可以抛出异常,被外面的操作捕获,获取异常信息。 Callable是支持泛型的。 实现Callable接口的方式,线程计算0~100内的偶数 实现类,重写call()方法,可以返回值和抛出异常 p 阅读全文
posted @ 2022-11-21 11:09 植树chen 阅读(50) 评论(0) 推荐(0) 编辑
摘要:1.问题 生产者将产品交给店员,而消费者从店员处取走产品,店员一次只能持有固定数量的产品(比如:20),如果生产者试图生产更多的产品,店员会叫生产者停一下。如果店中有空位放产品了再通知生产者继续生产;如果店中没有产品了,店员会告诉消费者等一下,如果店中有产品了再通知消费者来取走产品。 生产者:Pro 阅读全文
posted @ 2022-11-17 19:41 植树chen 阅读(32) 评论(0) 推荐(0) 编辑
摘要:1.线程通信 线程之间的协同工作 使用两个线程打印 1-100。线程1, 线程2 交替打印 class PrintNumber implements Runnable{ private int number=1; private Object obj = new Object(); @Overrid 阅读全文
posted @ 2022-11-17 15:25 植树chen 阅读(50) 评论(0) 推荐(0) 编辑
摘要:1.死锁 不同的线程分别占用对方需要的同步资源不放弃,都在等待对方放弃自己需要的同步资源,就形成了线程的死锁。 说明: 出现死锁后,不会出现异常,不会出现提示,只是所有的线程都处于阻塞状态,无法继续。 因此使用同步时,要避免出现死锁问题。 public class DeadLock { public 阅读全文
posted @ 2022-10-27 14:51 植树chen 阅读(41) 评论(0) 推荐(0) 编辑
摘要:1.线程安全问题 三个售票窗口,总票数为100张,卖票过程中,线程a在操作ticket,未操作完成时,其他线程参与进来,也操作ticket。导致出现重票、错票问题。(线程安全问题)。 class TicketWindow implements Runnable{ private int ticket 阅读全文
posted @ 2022-10-27 09:40 植树chen 阅读(189) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示