![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
明天请叫我早点起床
这个作者很懒,什么都没留下…
展开
-
equals() 与 == 的区别
equals() 与 == 的区别 ~ ~ ~ ~ ~ 1、 "==” 基本数据类型 基本数据类型用 == 比较,比较的是它们的值 示例代码 public class BaseType { public static void main(String[] args) { int a = 2; int b = 3; int c = 2;...原创 2019-05-24 22:21:25 · 106 阅读 · 0 评论 -
Stream API
Stream API Stream API(java.util.stream)把真正的函数式编程引入到java中 Stream API是java8中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找,过滤和映射数据等操作。就类似于使用SQL执行的数据库查询,也可以并行执行操作,简而言之,提供了一种高效且易于使用的处理数据的方式。 1、 java.util.fun...原创 2019-08-19 20:27:22 · 160 阅读 · 0 评论 -
反射的应用:动态代理
1、代理设计模式的原理 使用一个代理将对象包装起来,然后用该代理替代原始对象,任何对对象的调用都要通过代理,代理对象决定是否以及何时将方法调用转到原始对象上。 2、静态代理示例 /** * @auther hu * @create 2019/8/18 * <p> * 静态代理示例 * 代理类和被代理类在编译期间,就确定下来了 */ interface ClotheFacto...原创 2019-08-19 12:05:04 · 170 阅读 · 0 评论 -
Java 反射机制
1、概述 Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助反射API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。 加载完类之后,在堆内存的方法区中就会产生一个class类型的对象,这个对象就包含了完整的类的结构信息,我们可以通过这个对象看到类的结构。 动态语言:在运行时代码可以根据某些条件改变自身结构。 主要API java.lang.Clas...原创 2019-08-18 17:40:45 · 207 阅读 · 0 评论 -
可重入锁(递归锁)
可重入锁(递归锁) /** * 可重入锁(递归锁) * 指的是同一线程外层函数获得锁之后,内层函数仍然能自动获取该锁的代码 * 在同一线程,外层函数获得锁的时候,在进入内层函数时会自动获取锁 */ class Phone{ Lock lock = new ReentrantLock(); //**************************************...原创 2019-07-16 09:26:05 · 110 阅读 · 0 评论 -
集合类(ArrayList)并发修改异常的解决方案及内部实现
集合类并发修改异常的解决方案及内部实现 new Vector() add方法中使用synchronized关键字解决了并发修改异常,但并发度下降 public synchronized void addElement(E obj) { modCount++; ensureCapacityHelper(elementCount + 1); el...原创 2019-07-15 14:46:07 · 947 阅读 · 0 评论 -
集合类并发修改异常案例展示: ArrayList
集合类并发修改异常案例展示: ArrayList public class Test { public static void main(String[] args) { List<String> list = new ArrayList<>(); for (int i = 0; i <5 ; i++) { ...原创 2019-07-15 13:41:13 · 123 阅读 · 0 评论 -
使用AtomicStampedReference解决ABA问题
使用AtomicStampedReference解决ABA问题 public class Test { public static void main(String[] args) { AtomicStampedReference<Integer> stampedReference = new AtomicStampedReference<>(100...原创 2019-07-14 15:17:42 · 336 阅读 · 0 评论 -
原子引用-AtomicReference
原子引用-AtomicReference class User{ String name; Integer age; @Override public String toString() { return "User{" + "name='" + name + '\'' + ", ag...原创 2019-07-14 14:20:42 · 524 阅读 · 0 评论 -
CAS并发原语调用UnSafe类的CAS方法
CAS并发原语–>调用UnSafe类的CAS方法 AtomicInteger integer = new AtomicInteger(0); integer.compareAndSet(0,1); //package java.util.concurrent.atomic //valueoffset为对象的内存地址 public final boolean compareAndSet(i...原创 2019-07-14 13:25:40 · 288 阅读 · 0 评论 -
AtomicInteger的CAS
AtomicInteger的CAS public class Test { /** * CSA compareAndSet 比较并交换 * */ public static void main(String[] args) { AtomicInteger integer = new AtomicInteger(0); ...原创 2019-07-14 11:06:16 · 84 阅读 · 0 评论 -
加volatile的单例模式
加volatile的单例模式 class Single{ volatile private static Single singleStance = null; private Single(){ System.out.println("Single 的构造方法被执行了!!!"); } public static Single getSingleS...原创 2019-07-13 23:20:34 · 296 阅读 · 0 评论 -
多线程下指令重排导致的问题
多线程下指令重排导致的问题 class MyData{ int a = 0; boolean f = false; public void change_status(){ a = 1; //指令1 f = true; //指令2 //如果存在指令重排,可能导致指令 2 早于指令 1 执行,存在一种情况: f...原创 2019-07-13 21:19:03 · 617 阅读 · 0 评论 -
volatile的不保证原子性的证明
volatile的不保证原子性的证明 class MyData{ volatile int number; public void increaseOne(){ this.number++; } } public class Test { public static void main(String[] args) { MyData ...原创 2019-07-13 17:51:42 · 113 阅读 · 0 评论 -
volatile的可见性证明
volatile的可见性证明 class Mydata{ volatile int number = 0; public void change(){ this.number=1; } } public class Test { public static void main(String[] args) { Mydata mydat...原创 2019-07-13 17:04:49 · 327 阅读 · 2 评论 -
JDK的安装目录详解与JVM的介绍与环境变量的配置
· · JDK的文件目录详解与JVM的介绍与环境变量的配置\color{CornflowerBlue}{JDK的文件目录详解与JVM的介绍与环境变量的配置}JDK的文件目录详解与JVM的介绍与环境变量的配置 JDK\color{SteelBlue}{JDK}JDK JDK Java Development Kit)Java 开发工具包 介绍 JDK是一个使用Java编程语...原创 2019-05-26 21:28:40 · 1203 阅读 · 0 评论 -
Java访问控制符和修饰符
Java访问控制符和修饰符 · · Java访问控制符的含义和使用情况 · 类内部 同包 子类 外包 public √ √ √ √ protected √ √ √ default(friendly) √ √ √(仅限于同包子类) private √ · 类 · public 公共的,对所有包可见 default 同包可以访问 ...原创 2019-05-26 10:01:29 · 257 阅读 · 0 评论 -
Java IO
IO流 java IO原理 I/O是input/output的缩写,用于处理设备之间的数据传输,如读写文件,网络通讯等。 java程序中,对于数据的输入/输出以流(stream)的方式进行。 java.io包下提供了各种流类和接口,用于获取不同种类的数据,并通过标准的方法输入或输出数据 对于输入输出的概念需要站在程序的角度考虑: 输入input:读取外部数据(磁盘、光盘等存储设备的数据)到...原创 2019-08-12 20:48:15 · 240 阅读 · 0 评论