![](https://img-blog.csdnimg.cn/42454f8afd0e4037992898e8d8daef53.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
java基础
文章平均质量分 84
java基础知识
悬浮海
正在准备系列内容,更新较少。
展开
-
85 java反射_1 _类对象
85 java反射_1 _类对象什么是类对象类的对象:基于某个类new出来的对象,也称为实例对象。类对象:类加载的产物,封装了一一个类的所有信息(类名、父类、接口、属性、方法、构造方法)-verbose:calss 显示类的加载过程 (在运行配置中)获取类对象通过类的对象,获取类对象 Student s = new Student() ; Class c = s. getClass();通过类名获取类对象Class c =类名. class;通过静态方法获取类原创 2020-07-26 08:44:37 · 137 阅读 · 0 评论 -
88 java反射_4 _注解
文章目录枚举枚举的本质枚举与Switch配合使用注解定义注解注解属性类型注解的本质反射获取注解信息元注解枚举什么是枚举:枚举是一个引用类型,枚举是一个规定了取值范围的数据类型。枚举变量不能使用其他的数据,只能使用枚举中常量赋值,提高程序安全性。定义枚举使用Jenum关键字代码:package com.wlw.chapter12_reflex.demo04_enum;/** * 性别枚举: * 注意 * (1)枚举中必须包含枚举常量,也可以包含属性.方法。私有构造方法 * (原创 2020-07-26 08:49:26 · 217 阅读 · 0 评论 -
87 java反射_3 _设计模式
文章目录设计模式工厂设计模式单例模式方式1:饿汉式方式2:懒汉式单例模式两种方式的优缺点方式3:静态内部类写法(懒汉式)设计模式什么是设计模式:一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。简单理解:特定问题的固定解决方法。好处:使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、重用性。在Gof的《设计模式》书中介绍了23种设计模式工厂设计模式工厂模式主要负责对象创建的问题。开发中有一个非常重要的原则“开闭原则”,对拓展开放、对原创 2020-07-26 08:48:04 · 126 阅读 · 0 评论 -
86 java反射_2 _反射的常见操作
文章目录反射反射常用方法反射常见操作常见操作代码1:常见操作代码2:常见操作代码3:常见操作代码4:常见操作代码5:反射**JAVA反射机制**是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。反射被视为动态语言的关键。Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变原创 2020-07-26 08:45:48 · 186 阅读 · 0 评论 -
89 java反射_5 _总结
89 java反射_5 _总结类对象:Class对象, 封装了一个类的所有信息;程序运行中,可通过Class对象获取类的信息。获取类对象的三种方式:Class c =对象. getClass();Class c =类名. class;Class c=Class. forName(“包名.类名”);(推荐使用)类对象的方法操作(反射):要注意各种方法的使用工厂模式:主要用于创建对象,通过反射进行工厂模式的设计,完成动态的对象创建。单例模式:Singlet原创 2020-07-26 08:49:58 · 100 阅读 · 0 评论 -
拼接字符串,用 “+” 还是StringBuilder.append()
如果不是在循环体中进行字符串拼接的话,直接使用 String 的 “+” 就好了。单线程循环中操作大量字符串数据 → StringBuilder.append()多线程循环中操作大量字符串数据 → StringBuffer.append()原创 2023-08-15 21:30:00 · 154 阅读 · 0 评论 -
java中赋值语句(=)与浅拷贝与深拷贝弄出来的对象有什么区别
文章目录1、创建对象的5种方式2、Clone 方法3、基本类型和引用类型4、浅拷贝与深拷贝4.1、浅拷贝4.2、深拷贝4.3、如何实现深拷贝?4.3.1、让每个引用类型属性内部都重写clone() 方法4.3.2、利用序列化4.3.2、使用开源工具类5、赋值语句(=)与浅拷贝与深拷贝弄出来的对象对比5.1、赋值语句(=):5.2、浅拷贝:5.3、深拷贝:5.4、总结一下:探讨一下浅拷贝、深拷贝的原理,实现,区别。并对比通过赋值、浅拷贝、深拷贝三种不同方式弄出来的对象之间的equals()和hashCod原创 2021-10-30 20:42:42 · 530 阅读 · 0 评论 -
equals与hashCode之间的关系(重写equals方法与重写hashCode方法的关联)
文章目录一、equals()方法二、hashCode()方法三、equals()与hashCode()的关系(相关规定)四、重写equals()与重写hashCode() 的关系4.1、不会创建“该类对应的散列表”的情况4.2、会创建“该类对应的散列表”的情况4.2.1 Set无法去重问题4.2.2 哈希冲突问题4.2.3 equals()和hashCode()完全对应4.2.4 进一步解释为什么重写equals()就要重写hashCode()五、面试5.1 为什么重写equals()一定要重写hashCo原创 2021-10-30 20:54:55 · 504 阅读 · 0 评论 -
HashCode方法
文章目录1、hashCode方法介绍2、hashCode的作用3、eqauls方法和hashCode方法关系4、关于这两个方法的重要规范:5、为什么覆盖equals时总要覆盖hashCode6、总结1、hashCode方法介绍hashCode()方法返回的就是一个数值,从方法的名称上就可以看出,其目的是生成一个hash码。hash码的主要用途就是在对对象进行散列的时候作为key输入,据此很容易推断出,我们需要每个对象的hash码尽可能不同,这样才能保证散列的存取性能。事实上,Object类提供的默认实现原创 2021-09-02 16:52:14 · 5284 阅读 · 0 评论 -
HashMap(1.8)与ConcurrentHashMap(1.7&1.8)详解
1.HashMap(基于jdk1.8)1.1、HashMap(基于jdk1.8)的存储结构jdk1.8中,HashMap的存储结构为:数组(哈希表)+链表+红黑树(jdk1.7中HashMap的存储结构为数组(哈希表)+链表)jdk1.8中HashMap的结构图:1.2、HashMap(基于jdk1.8)的源码分析public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cl原创 2020-10-26 10:09:15 · 383 阅读 · 1 评论 -
为什么 ConcurrentHashMap 的读操作不需要加锁?
文章目录为什么 ConcurrentHashMap 的读操作不需要加锁?1、ConcurrentHashMap的简介2、get操作源码3、volatile登场4、是加在数组上的volatile吗?5、用volatile修饰的Node6、总结为什么 ConcurrentHashMap 的读操作不需要加锁?我们知道,ConcurrentHashmap(1.8)这个并发集合框架是线程安全的,当你看到源码的get操作时,会发现get操作全程是没有加任何锁的,这也是这篇博客讨论的问题——为什么它不需要加锁呢?1原创 2021-08-16 22:31:51 · 485 阅读 · 0 评论 -
68 java集合和泛型_18 _HashMap与HashTable的区别
文章目录HashMapHashTableHashMap与HashTable的区别HashMap线程不安全底层实现:数组+链表或者红黑树Node节点的定义(链表)初始容量为16的原因put方法//底层实现:数组+链表或者红黑树//保存的数组,初始化16个transient Node<K,V>[] table;//为entrySet和value提供一个缓存transient Set<Map.Entry<K,V>> entrySet;//元素的数量原创 2020-07-18 14:54:30 · 191 阅读 · 0 评论 -
67 java集合和泛型_17 _ArrayList与LInkedList的区别
67 java集合和泛型_17 _ArrayList与LInkedList的区别对比项ArrayListLinkedList底层结构(动态)数组双向链表查询快慢增删慢快随机访问(时间复杂度)O(1)O(N)遍历(时间复杂度)O(N)O(N/2)头部插入删除(时间复杂度)O(N)O(1)尾部插入删除(时间复杂度)O(1)O(1)中间插入删除效率低效率高总结:ArrayList和LinkedList在性能上原创 2020-07-18 14:53:27 · 158 阅读 · 0 评论 -
66 java集合和泛型_16 _java集合类的原理总结
文章目录一、Iterable接口二、Collection接口三、List接口3.1ArrayList类【重点】3.2linkedList 类【重点】3.3Vector类四、Set接口4.1HashSet【重点】4.2TreeSet【重点】4.3LinkedHashSet五、Map集合5.1Entry类5.2HashMap类【重点】5.3TreeMap【重点】5.4HashTable5.5LinkedHashMap5.6 Properties类一、Iterable接口定义了迭代集合的迭代方法iter原创 2020-07-18 14:52:31 · 200 阅读 · 0 评论 -
65 java集合和泛型_15 _Collections工具类
65 java集合和泛型_15 _Collections工具类Collection工具类(对集合进行操作)概念:集合工具类,定义了除了存取以外的集合常用方法。方法:public static void reverse(List<?> list) //反转集合中元素的顺序public static void shuffle(List<?> list) //随机重置集合元素的顺序public static void sort(List list) //升序排序(元素原创 2020-07-17 21:08:04 · 142 阅读 · 0 评论 -
64 java集合和泛型_14 _HashMap、HashSet、TreeMap、TreeSet判断元素相同
文章目录HashMap(键值对)HashSetTreeMap(键值对)TreeSetHashMap(键值对)HashMap 存放元素时,是key-value这样的组合时,在存放元素时,如果原本已经存在对应的key,则直接改变对应的value,并返回旧的value,而在判断key是否存在(相等)的时候是先比较key的hashCode,再比较相等(==)或equals的。HashMap中判断元素是否相同主要有两个方法,一个是判断key是否相同,一个是判断value是否相同:HashMap是怎样原创 2020-07-17 21:06:56 · 235 阅读 · 0 评论 -
63 java集合和泛型_13 _Map实现类 _TreeMap
文章目录Map集合的实现类TreeMap(存储结构:红黑树)TreeSet 与 TreeMap 的关系Map集合的实现类HashMap 【重点】 :JDK1.2版本,线程不安全,运行效率快;允许用null作为key或是value。Hashtable:JDK1.0版本,线程安全,运行效率慢;不允许nul 1作为key或是value。Properties :(IO流再学)Hashtable的子类,要求key和value都是String。通常用于配置文件的读取。TreeMap:原创 2020-07-17 21:06:05 · 211 阅读 · 0 评论 -
62 java集合和泛型_12 _Map实现类 _HashMap
文章目录Map集合的实现类HashMap(存储结构:哈希表)HashMap部分源码分析HashMap源码分析----总结HashSet与HashMap的关系Map集合的实现类HashMap 【重点】 :JDK1.2版本,线程不安全,运行效率快;允许用null作为key或是value。Hashtable:JDK1.0版本,线程安全,运行效率慢;不允许nul 1作为key或是value。Properties :(IO流再学)Hashtable的子类,要求key和value都是Str原创 2020-07-17 21:05:19 · 165 阅读 · 0 评论 -
61 java集合和泛型_11 _Map体系集合
61 java集合和泛型_11 _Map体系集合Map体系集合Map父接口特点:存储一对数据(Key-Value), 无序、无下标,键不可重复,值可重复。方法:V put(K key,V value) //将对象存入到集合中,关联键值。key重复则覆盖原值。0bject get (Object key) //根据键获取对应的值。Set keySet() //返回所有key。【重点】Collection values() //返回包含所有值的Col lection集合。Set原创 2020-07-17 21:04:24 · 145 阅读 · 0 评论 -
60 java集合和泛型_10 _Set实现类 _TreeSet
文章目录Set实现类TreeSet存储结构:红黑树TreeSet的使用Comparator 接口TreeSet案例Set实现类HashSet 【重点】 :基于HashCode计算元素存放位置,实现元素不重复。(存储结构是一个哈希表)当存入元素的哈希码相同时,会调用equals进行确认, 如结果为true, 则拒绝后者存入。TreeSet:(set集合是无序的,而TreeSet,对元素进行了排序)基于排列顺序实现元素不重复。实现了SortedSet接口,对集合元素自动排序。元素对原创 2020-07-17 21:03:20 · 176 阅读 · 0 评论 -
59 java集合和泛型_9 _Set实现类 _HashSet
文章目录Set实现类存储结构:哈希表(散列表)HashSet的使用HashSet的存储过程HashSet补充Set实现类HashSet 【重点】 :基于HashCode计算元素存放位置,实现元素不重复。(存储结构是一个哈希表)当存入元素的哈希码相同时,会调用equals进行确认, 如结果为true, 则拒绝后者存入。TreeSet:基于排列顺序实现元素不重复。实现了SortedSet接口,对集合元素自动排序。元素对象的类型必须实现Comparable接口,指定排序规则。通过C原创 2020-07-17 21:01:47 · 166 阅读 · 0 评论 -
58 java集合和泛型_8 _Collection父接口的另一个子接口Set接口
58 java集合和泛型_8 _Collection父接口的另一个子接口Set接口Set集合–Set子接口特点:无序、无下标、元素不可重复。方法:(全部继承自Collection中的方法,并没有提供其他的方法)…(可查看api学习)jdk的介绍:一个不包含重复元素的 collection。更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2,并且最多包含一个 null 元素Set接口的使用package com.wlw.collection原创 2020-07-17 20:58:15 · 128 阅读 · 0 评论 -
57 java集合和泛型_7 _泛型集合
57 java集合和泛型_7 _泛型集合泛型集合概念:参数化类型、类型安全的集合,强制集合元素的类型必须一致。特点:编译时即可检查,而非运行时抛出异常。访问时,不必类型转换(拆箱)。不同泛型之间引用不能相互赋值,泛型不存在多态。代码:package com.wlw.collection.generic;import com.wlw.collection.Student;import java.util.ArrayList;import java.util.Iterator原创 2020-07-17 20:57:28 · 133 阅读 · 0 评论 -
56 java集合和泛型_6 _泛型概述
56 java集合和泛型_6 _泛型概述@泛型@泛型类@泛型接口@泛型方法泛型Java泛型是JDK1.5中引入的一个新特性,其本质是参数化类型,把类型作为参数传递。常见形式有泛型类、泛型接口、泛型方法。语法:T<…> T称为类型占位符,表示一种引用类型。好处:提高代码的重用性防止类型转换异常,提高代码的安全性泛型类语法:类名, T称为类型占位符,表示一种引用类型,如果编写多个,要用逗号隔开注意点:泛型只能使用引用类型不同泛型对象原创 2020-07-17 20:51:30 · 166 阅读 · 0 评论 -
55 java集合和泛型_5 _List实现类 _ LinkedList 、 ArrayList与LinkedList的区别
55 java集合和泛型_5 _List实现类 _ LinkedList 、 ArrayList与LinkedList的区别List实现类ArrayList【重点】:(内部实质也是数组)数组结构实现,查询快、增刪慢;JDK1.2版本,运行效率快、线程不安全。LinkedList:链表结构实现,增删快,查询慢Vector:(基本不再使用)数组结构实现,查询快、增删慢;JDK1. 0版本,运行效率慢、线程安全。LinkedList链表结构,增删快,查询慢List 接口的链原创 2020-07-17 20:45:17 · 184 阅读 · 0 评论 -
54 java集合和泛型_4 _List实现类 _Vector
54 java集合和泛型_4 _List实现类 _VectorList实现类ArrayList【重点】:(内部实质也是数组)数组结构实现,查询快、增刪慢;JDK1.2版本,运行效率快、线程不安全。LinkedList:链表结构实现,增删快,查询慢Vector:(基本不再使用)数组结构实现,查询快、增删慢;JDK1. 0版本,运行效率慢、线程安全。Vector向量集合Vector 类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。但是,Ve原创 2020-07-17 20:44:10 · 111 阅读 · 0 评论 -
53 java集合和泛型_3 _List实现类 _ ArrayList
53 java集合和泛型_3 _List实现类 _ ArrayListList实现类ArrayList【重点】:(内部实质也是数组)数组结构实现,查询快、增刪慢;JDK1.2版本,运行效率快、线程不安全。LinkedList:链表结构实现,增删快,查询慢Vector:(基本不再使用)数组结构实现,查询快、增删慢;JDK1. 0版本,运行效率慢、线程安全。ArrayList的使用List 接口的大小可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素原创 2020-07-17 20:43:29 · 166 阅读 · 0 评论 -
52 java集合和泛型_2 _Collection父接口的一个子接口List接口
52 java集合和泛型_2 _Collection父接口的一个子接口List接口List集合–List子接口特点:有序、有下标、元素可以重复。方法:(与Collection父接口相对比,List是有下标的,所有方法会有所不同)void add(int index, 0bject o) //在index位置插入对象o。boolean addAll(int index, Collection c) //将一个集合中的元素添加到此集合中的index位置。0bject get(int ind原创 2020-07-17 20:41:50 · 174 阅读 · 0 评论 -
51 java集合和泛型_1 _集合概述与Collection体系集合
51 java集合和泛型_1 _集合概述与Collection体系集合集合概念概念:对象的容器,实现了对对象常用的操作,类似数组功能。(里面定义了对多个对象进行操作的常用方法,可实现数组的功能)和数组的相同点:都是容器和数组的区别:数组长度固定,集合长度不固定数组可以存储基本类型和引用类型,集合只能存储引用类型(基本类型可以进行装箱操作之后,在放入集合中)位置:java.util.*;Collection体系集合Collection父接口特点:代表一组任意类型的对象,一些原创 2020-07-17 20:38:57 · 147 阅读 · 0 评论 -
50 java常用类_12 _System类
50 java常用类_12 _System类System系统类,主要用于获取系统的属性数据和其他操作,构造方法私有的。方法名说明static void arraycopy(…)复制数组static long currentTimeMillis();获取当前系统时间,返回的是毫秒值static void gc();建议JVM赶快启动垃圾回收器回收垃圾static void exit(int status);退出jvm,如果参数是0表示正常退出jvm,非0表原创 2020-07-15 19:01:38 · 119 阅读 · 0 评论 -
49 java常用类_11 _SimpleDateFormat类
49 java常用类_11 _SimpleDateFormat类SimpleDateFormat是一个以与语言环境有关的方式来 格式化 和 解析日期 的具体类。进行格式化(日期 -> 文本)、解析(文本 -> 日期)。常用的时间模式字母字母日期或时间示例y年2020M年中月份08d月中天数10H一天中小时数(0~23)22m分钟16s秒59S毫秒367代码如下:package c原创 2020-07-15 19:00:59 · 118 阅读 · 0 评论 -
48 java常用类_10 _Calendar类
48 java常用类_10 _Calendar类Calendar提供了获取或设置各种日历字段的方法。构造方法 :protected Calendar(); //由于修饰符是protected,所以无法直接创建该对象。其他方法方法名说明static Calendar getInstance()使用默认时区和区域获取日历void set(int year,int month,int date,int hourofday,int minute,int原创 2020-07-15 19:00:05 · 200 阅读 · 0 评论 -
47 java常用类_9 _Date类
47 java常用类_9 _Date类DateDate表示特定的瞬间,精确到毫秒。Date类中的大部分方法都已经被Cal endar类中的方法所取代。时间单位:1秒=1000毫秒1毫秒=1000微秒1微秒=1000纳秒从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和解析日期字符串。Date 中的相应方法已废弃。两个构造方法:Date(long date):分配Date对象井初始化此对象,以表示自从标准原创 2020-07-15 18:59:32 · 145 阅读 · 0 评论 -
46 java常用类_8 _BigDecimal
46 java常用类_8 _BigDecimalBigDecimal很多实际应用中需要精确计算,而浮点数 double 、 float是 近似值存储,不符合要求,需要借助BIgDecimalBigDecimal 是精确存储位置:java.math包中作用:精确计算浮点数创建方式:BigDecimal bigDecimal = new BigDecimal("1.0");方法:BIgDecimal add(BigDecimal bd) 加BIgDecimal原创 2020-07-15 18:58:46 · 164 阅读 · 0 评论 -
45 java常用类_7 _StringBuffer与StringBuilder
45 java常用类_7 _StringBuffer与StringBuilder可变字符串StringBuffer:可变长字符串,JDK1.0提供,运行效率慢(比String快),线程安全 (buffer:缓冲区)StringBuilder:可变长字符串,JDK5.0提供,运行效率快,线程不安全(单线程选择StringBuilder)和String区别:(1)比String效率高、(2)比String节省内存相当于String增强类代码如下:package com.wlw.common_c原创 2020-07-15 18:58:07 · 156 阅读 · 0 评论 -
44 java常用类_6 _String案例演示
44 java常用类_6 _String案例演示案例演示需求:已知String str = “this is a text” ;将str中的单词单独获取出来将str中的text替换为practice在text前面插入一个easy将每个单词的首字母改为大写代码如下:package com.wlw.common_class.string;import java.util.Arrays;public class Demo03 {/*需求:1. 已知String str = "原创 2020-07-15 18:57:28 · 172 阅读 · 0 评论 -
43 java常用类_5 _String类常用方法
43 java常用类_5 _String类常用方法length()方法charAt(int index) 方法contains(String str) 方法public int length():返回字符串的长度。(空格也算一个长度)public char charAt(int index) :根据下标获取字符。(要注意下标的范围0 ~ str.length()-1)public boolean contains(String str) :判断当前字符串中是否包含str.代码如下:pac原创 2020-07-15 18:56:49 · 359 阅读 · 0 评论 -
42 java常用类_4 _String类
42 java常用类_4 _String类String字符串是常量,创建之后不可改变。字符串字面值存储在字符串池中,可以共享。String s = “Hello” ; 产生一个对象,字符串池中存储。String s = new String( “Hello”); //产生两个对象,堆、池各存储一个。对应代码如下:package com.wlw.common_class.string;public class Demo01 { public static void main(S原创 2020-07-15 18:56:06 · 145 阅读 · 0 评论 -
41 java常用类_3 _Integer缓冲区
41 java常用类_3 _Integer缓冲区整数缓冲区java预先创建了256个(-128~127)常用的整数包装类型对象在实际应用当中,对已经创建的对象进行复用package com.wlw.common_class.wrapper;public class Demo02 { public static void main(String[] args) { Integer integer1 = new Integer(100); //在堆里开辟空间原创 2020-07-15 18:54:47 · 156 阅读 · 0 评论 -
40 java常用类_2 _包装类
40 java常用类_2 _包装类什么是包装类基本数据类型所对应的引用数据类型基本类型的数据是存储在栈中,引用类型的数据是存储在堆里,栈里存放这个数据的地址Object可统一所有数据,包装类的默认值为null包装类对应基本数据类型包装类型byteByteshortShortintIntegerlongLongcharCharacterfloatFloatdoubleDoublebooleanBoolean类型原创 2020-07-15 18:54:03 · 126 阅读 · 0 评论