- 博客(52)
- 收藏
- 关注
原创 Java集合-HashMap底层源码
JDK1.8版本的HashMap,数据结构是一维数组+单向链表+红黑树,获取hash值使用高16位^低16位,尾插法。多个key的hash值一样,意味着下标也是一样,在底层就会将多个key存储在一个单向链表里,效率极低。JDK1.7版本的HashMap,数据结构是一维数组+单向链表,获取hash值使用位移计算,头插法。因为不同的字符串的hash值有可能相同,会造成hash碰撞,所以hash种子数就应运而生了~~计算hash值是 数组长度-1 & key的hash值,2的幂长度会导致下标结果分布更加散列。
2024-06-03 23:52:04
490
原创 Java集合-Map家族
ConcurrentHashMap:存key+value,key去重,无序,线程安全,局部加锁、CAS-效率高。Hashtable:弃用,存key+value,key去重,无序,线程安全,方法加锁-效率低。LinkedHashMap:存key+value,key去重,有序,线程不安全。HashMap:存key+value,key去重,无序,线程不安全。TreeMap:存key+value,针对于Key排序。LinkedHashSet:去重+有序,线程不安全。HashSet:去重+无序,线程不安全。
2024-06-03 23:44:40
799
原创 Java-集合(手撕ArrayList底层源码)
ArrayList数组最大容量为什么是Integer.MAX_VALUE-8?或 ArrayList数组最大容量为什么要减8?ArrayList默认初始化长度是多少?ArrayList如何减少容器的伸缩性?ArrayList底层数据结构是什么?ArrayList数组最大容量是多少?减8是为了腾出空间存放数组的头部信息。ArrayList的扩容机制是什么?Object类型的一维数组。是原来数组长度的1.5倍。使用有参构造定义容量。
2024-06-01 23:38:21
209
原创 Java-Collection家族(List接口)
有序且可重复(因为List接口中添加了许多针对下标操作的方法) 继承关系:class Stack extends Vector。 特点:队列模式、栈模式。 数据结构:一维数组。 数据结构:双向列表。 数据结构:一维数组。 特点:存储数据。 特点:线程安全。
2024-05-30 23:48:56
375
原创 Java-集合基础
数组:一旦初始化后长度不可变,元素类型受限定(String类型的数组只能装String的数据),数组可以存储基本数据类型。集合:长度可变的序列,元素类型不受限定(一个集合可以存储多个数据类型的元素),集合只能存储引用数据类型。
2024-05-30 23:42:37
453
原创 Java-枚举案例
EnumMap :专门为枚举类型量身定做的 Map 实现。虽然使用其它的 Map 实现(如HashMap)也能完成枚举类型实例到值得映射,但是使用 EnumMap 会更加高效,因为它只能接收同一枚举类型的实例作为键值,并且由于枚举类型实例的数量相对固定并且有限,所以 EnumMap 使用数组来存放与枚举类型对应的值。EnumSet :枚举类型的高性能 Set实现。Java 中提供了两个方便操作enum的工具类——EnumSet 和 EnumMap。优点:这种枚举通过枚举嵌套枚举的方式,将枚举常量分类处理。
2024-05-29 23:30:25
293
原创 Java面向对象-常用类(BigInteger类和BigDecemal类)
(+、-、*、/)进行算数运算,而是使用 BigDecimal 类提供的 add、subtract、multiply、divide 等方法来进行算数运算。使用 BigDecimal 进行计算时,我们不能再使用。: 能表示比Integer更大的数字。
2024-05-28 17:28:58
374
原创 Java面向对象-常用类(Runtime类)
应用程序不能自己创建Runtime对象,可以通过Runtime的静态方法getRuntime()获得Runtime对象。Runtime代表Java程序的运行时环境,可以通过 getRuntime 方法获取当前运行时。Runtime类可以访问jvm的相关信息,如处理器数量,内存信息等。
2024-05-28 17:27:14
235
原创 Java面向对象-常用类(System类)
() 获得当前系统的毫秒值(与1970 年 1 月 1 日午夜之间的时间差)–测试程序的消耗时间。3、 System类提供了一些静态方法用于访问环境变量、系统属性的方法。1、 System类提供了一些静态属性和方法,允许通过类名直接调用。2、 System类提供了代表标准输入、标准输出、错误输出的类属性。(String key) 获得指定键的系统属性。(PrintStream out) 输出重定向。(PrintStream err) 错误重定向。() 获得当前的所有系统属性。
2024-05-27 19:17:05
537
原创 Java面向对象-常用类(Math类)
当使用一个类里面的静态方法或者静态变量时,每次都需要写类名。如果不想写类名,想直接写方法名或者变量名,则可以考虑使用。Math类是类,并且它的所有成员变量和成员方法都是静态的。Math 类提供了一序列基本数学运算和几何函数的方法。//导入Math下的所有方法和变量(包括常量)则代码中可以直接使用方面和变量名,而不需要前缀。//导入该类下的所有静态方法和常量8。常用方法:Math内的所有方法均为静态。
2024-05-26 22:36:14
660
1
原创 Java面向对象-常用类(日期时间类)
Calendar类(日历)是一个抽象基类,主要用于完成日期字段之间相互操作的功能。即可以设置和获取日期数据的特定部分。Date 和 SimpleDateFormat联合使用,获取出想要的日期时间格式。java.util.Date类表示特定的瞬间,精确到毫秒。Date(java.util.Date) – 日期类。SimpleDateFormat – 格式化日期类。Calendar底层使用简单工厂模式。Calendar获取单个日历数据。Calendar – 日历类。将显示的日期信息格式化。
2024-05-26 22:34:47
488
1
原创 Java面向对象-常用类(String 、StringBuffer 、StringBuilder的使用与深入)
String是不可变类, 即一旦一个String对象被创建, 包含在这个对象中的字符序列是不可改变的, 直至该对象被销毁。String类是final类,不能有子类。
2024-05-23 23:56:49
403
原创 Java面向对象-常用类 (包装类)
包装类是8种基本数据类型对应的类:Java是一种纯面向对象语言,但是java中有8种基本数据类型,破坏了java为纯面向对象的特征。为了承诺在java中一切皆对象,java又给每种基本数据类型分别匹配了一个类,这个类我们称之为包装类/封装类。
2024-05-23 22:37:14
424
原创 Java面向对象-内部类
c. 抽象类的子类只创建一次对象,就没必要创建子类,直接使用匿名内部类(new 抽象类)以new对象的,接口也是不能new对象,new出来的匿名类内部类的对象。a. B类的对象只在A类中使用,并且B类对象使用到了A类所有的属性,就可以将B类作为A类的成员内部类。b. B类的对象只在A类中使用,并且B类对象使用到了A类静态的属性,就可以将B类作为A类的静态内部类。理解:一个类中再声明另外一个类。5.5匿名内部类(在抽象类中)接口 - 接口:多继承。类 - 接口:多实现。
2024-05-22 19:51:15
1348
原创 Java面向对象-多态与对象转型
一、多态理解:多种形态分类: 类的多态:子类对象指向父类引用(父类引用中存储的是子类对象在堆中开辟的地址) 接口的多态:实现类对象指向接口的引用(接口的引用中存储的是实现类对象在堆中开辟的地址)设计原则:前人总结的经验,告诉我们什么不该做设计模式:前人总结的经验,告诉我们一步一步的怎么做OCP原则: O - Open - 在需求升级时,对于创建类是欢迎的 (因为创建类对于原来代码的影响几乎为0) C - Close - 在需求升级时,对于改动原有类是拒绝
2024-05-22 19:32:08
343
原创 Java面向对象-接口
接口是特殊的抽象类,但是本质还是抽象类,抽象类是不可以new对象的,接口也是不能new对象,new出来的匿名类内部类的对象。JDK1.7时接口里只能有抽象方法,JDK1.8时接口可以有静态方法和默认方法。d.接口解决了类的单继承问题?是的,因为类与类是单继承,类与接口是多实现。接口:静态常量、静态方法(JDK1.8)、默认方法(JDK1.8)b.一个接口可以实现多个接口?不可以,接口与接口的关系是多继承。e.一个类是否可以继承一个类并同时实现多个接口?a.一个类可以实现多个接口?接口 - 接口:多继承。
2024-05-21 19:57:55
424
原创 Java面向对象-继承、父类、重写
使用场景:多个类似的类,有相同的属性和方法,就可以把相同属性和方法抽取到父类。应用场景:父类方法不满足子类需求时,子类就可以重复父类的方法。含义:重写也叫做复写,将父类中方法在子类中重新编写一遍。创建子类对象,先调用父类构造方法还是子类构造方法?创建子类对象,先完成父类构造方法还是子类构造方法?创建子类对象,为什么会调用父类构造方法?创建子类对象,会不会调用父类构造方法?子类可以继承父类私有化的属性和方法吗?创建子类对象,会不会创建父类对象?目的是将父类的属性存放在子类对象中。优点:解决了代码的冗余。
2024-05-19 21:36:13
347
原创 Java面向对象-分包
b. 实体类:com.dream.vo/bean/entity/bto/pojo。项目作用:项目中有众多的类,把相同功能的类放在同一个包中,方便管理。c. 数据库类:com.dream.dao/mapper/map。d. 操作业务类:com.qf.biz/service。a. 工具类:com.dream.util/tool。com/net/cn.公司名.项目名/功能名。基本作用:防止了类的重名问题。
2024-05-18 20:54:18
115
原创 Java面向对象-this(本对象)
c. this():调用本对象的构造方法(在一个构造方法中的。含义:代表本对象,this出现方法里,表示调用该方法的对象。a. this.属性:调用本对象的成员变量。b. this.方法:调用本对象的成员方法。调用另外一个构造方法)
2024-05-18 20:42:49
285
原创 Java面向对象-封装
概念:将属性封装到对象的内部,通过get/set方法去操作属性。a.将属性封装到对象的内部,外界不能直接操作属性。 b.添加get(获取)/set(设置)方法。c.可以在get/set方法中做额外的功能。b.必须通过get/set方法去操作属性。d.经验:属性都必须封装。
2024-05-17 13:59:51
220
原创 Java面向对象-访问修饰符
a.不想让外界直接调用的属性就使用private修饰。 b.不想让外界直接调用的方法就使用private修饰。 b.修饰方法:私有化方法,不能让外界使用。 a.修饰属性:私有化属性,不能让外界使用。含义:修饰类、方法、属性,定义使用的范围。含义:私有化方法或属性。
2024-05-17 13:56:44
255
原创 Java初识面向对象-类与对象
c.当类中没有写构造方法时,系统会默认添加无参构造(无参数的构造方法)成员变量:类里,方法的外面的变量,并且系统会赋默认值,作用在整个类中。 类的作用:类相当于一个模板,刻画出具有相同属性和方法的对象。 类名 对象名 :对象名属于引用,存的是对象在堆内存中的地址。 类:抽象的概念,把具有相同特征和操作的事物归为一类。 类:抽象的概念,把具有相同属性和方法的对象归为一类。局部变量:方法内的变量,系统不会赋默认值,作用在方法中。成员方法:属于对象的方法,必须使用对象调用。
2024-05-16 23:59:42
589
原创 Java基础知识-数组
需求:创建一个int类型的数组,长度由用户指定,数据由用户输入,输入完毕后获取最大值并输出。 f.数组一旦初始化成功,长度不可变(意味着数组不能添加和删 除) Arrays是Java给我们提供的专门用于操作数组的工具类。需求:设计一个方法,传入int类型的数组,返回最大值和最小值。需求:设计一个方法,传入n个int类型的值,返回最大值。 静态初始化:元素由程序员指定,长度由系统分配。 动态初始化:长度由程序员指定,元素由系统分配。 e.数组元素在内存中开辟的空间是连续的。
2024-05-15 23:59:17
607
原创 Java基础知识综合应用-万年历(方法版)
要想打印当月的日历,需要哪些数据作为支持?年份、月份、当月天数、当月第一天是星期几。需求:输入年和月,打印当月的日历。线索:1900年1月1日是星期一。
2024-05-15 16:40:10
200
原创 Java基础知识-方法的递归
需求:有1对兔子,从出生后的第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第n个月有几对兔子。需求:设计一个方法,传入一个int值n,求n的阶乘。a.找规律:什么情况下方法应该调用方法自身。设计一个方法,传入月份,获取当月兔子的对数。b.找出口:什么情况下应该解决该方法。递归是一种程序设计的思想。
2024-05-14 22:52:25
340
2
原创 Java基础知识-方法的重载
在同一个类中,多个方法功能大概一致,但是细节实现不一 致,就可以考虑使用重载。 系统会根据实参类型自动匹配到对应的方法中。 3.参数列表的个数或者类型不一致。 2.方法名必须一致。 1.在同一个类中。 4.与返回值无关。 方法之间的关系。
2024-05-14 22:32:30
273
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人