自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 461

原创 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 766

原创 Java -集合(Set接口)

​ 无序且不可重复。

2024-06-02 23:35:17 155

原创 Java-集合( LinkedList底层分析)

【代码】Java-集合( LinkedList底层分析)

2024-06-02 23:20:46 293

原创 Java-集合(手撕ArrayList底层源码)

ArrayList数组最大容量为什么是Integer.MAX_VALUE-8?或 ArrayList数组最大容量为什么要减8?ArrayList默认初始化长度是多少?ArrayList如何减少容器的伸缩性?ArrayList底层数据结构是什么?ArrayList数组最大容量是多少?减8是为了腾出空间存放数组的头部信息。ArrayList的扩容机制是什么?Object类型的一维数组。是原来数组长度的1.5倍。使用有参构造定义容量。

2024-06-01 23:38:21 183

原创 Java-集合(迭代器的使用与深入)

(注意:看源码找场景)

2024-06-01 23:32:30 654

原创 Java-Collection家族(List接口)

​ 有序且可重复(因为List接口中添加了许多针对下标操作的方法)​ 继承关系:class Stack extends Vector。​ 特点:队列模式、栈模式。​ 数据结构:一维数组。​ 数据结构:双向列表。​ 数据结构:一维数组。​ 特点:存储数据。​ 特点:线程安全。

2024-05-30 23:48:56 365

原创 Java-集合基础

数组:一旦初始化后长度不可变,元素类型受限定(String类型的数组只能装String的数据),数组可以存储基本数据类型。集合:长度可变的序列,元素类型不受限定(一个集合可以存储多个数据类型的元素),集合只能存储引用数据类型。

2024-05-30 23:42:37 440

原创 Java-枚举案例

EnumMap :专门为枚举类型量身定做的 Map 实现。虽然使用其它的 Map 实现(如HashMap)也能完成枚举类型实例到值得映射,但是使用 EnumMap 会更加高效,因为它只能接收同一枚举类型的实例作为键值,并且由于枚举类型实例的数量相对固定并且有限,所以 EnumMap 使用数组来存放与枚举类型对应的值。EnumSet :枚举类型的高性能 Set实现。Java 中提供了两个方便操作enum的工具类——EnumSet 和 EnumMap。优点:这种枚举通过枚举嵌套枚举的方式,将枚举常量分类处理。

2024-05-29 23:30:25 284

原创 Java-枚举

编写季节类(Season),该类只有四个对象(spring,summer,autumn,winter)

2024-05-29 23:28:23 454

原创 Java面向对象-常用类(BigInteger类和BigDecemal类)

(+、-、*、/)进行算数运算,而是使用 BigDecimal 类提供的 add、subtract、multiply、divide 等方法来进行算数运算。使用 BigDecimal 进行计算时,我们不能再使用。: 能表示比Integer更大的数字。

2024-05-28 17:28:58 359

原创 Java面向对象-常用类(Runtime类)

应用程序不能自己创建Runtime对象,可以通过Runtime的静态方法getRuntime()获得Runtime对象。Runtime代表Java程序的运行时环境,可以通过 getRuntime 方法获取当前运行时。Runtime类可以访问jvm的相关信息,如处理器数量,内存信息等。

2024-05-28 17:27:14 224

原创 Java面向对象-常用类(System类)

() 获得当前系统的毫秒值(与1970 年 1 月 1 日午夜之间的时间差)–测试程序的消耗时间。3、 System类提供了一些静态方法用于访问环境变量、系统属性的方法。1、 System类提供了一些静态属性和方法,允许通过类名直接调用。2、 System类提供了代表标准输入、标准输出、错误输出的类属性。(String key) 获得指定键的系统属性。(PrintStream out) 输出重定向。(PrintStream err) 错误重定向。() 获得当前的所有系统属性。

2024-05-27 19:17:05 511

原创 Java面向对象-常用类(Random类)

创建一个新的随机数生成器。seed(种子数底层理解)

2024-05-27 19:15:11 389

原创 Java面向对象-常用类(Math类)

