
JDK
文章平均质量分 53
介绍JDK自带工具类
LSZXZNJ
这个作者很懒,什么都没留下…
展开
-
学习java咯
java 你好。入门知识我们通常说的java,一般就是指java编程语言,包含了java编程语言中的语法知识和java中常用的API。实际上,java技术分为 java编程语言和java平台。java编程语言中:.java 文件 是程序员开发的文件-- 由java语法组成,.class文件 是jvm 执行的文件--由字节码组成,.java文件 --> .class...原创 2019-11-30 17:00:04 · 138 阅读 · 0 评论 -
内部类个人理解
1. 内部类,在语法上,必须写在一个类的内部2.常用的两种内部类: 1) 普通的内部类 2) 静态的内部类3.普通内部类的一些语法 1)实例化方式,必须实例化外部类 因为都是 普通的类,必须用 new 关键字来实例化,外部类和内部类都需要用 new 外部类 和内不类 用 点 来连接 外部类的实例.内部类的实例 2)不能有 静...原创 2021-11-17 13:27:31 · 335 阅读 · 0 评论 -
类加载器窥探
.java文件 编译后,得到.class文件,JVM 需要 读取这些.class文件才能后运行。那么,如何读取.class文件呢?这就是 类加载器需要解决的问题。JDK提供的:java.lang.ClassLoader是一个抽象类实现ClassLoader的子类,以扩展Java虚拟机动态加载类的方式ClassLoader类使用委托模型来搜索类和资源:类加载器的每个实例都有一个关联的父类加载器。当请求查找类或资源时,类加载器实例将在尝试查找类或资源本...原创 2021-11-15 14:55:22 · 993 阅读 · 0 评论 -
clone浅拷贝
2. 如果值 是 引用类型,那么就是 copy一份该引用,那么,此时,新对象和老对象 都持有 该引用,其中一方修改改引用对象的数据,另一方也是拿到最新修改的值。通过调用 clone() 方法,完成 对象拷贝。该方法是Object类中的方法,所有对象都继承该方法。我们经常用的 BeanUtils进行对象属性copy,也是浅拷贝。1. 如果值 是 基本类型,那么就是 copy 一份 该值。通过一个实例对象 生成另一个对象,称为 拷贝。3. clone 方法 不会调用 构造函数。该接口是一个 标记接口。原创 2023-06-27 17:10:39 · 228 阅读 · 0 评论 -
new HashMap{{put(“a“,“b“)}}
前面提到,这种写法是属于 定义了一个匿名内部类,继承了 父类,所以,这里直接使用一个 语句块 来调用 父类的方法。不光是HashMap,像list也可以。比如:下面这个就是 定义了一个 匿名的Test子类,旁边那个向下的箭头就是说明有子类。对于new HashMap{{}};上面这种写法大家不陌生吧,实际上 就是 定义了一个匿名内部类。为什么要搞一个语句块在哪里?别只知道静态语句块。原创 2023-09-06 16:52:23 · 330 阅读 · 0 评论 -
OuterClass.this cannot be referenced from a static context
这里 直接new 非静态内部类,而 并没有new 外部类,就相当于 外部类实例不存在,外部类实例不存在的情况下,他的成员怎么能存在呢?非静态内部类可以 访问 外部类的 所有 成员和方法,包括私有的。可以理解为,非静态内部类的实例中,存在一个 外部类的 this的引用。静态内部类,因为可以独立实例化,在静态内部类中 不存在 外部类的 this引用,所以 静态内部类只能访问外部类的 静态成员。如果是静态内部类,可以 直接独立的进行 new静态内部类。对于访问权限来说,非静态内部类的权限 大于 静态内部类。原创 2024-05-10 21:43:47 · 558 阅读 · 1 评论 -
java.util.Optional<T>
这个filter 跟 Stream的filter不一样。这个filter 返回的是 Optional对象实例。ofNullable : 如果value为空,则返回 带有空值的 实例。of : 如果 value 为空,则抛异常。通过两个静态方法来获取实例。原创 2024-07-02 15:55:31 · 229 阅读 · 0 评论 -
Integer i1 = 128;Integer i2 = 128;boolean b = i1 == i2; 是ture 还是 false
可以看到,缓存的数组 默认 最大值是127,所以 128 是会重新new新的integer对象。用 == 比较 自然是不相等的。自动装箱,是把一个 基础类型 比如 int 包装成一个 对象类型Integer,先不讨论这是怎么实现的。看一下 Integer 类,内置了一个 Integer类型的数组。所以,默认情况下,-128 -- 127 之间的数值,用 == 比较是相等的,超出范围就不相等了。当一个int 变量值 在数组中存在,则直接取出来用,否则就new 一个 ingeter对象了。原创 2023-10-08 15:45:38 · 206 阅读 · 0 评论 -
JDBC使用了哪种设计模式
所以,可以将JDBC中定义的接口看成是 抽象部分,而mysql 、oracle看成是具体的实现,这种将抽象和实现分开,就是桥接模式的定义啊。所以,不能只关注 实际的接口类或者实现类之间的关系,应该从宏观上来看他们之间的关系,因此,JDBC就是使用了桥接模式。可以看到,不论是mysql 还是 oracle,都对 JDBC接口进行了实现。看一下策略模式类图(图解设计模式),好像是挺像的。将抽象部分与它的实现部分分离,使它们都可以独立地变化。不同的数据库厂商提供操作自己数据库的驱动包,立于使用它的客户而变化。原创 2023-08-30 15:20:11 · 849 阅读 · 0 评论 -
函数式编程
在日常的开发过程中,当我们调用某个方法时,方法的入参 是一个接口,那么可以通过 匿名内部类的方式来实现。比如 线程类,入参是一个 Runnable 接口,入参只能是一个实现了Runnable接口的 类对象:一般的写法:这种写法,看起来没什么问题,但是,如果 代码中有类似大量的代码,就会觉得不是很好看了。于是,使用函数式编程写法:这样看起来,是不是特别简洁。针对第一种写法和第二种写法,实际上都是 JDK的一种语法,作为使用者,只能按照别人的规则来使用就好了。他们表达的意思都是一样的,就是 入原创 2022-07-03 18:21:59 · 704 阅读 · 0 评论 -
ThreadPoolExecutor 线程池知识点
线程池ctl变量线程池,首先要搞明白一点:线程池的工作线程数量 workerCount 有效线程数量和线程池的状态 runState是用一个 AtomicInteger 来标识的。很多地方 都 根据 workerCount 和 runState 做 逻辑判断,所以,如果不搞懂这两,那看源码根本就看不懂。workerCount 最大目前是 (2^29)-1 (about 500 million)runState:RUNNING: 线程池创建后的 默认状态,标原创 2019-11-09 15:50:03 · 194 阅读 · 0 评论 -
ThreadLocal
ThreadLocal 是一个泛型类ThreadLocalMap 是 ThreadLocal的一个内部类ThreadLocal.ThreadLocalMap threadLocals = null; 是 Thread 的一个成员变量ThreadLocal的get()方法会执行:t.threadLocals = new ThreadLocalMap(this, firstVal...原创 2019-11-22 22:04:11 · 86 阅读 · 0 评论 -
java包
概图分析:一、最底层的是 JVM/////////////////////////////////////////////////////////////////////////////////////////////二、 base librariesjava.lang、java.util、java.math 三个包1. Math解释了有关数学的知识,java.l...原创 2019-11-23 13:19:22 · 235 阅读 · 0 评论 -
Thread
今天写一写关于线程的东西。线程,现代CPU调度的基本单位,有进程创建,共享进程资源。java中的线程:Thread先写一下线程的一个 中断 状态标识。中断标识 用来表示该线程接收到了中断请求。Thread中提供了一些方法来操作中断:1. 向目标线程发起中断请求,则调用 目标线程 的 interrupt() 方法,该方法是实例方法2. 查询目标线程的中断状态isInterru...原创 2019-12-29 15:20:08 · 127 阅读 · 0 评论 -
JUC
一、lock1)sun.misc.Unsafe这个类,程序员是不能用的,但在JUC中使用了:public native void park(boolean var1, long var2); 用于阻塞线程public native void unpark(Object var1); 用于唤醒线程public final native boolean compareA...原创 2019-12-30 22:56:29 · 118 阅读 · 0 评论 -
Collection
Queue 是一个队列,定义了队列的基本操作。分为三类 :1、添加1)添加返回false offer2)添加抛异常 add2、返回首部元素并移除首部元素1)返回并移除抛异常 remove2)返回并移除返回null poll3、返回首部元素 不移除首部元素1)返回首部抛异常 element2)返回首部返回null peek以上抛异常或者返回null或者返回f...原创 2019-12-30 19:19:25 · 122 阅读 · 0 评论 -
HashMap
1.8put方法详解:1. 哈希函数static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);}如果key == null, hash值 为0否则,取key的hashCode,设为h, h ^h>>>16 , 让高位也参与运算2. 定位 桶 的位置tab[i ..原创 2021-11-19 11:32:14 · 191 阅读 · 0 评论 -
List。
ArrayList底层是 数组初始化1. 不指定容量大小,则 ,用一个空数组,{}2. 指定容量大小,则,校验容量合理性,创建一个新的Object数组添加:1. 如果发生扩容扩容 原容量的一半int newCapacity = oldCapacity + (oldCapacity >> 1); copy: elementData = Arrays.copyOf(elementData, newCapacity);Lin...原创 2021-11-24 14:03:50 · 265 阅读 · 0 评论 -
Runtime类梳理
Runtime 是单例类一般可以读取 CPU、内存信息退出JVM触发GC注册钩子等CPU相关public native int availableProcessors();内核与逻辑处理器:1个内核 可以包含2个逻辑处理器, 通常所说的 4核 、8核 都是指 逻辑处理器一般这个方法,对于 线程池 设置 核心线程数和最大线程数时 使用;或者其他需要根据cpu数量来设置 资源 量时 使用。内存相关可以获取JVM内存信息:初始内存,最大内存,当前可原创 2022-04-12 11:57:58 · 597 阅读 · 0 评论 -
System类梳理
System类,可以完成:数组copy、获取系统时间、获取系统环境变量、操作应用属性变量数组copy数组,是一个定长的对象。如果需要存储的数据长度 超过 初始定义的长度时,就需要 扩容。将原数组中的数据 copy 到另一个新的数组中。必须使用 System类提供的 arrayCopy 来完成 数组的copy。public static native void arraycopy(Object src, int srcPos,原创 2022-04-11 14:19:08 · 477 阅读 · 0 评论