【Java基础】
java
-小酒窝-
这个作者很懒,什么都没留下…
展开
-
【MySQL】MySQL的安装与配置
目录一、Windows下MySQL的安装与配置二、Linux上MySQL的安装与配置一、Windows下MySQL的安装与配置1、下载安装包:下载地址:https://dev.mysql.com/downloads/mysql/这里一般显示的是mysql的最新版本-------------------------------------------------...原创 2018-10-29 14:18:06 · 537 阅读 · 0 评论 -
jdk安装和配置环境变量
1、jdk8官网下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html先点一下接受,然后下载相应的版本,如果不能下载,下去注册一个Oracle账号,以后也能用到。我的百度云下载地址:windows链接:https://pan.baidu.com/s/1qVg...原创 2018-10-29 10:50:21 · 426 阅读 · 0 评论 -
Java中的Set集合详解
目录一、简介二、HashSet类三、TreeSet类一、简介Set集合中的元素是无序的且不可重复, 如果试图把两个相同元素加入同一个Set集合中,则添加操作失败,add()方法返回false,且新元素不会被加入。二、HashSet类HashSet底层数据结构是哈希表,因此具有很好的存取和查找性能。哈希表:一个元素为链表的数组,综合了链表(存储速度快)和数组(查询速度快)的优点。哈希表的...原创 2020-01-13 10:35:17 · 5064 阅读 · 0 评论 -
Java中的HashMap详解
一、什么是HashMapHashMap继承了AbstractMap,实现了Map接口,存储的是一个键值对对象。二、HashMap数据结构解析1、继承关系:HashMap继承了AbstractMap,实现了Map接口。public abstract class AbstractMap<K,V> implements Map<K,V> {2、常量及构造方法 //...原创 2020-01-10 17:48:50 · 2910 阅读 · 1 评论 -
Java中重载和重写的区别
1、定义区别:①重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同。调用的时候根据函数的参数来区别不同的函数。②重写(也叫覆盖)是指在派生类中重新对基类中的虚函数(注意是虚函数)重新实现。即函数名和参数都一样,只是函数的实现不一样。2、类的关系区别重写是子类和父类之间的关系,是垂直关系;重载是同一个类中方法之间的关系,是水平关系。3、产生方法区别重写只能由一个方法或只能...原创 2020-01-10 16:03:37 · 585 阅读 · 0 评论 -
为什么重写equals方法需同时重写hashCode方法?
1. 为什么要重写equals()方法?因为object中的equals()方法比较的是对象的引用地址是否相等,如何你需要判断对象里的内容是否相等,则需要重写equals()方法。2. Java中有哪些类重写了equals()方法?java中的大部分类都重写了equals()方法,没有重写的类大部分都是自己定义的类,比如说自己定义了一个Person 类,这个就没有重写equals()方法。...原创 2020-01-10 15:39:48 · 349 阅读 · 0 评论 -
equals() 与 == 的区别?
一、简述区别1、"==",对于基本类型和引用类型的作用是不同的基本类型:比较的是值是否相同;引用类型:比较的是引用是否相同;2、重写后的equals()方法用来比较的是两个对象的内容是否相等,如果没有重写的equals()方法,作用等同于“==”请看一个小例子:String x = "string";String y = "string";String z = new Stri...原创 2020-01-10 14:28:05 · 195 阅读 · 0 评论 -
Java并发编程之原子变量和CAS算法
一、简介原子变量最主要的一个特点就是所有的操作都是原子的,synchronized关键字也可以做到对变量的原子操作。只是synchronized的成本相对较高,需要获取锁对象,释放锁对象,如果不能获取到锁,还需要阻塞在阻塞队列上进行等待。而如果单单只是为了解决对变量的原子操作,建议使用原子变量。关于原子变量的介绍,主要涉及以下内容:原子变量的基本概念通过AtomicInteger了解原子变...原创 2019-12-15 15:51:01 · 404 阅读 · 0 评论 -
Java中 i++ 和 ++i 的区别,及其线程安全问题
一、关于区别,首先看两个j简单的小例子: public static void f4() { int a=0; for(int i=0;i<100;i++){ a = a++; } System.out.println(a); }public static void f4() { ...原创 2019-12-15 15:32:55 · 606 阅读 · 0 评论 -
i++是线程安全的吗?如何解决线程安全性?
i++是不安全的,前面我们讲解volatile关键字的时候,我们说过了i++是一个复合操作,可分为三个阶段:读值,从内存到寄存器+1,寄存器自增写值,写回内存在这三步之间的都可能会有CPU调度,造成i的值被修改。造成脏读脏写。如果是方法里定义的,一定是线程安全的,因为每个方法栈是线程私有的;如果是类的静态成员变量,i++则不是线程安全的,因为 线程共享栈区,不共享堆区和全局区如何解决线...原创 2019-12-15 15:24:46 · 5025 阅读 · 0 评论 -
Java关键字 volatile、synchronized和Lock
一、volatile:简介:用来声明变量的值可能随时会受到其它线程的修改,使用volatile修饰的变量被修改后会立即强制将修改后的值写入主存,主存中的值的更新会使缓存中的值失效 。也就是当一条线程修改了共享变量的值,新值对于其他线程来说是可以立即得知的三大特性:1. 可见性当多个线程访问同一个变量时,某一个线程修改了变量的值,其他线程能够立即读取到该变量修改后的值。2. 有序性(禁止指令...转载 2019-12-15 15:17:04 · 412 阅读 · 0 评论 -
一分钟读懂Java中的volatile关键字
一、volatile简介volatile意为,不稳定的,反复无常的。下边我们具体阐述volatile的三个特性:volatile能保证内存可见性volatile不能保证原子性volatile禁止指令重排序(有序性)它作为Java中的一个关键字,用来声明变量的值可能随时会受到其它线程的修改,使用volatile修饰的变量被修改后会立即强制将修改后的值写入主存,主存中的值的更新会使缓存...原创 2019-12-15 15:03:57 · 175 阅读 · 0 评论 -
Java中final、static关键字的作用
final关键字可用于三个地方: 用于修饰类、类属性和类方法。被final修饰的类不能被继承,被final修饰的类属性和类方法不能被覆盖(重写);一、final1. final修饰变量:final意为不可改变,修饰成员变量时可以在生命时初始化或者在构造函数中初始化,修饰局部变量时在使用之前初始化。要是企图改变final修饰等变量值则会编译错误2. final修饰方法:final修饰的方...原创 2019-12-15 14:57:40 · 3207 阅读 · 0 评论