​ 当使用一个类里面的静态方法或者静态变量时,每次都需要写类名。如果不想写类名,想直接写方法名或者变量名,则可以考虑使用。Math类是类,并且它的所有成员变量和成员方法都是静态的。Math 类提供了一序列基本数学运算和几何函数的方法。//导入Math下的所有方法和变量(包括常量)则代码中可以直接使用方面和变量名,而不需要前缀。//导入该类下的所有静态方法和常量8。常用方法:Math内的所有方法均为静态。

2024-05-26 22:36:14 624 1

原创 Java面向对象-常用类(日期时间类)

Calendar类(日历)是一个抽象基类,主要用于完成日期字段之间相互操作的功能。即可以设置和获取日期数据的特定部分。Date 和 SimpleDateFormat联合使用,获取出想要的日期时间格式。java.util.Date类表示特定的瞬间,精确到毫秒。Date(java.util.Date) – 日期类。SimpleDateFormat – 格式化日期类。Calendar底层使用简单工厂模式。Calendar获取单个日历数据。Calendar – 日历类。将显示的日期信息格式化。

2024-05-26 22:34:47 458 1

原创 手撕StringBuilder底层源码

经验:看底层,找场景。

2024-05-24 17:59:01 99

原创 手撕StringBufferr底层源码

经验:看底层,找场景。

2024-05-24 17:54:10 101

原创 Java面向对象-常用类(String 、StringBuffer 、StringBuilder的使用与深入)

String是不可变类, 即一旦一个String对象被创建, 包含在这个对象中的字符序列是不可改变的, 直至该对象被销毁。String类是final类,不能有子类。

2024-05-23 23:56:49 367

原创 Java面向对象-常用类 (包装类)

包装类是8种基本数据类型对应的类:Java是一种纯面向对象语言,但是java中有8种基本数据类型,破坏了java为纯面向对象的特征。为了承诺在java中一切皆对象,java又给每种基本数据类型分别匹配了一个类,这个类我们称之为包装类/封装类。

2024-05-23 22:37:14 393

原创 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 1315

原创 Java面向对象-多态与对象转型

一、多态理解:多种形态分类:​ 类的多态:子类对象指向父类引用(父类引用中存储的是子类对象在堆中开辟的地址)​ 接口的多态:实现类对象指向接口的引用(接口的引用中存储的是实现类对象在堆中开辟的地址)设计原则:前人总结的经验,告诉我们什么不该做设计模式:前人总结的经验,告诉我们一步一步的怎么做OCP原则:​ O - Open - 在需求升级时,对于创建类是欢迎的​ (因为创建类对于原来代码的影响几乎为0)​ C - Close - 在需求升级时,对于改动原有类是拒绝

2024-05-22 19:32:08 324

原创 Java面向对象-接口

接口是特殊的抽象类,但是本质还是抽象类,抽象类是不可以new对象的,接口也是不能new对象,new出来的匿名类内部类的对象。JDK1.7时接口里只能有抽象方法,JDK1.8时接口可以有静态方法和默认方法。d.接口解决了类的单继承问题?是的,因为类与类是单继承,类与接口是多实现。接口:静态常量、静态方法(JDK1.8)、默认方法(JDK1.8)b.一个接口可以实现多个接口?不可以,接口与接口的关系是多继承。e.一个类是否可以继承一个类并同时实现多个接口?a.一个类可以实现多个接口?接口 - 接口:多继承。

2024-05-21 19:57:55 415

原创 Java面向对象-抽象类及抽象方法

【代码】Java面向对象-抽象类及抽象方法。

2024-05-21 19:55:28 223

原创 Java面向对象-String的底层原理

【代码】Java面向对象-String的底层原理。

2024-05-20 20:25:48 273

原创 Java面向对象-Object

【代码】Java面向对象-Object。

2024-05-20 20:21:07 349

原创 Java面向对象-继承、父类、重写

使用场景:多个类似的类,有相同的属性和方法,就可以把相同属性和方法抽取到父类。应用场景:父类方法不满足子类需求时,子类就可以重复父类的方法。含义:重写也叫做复写,将父类中方法在子类中重新编写一遍。创建子类对象,先调用父类构造方法还是子类构造方法?创建子类对象,先完成父类构造方法还是子类构造方法?创建子类对象,为什么会调用父类构造方法?创建子类对象,会不会调用父类构造方法?子类可以继承父类私有化的属性和方法吗?创建子类对象,会不会创建父类对象?目的是将父类的属性存放在子类对象中。优点:解决了代码的冗余。

