![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
louisgeek
放弃不难,但坚持一定很酷!
展开
-
Java String StringBuilder StringBuffer 之间的区别
String 字符串常量String 类被 final 修饰String 类中维护的 char[] 数组也是 final 修饰的String 类是无法被继承和改变的,是不可变对象,每次对 String 对象进行改变,如字符串拼接、截取等操作都会生成一个新的 String 对象后将指针指向新的 String 对象,所以效率比较低,性能最差,对于要经常改变内容的字符串不推荐使用 String 类StringBuilder 字符串变量(非线程安全)继承自 AbstractStringBuilder原创 2021-08-03 16:25:03 · 127 阅读 · 0 评论 -
Java HashMap 原理
HashMap线程不安全的public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { }构造函数 /** * The next size value at which to resize (capacity * load factor). * * @serial原创 2021-07-29 22:20:49 · 112 阅读 · 0 评论 -
Java 泛型
用 List 举例List,List<?>,ListList原生类型、原始类型List<?>通配符类型List参数化类型,实参是 Object List list = new ArrayList(); List<?> arrayList = new ArrayList(); List<Object> objList = new ArrayList(); List<String&原创 2021-04-29 20:46:51 · 65 阅读 · 0 评论 -
Java 实现 ConcurrentHashSet
Java 中没有直接提供 ConcurrentHashSet 这样的类,可以通过 java.util.concurrent.ConcurrentHashMap 类来间接实现Apache Dubbo//https://github.com/apache/dubbo/blob/master/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ConcurrentHashSet.java/* * Licensed to the Apache原创 2021-04-22 17:04:51 · 507 阅读 · 0 评论 -
Java 引用类型
Reference Type 引用类型三种:数组、类、接口定义时变量引用指向存具体数据的内存地址,变量存在栈内存中,值存储在堆内存中用 equals() 比较array 数组、class 类、interface 接口数组类接口String 字符串枚举注解Lambda...原创 2021-03-29 19:57:01 · 63 阅读 · 0 评论 -
Java 关键字之 synchronized
synchronized 知识线程安全问题单线程不会存在线程不安全问题,而多个线程可能会存在同时访问同一个资源(变量、对象、文件、数据库,这种资源又叫临界资源、共享资源)的情况,会导致程序运行结果不是预期结果解决线程安全问题的方案同步互斥访问在同一时刻,确保只能有一个线程访问该临界资源,当一个线程在访问临界资源的代码上加一个锁,当用完临界资源后释放锁,从而让其他线程能够继续访问该资源,java 可以通过 synchronized 和 Lock 关键字实现同步互斥访问类锁方法锁...原创 2021-03-26 22:15:05 · 42 阅读 · 0 评论 -
Java Annotation 注解
Java的4种类型,Class、Interface、Enum、Annotation都属于Class类型注解简介也有人把它叫做注释、元数据,是一种代码级的说明注解很像一个接口,多了一个 @ 符号,采用 @interface 作为关键字用于生成文档配合编译器分析检查代码,提升代码逻辑严谨性代码功能的增强修改程序的行为元注解用于定义注解@Target声明注解的目标,就是可以在什么地方使用ElementType/** Class, interface (includin原创 2021-03-25 23:19:19 · 105 阅读 · 0 评论 -
Java Singleton 单例模式
属于创建型模式1 饿汉式//1.1 静态常量public class Singleton { //未使用就提前实例化了 private final static Singleton INSTANCE = new Singleton(); // 私有构造方法,防止被外部直接实例化 private Singleton(){} public static Singleton getInstance(){ return INSTANCE; }}//1.2 静态全局变量p.原创 2021-03-11 18:57:51 · 398 阅读 · 0 评论 -
Java System.arraycopy 和 Arrays.copyOf 的区别
System.arraycopy只有数组为一维数组且元素为基本类型、String 类型的时候是深拷贝,其它情况下都属于浅拷贝,比如元素是引用类型、二维数组的情况调用的是 native 方法,性能好需要传入 dest可以指定起始位置和拷贝的长度,比较灵活 /** * Copies an array from the specified source array, beginning at the * specified position, to the specifi原创 2021-03-11 11:10:53 · 152 阅读 · 0 评论 -
Java ArrayList 源码解析
ArrayList//继承了 AbstractList<E> //实现了 List<E> //实现了 RandomAccess 接口,支持随机访问//实现了 Cloneable 接口,代表可复制的//java.io.Serializable 可被序列化public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable,原创 2021-03-10 20:03:07 · 40 阅读 · 0 评论 -
Java 创建线程的 3 种方式
通过继承 Thread 类//匿名 Thread 类new Thread(){ //重写 run 方法 @Override public void run() { super.run(); }}.start();class MyThread extends Thread { @Override public void run() { super.run(); }}//假设把 run 方法看成一个任务,那么.原创 2021-03-05 20:58:16 · 148 阅读 · 2 评论 -
Java 总结 常用线程池和自定义线程池
1 通过 Executors 工厂类来创建线程池| 创建线程池的方法 | newFixedThreadPool | 有固定线程数的线程池,如果没有任务执行,那么线程会一直等待 || newCachedThreadPool | 线程池里有很多线程需要同时执行,老的可用线程将被新的任务触发重新执行,如果线程超过60秒内没执行,那么将被终止并从池中删除 ||newWorkStealingPool | 创建一个拥有多个任务队列(以便减少连接数)的线程池 || ne原创 2021-02-23 21:39:22 · 133 阅读 · 0 评论 -
Java 基础 Java 简介
java 是 sun 微系统公司发布的支持跨平台运行的 java 平台和 java 语言的总称java 语言以前叫 Oak95年5月23日正式发布版本命名以前叫 j2se j2ee j2me04年9月30日发布 java 1.5 直接命名 java 5.005年6月 java se6 发布,开始改为 javase javaee javame06年11月13日开始开源09年4月20日甲骨文收购了sun公司11年7月28日 java7 发布14年 java8 发布...原创 2021-02-23 09:31:00 · 98 阅读 · 0 评论 -
Java 基础 Java 的特性
简单的继承了 C 和 C++ 的优点,去掉了难点,复杂点:多继承,操作符重载,自动强制类型转换,加入了引用代替指针,自动垃圾回收内存管理面向对象的原创 2021-02-21 17:14:30 · 99 阅读 · 1 评论 -
Java 基础 线程创建的 3 种方式
1 继承 Thread 类,重写 run 方法无法实现资源共享,是一种特殊的 Runnable ( Thread 也是实现 Runnable 的) MyThread myThread = new MyThread(); myThread.start();2 实现 Runnable 接口,实现 run 方法可实现资源共享 MyRunnable myRunnable = new MyRunnable(); Thread thread = new Thread(myRunnable);原创 2021-02-26 09:32:38 · 96 阅读 · 0 评论 -
Java 和 Kotlin 权限访问修饰符的区别
修饰符JavaKotlinpublic所有类可见所有类可见(默认)private当前类可见当前类可见protected当前类、子类、同一包路径下的类可见当前类、子类可见default同一包路径下的类可见(默认)无internal无同一模块中的类可见...原创 2021-02-17 22:01:06 · 302 阅读 · 0 评论 -
Java 基础 inputStream.read(bufferBytes) 读取文本错乱、异常、不全
... byte[] bufferBytes = new byte[1024]; StringBuffer stringBuilder = new StringBuffer(); try { int length = 0; while ((length = inputStream.read(bufferBytes)) != -1) { stringBuilder.append(new Strin原创 2021-02-07 15:23:05 · 2482 阅读 · 0 评论 -
Java Joda-Time 知识总结
1 开始使用https://github.com/JodaOrg/joda-time implementation 'joda-time:joda-time:2.10.10'2 时间实例 // 年,月,日,时,分,秒,毫秒 DateTime dateTime1 = new DateTime(2017,6, 16, 0, 0, 0, 333); // 时间字符串 DateTime dateTime2 = new DateTime("原创 2021-02-08 09:14:40 · 270 阅读 · 1 评论