2024-05-19 21:36:13 331

原创 Java面向对象-static的使用与深入

属于类方法,直接用类名调用。

2024-05-19 21:32:10 446

原创 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 108

原创 Java面向对象-this(本对象)

c. this():调用本对象的构造方法(在一个构造方法中的。含义:代表本对象,this出现方法里,表示调用该方法的对象。a. this.属性:调用本对象的成员变量。b. this.方法:调用本对象的成员方法。调用另外一个构造方法)

2024-05-18 20:42:49 273

原创 Java面向对象-封装

概念:将属性封装到对象的内部,通过get/set方法去操作属性。a.将属性封装到对象的内部,外界不能直接操作属性。​ b.添加get(获取)/set(设置)方法。c.可以在get/set方法中做额外的功能。b.必须通过get/set方法去操作属性。d.经验:属性都必须封装。

2024-05-17 13:59:51 213

原创 Java面向对象-访问修饰符

​ a.不想让外界直接调用的属性就使用private修饰。​ b.不想让外界直接调用的方法就使用private修饰。​ b.修饰方法:私有化方法,不能让外界使用。​ a.修饰属性:私有化属性,不能让外界使用。含义:修饰类、方法、属性,定义使用的范围。含义:私有化方法或属性。

2024-05-17 13:56:44 245

原创 Java初识面向对象-类与对象

​ c.当类中没有写构造方法时,系统会默认添加无参构造(无参数的构造方法)成员变量:类里,方法的外面的变量,并且系统会赋默认值,作用在整个类中。​ 类的作用:类相当于一个模板,刻画出具有相同属性和方法的对象。​ 类名 对象名 :对象名属于引用,存的是对象在堆内存中的地址。​ 类:抽象的概念,把具有相同特征和操作的事物归为一类。​ 类:抽象的概念,把具有相同属性和方法的对象归为一类。局部变量:方法内的变量,系统不会赋默认值,作用在方法中。成员方法:属于对象的方法,必须使用对象调用。

2024-05-16 23:59:42 561

原创 Java基础知识综合应用-五子棋

【代码】Java基础知识综合应用-五子棋。

2024-05-16 01:13:56 195

原创 Java基础知识-数组

需求:创建一个int类型的数组,长度由用户指定,数据由用户输入,输入完毕后获取最大值并输出。​ f.数组一旦初始化成功,长度不可变(意味着数组不能添加和删 除)​ Arrays是Java给我们提供的专门用于操作数组的工具类。需求:设计一个方法,传入int类型的数组,返回最大值和最小值。需求:设计一个方法,传入n个int类型的值,返回最大值。​ 静态初始化:元素由程序员指定,长度由系统分配。​ 动态初始化:长度由程序员指定,元素由系统分配。​ e.数组元素在内存中开辟的空间是连续的。

2024-05-15 23:59:17 594

原创 Java基础知识综合应用-万年历(方法版)

要想打印当月的日历,需要哪些数据作为支持?年份、月份、当月天数、当月第一天是星期几。需求:输入年和月,打印当月的日历。线索:1900年1月1日是星期一。

2024-05-15 16:40:10 191

原创 Java基础知识-方法的递归

需求:有1对兔子,从出生后的第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第n个月有几对兔子。需求:设计一个方法,传入一个int值n,求n的阶乘。a.找规律:什么情况下方法应该调用方法自身。设计一个方法,传入月份,获取当月兔子的对数。b.找出口:什么情况下应该解决该方法。递归是一种程序设计的思想。

2024-05-14 22:52:25 330 2

原创 Java基础知识-方法的重载

​ 在同一个类中,多个方法功能大概一致,但是细节实现不一 致,就可以考虑使用重载。​ 系统会根据实参类型自动匹配到对应的方法中。​ 3.参数列表的个数或者类型不一致。​ 2.方法名必须一致。​ 1.在同一个类中。​ 4.与返回值无关。​ 方法之间的关系。

2024-05-14 22:32:30 264 2

原创 Java基础知识-方法

特定功能的代码块。

2024-05-13 19:44:29 516

原创 Java执行语句综合应用-万年历

需求:输入年和月,打印当月的日历。线索:1900年1月1日是星期一。

2024-05-13 19:06:14 270

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除