![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础
文章平均质量分 66
Java基础
Elephant_King
github:https://github.com/Elephant-King9
平时写的代码会上传到github,欢迎学习交流
展开
-
【Java基础】finally的用法
try关键字后可以定义finally代码块,finally块中定义的代码,总在try和任何catch块后,方法完成之前运行正常情况下,不管是否抛出或者捕获异常,finally都会执行简单的例子try { System.out.println("The count is " + Integer.parseInt(count));} catch (NumberFormatException e) { System.out.println("No count");} finally {原创 2022-02-22 12:30:39 · 2905 阅读 · 0 评论 -
【Java基础】多态的分类
多态分类通用的多态通用多态氛围参数多态和包含多态参数多态采用参数化模板,通过给出不同的类型参数,使得一个结构具有多种类型包含多态同样的操作可以用于一个类型以及子类型(是子类型,不是子类)包含多态一般需要进行运行时的类型检查特定的多态分为过载多态和强制多态过载多态同一个名在不同上下文中有不同的类型强制多态编译程序通过语义操作,把操作对象的类型强行加以变换,衣服和函数或者操作符的要求,...原创 2022-02-08 19:07:58 · 589 阅读 · 0 评论 -
【Java基础】异常的体系结构
Java中所有的异常都来自顶级父类ThrowableThrowable下有两个子类Exception和ErrorError(错误) 是指程序无法处理的问题,一旦出现错误,整个程序会崩溃,程序将被迫停止运行,比如说OOM(内存溢出)Exception(异常) 指程序本身可以处理的问题,不会导致程序终止,其中又被分为两大类,运行时异常(RunntimeException),编译时异常(检查异常)(CheckedException)运行时异常 ...原创 2022-01-09 15:49:16 · 234 阅读 · 0 评论 -
【Java基础】解释性语言和编译型语言
目录编译型语言例子概念为什么编译型语言跨平台性较弱解释性语言例子概念为什么解释性语言能一处编写,到处运行编译型语言例子C、C++、Golang、汇编等概念 对于编译型语言,开发完成以后需要将所有的源代码都转换成可执行程序,比如Windows下的.exe文件,可执行程序(.exe)里面包含的就是机器码,只要我们拥有可执行程序,就可以随时运行,不用重新编译了,达到“一次编译,无限次运行” 编译型语言一般是不能跨平台的,也...原创 2022-01-09 13:57:30 · 502 阅读 · 0 评论 -
【Java基础】ArrayList扩容机制
ArrayList源码分析(扩容机制jdk8) - 掘金private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;private void grow(int minCapacity) { // oldCapacity为旧数组的容量 int oldCapacity = elementData.length; // newCapacity为新数组的容量(oldCap+oldCap/2:即更新为旧容量的1.5倍)转载 2022-01-09 13:20:02 · 69 阅读 · 0 评论 -
【Java基础】集合类初始容量、加载因子、扩容增量
ArrayList默认初始容量:10默认加载因子:1 即当元素个数超过容量长度是,进行扩容默认扩容增量:1.5,原数组的1.5倍Vector默认初始容量:10默认加载因子:1默认扩容增量:1HashSet默认初始容量:16默认加载因子:0.75默认扩容增量:1HashMap默认初始容量:16默认加载因子:0.75默认扩容增量:1参考文章Java集合类初始容量、加载因子、扩容增量 - 光何 - 博客园...原创 2022-01-09 13:17:16 · 309 阅读 · 0 评论 -
【Java基础】HashMap
HashMap存储步骤底层实现链表+数组+红黑树链表与红黑树的转化jdk8开始链表长度到8,数组长度超过64,链表转化为红黑树,长度小于6,红黑树转化为链表,元素内部以Node节点存在存储步骤 1.计算key的hash值,二次hash然后对数组长度去博,对应到数组下标 2.如果没有产生hash冲突(下标位置没有元素),直接创建Node存入数组 3.如果产生hash冲突,先进行equals比较...原创 2022-01-09 12:17:16 · 144 阅读 · 0 评论 -
【Java基础】ArrayList和LinkedList的区别与联系
ArrayList和LinkedList的区别与联系相同点:1.两者都实现了List接口2.两者都是线程不安全的不同点: 1.从底层数据结构说 ArrayList的底层数据结构是动态数组,也就是数组 数组在内存中的存储结构是连续的 LinkedList的底层数据结构是双向链表 ...原创 2022-01-08 23:36:54 · 635 阅读 · 0 评论 -
【Java基础】HashSet去重原理
关于HashSet的概念,参考这篇文章1.Java中HashSet使用散列表实现的,散列表的默认大小为16,加载因子为0.75在这里的加载因子是代表Hash表中的元素填满的程度,加载因子0.75代表当HashSet中元素达到总容量的75%就要对HashSet进行扩充了加载因子越大,填满的元素越多,空间率用率越高,但是冲突的机会增加了,查找成本越大,查找时间越长 加载因子越小,填满的元素越少,空间利用率越低,但是冲突的机会减少了,查找成本越小,查找...原创 2022-01-08 21:57:16 · 1820 阅读 · 0 评论 -
【Java基础】重载和重写的区别
重载概念方法重载就是让类以统一的形式处理不同数据的一种手段多个同名方法同时存在,具有不同的参数个数/类型或者返回值类型,重载的时候,方法名要一样,但是参数类型和个数必须不一样,返回值类型也可以不一样,不能只有返回值类型不一样。无法以返回类型作为重载函数的区分标准重载是一个类中多态性的表现重载的规则 1.必须具有不同的参数列表(形参的数目,类型或是形参顺序) 2.在参数列...原创 2022-01-08 21:23:36 · 101 阅读 · 0 评论 -
【Java基础】String str = new String(“abc“)究竟创建了几个对象?
一张图搞懂答案:一次或两次当方法区中没有对应的字符串,会在堆中和方法区中创建,然后堆再指向方法区,创建两次当方法去中有对应的字符串,只在堆中创建,然后堆指向已经存在的方法区,创建一次参考文章百度安全验证...原创 2022-01-08 18:29:03 · 71 阅读 · 0 评论 -
【Java基础】String、StringBuffer、StringBuilder的区别
目录String对于拼接字符串的理解:StringBuffer与StringBuilderStringBuffer与StringBuilder之间的区别 在线程安全层面讲 在效率方面来讲三者之间的区别与联系三者之间的区别1.在是否可改变2.在性能层面上3.在线程安全层面上使用场景StringString的值是不可变得,这就导致每次对String操作都会生成新的String对象,这样不仅效率低下,也会创类大量有限...原创 2022-01-08 18:09:46 · 203 阅读 · 0 评论 -
【Java基础】为什么局部内部类和匿名内部类只能访问局部final方法
目录局部内部类和匿名内部类是什么局部内部类匿名内部类为什么局部内部类和匿名内部类只能访问final的局部变量?局部内部类和匿名内部类是什么局部内部类局部内部类类似于局部变量,声明周期就是定义它的代码块的生命周期,例如在方法中定义,声明周期就是和方法相同,在for循环或者if语句中定义就是和for循环和if语句的生命周期相同public class Test04 { public void run(){ //局部内部类 cl...原创 2022-01-08 12:25:04 · 1030 阅读 · 1 评论 -
【Java基础】详解==和equals的区别
====对比的是什么:对比的是栈中的值1.其中基本数据类型是对比变量值2.引用类型是对比堆中内存对象的地址(可能两个相同的值有在堆中有不同的地址)对于这三条语句,我们来逐一的分析1.基本数据类型没有什么好说的,这里主要提一下...原创 2022-01-08 10:50:51 · 206 阅读 · 0 评论 -
【Java基础】自动拆装箱
目录基本数据类型八大数据类型Java类型分类 基本类型: 引用类型:void类型使用基本数据类型的好处包装类型创建对象方法ByteBooleanShortCharacterIntegerLongFloatDouble为什么需要包装类装箱与拆箱装箱与拆箱 装箱: 拆箱:自动拆装箱 自动装箱: 自动拆箱:自动拆装箱的实现原...原创 2022-01-08 10:22:17 · 6844 阅读 · 3 评论 -
【Java基础】详解集合类(List、Set、Map)
集合类的分类我们口中所说的集合类的类型主要为三种:set(集合),map(映射),list(列表)集合类是通过两个接口来实现的1.Collection接口,list和set实现了这个接口2.Map接口,map实现了这个接口大体有自己根据源码总结的流程图为流程图ListList(列表)中,分为三大部分 1.ArrayList 2.Vector 3...原创 2022-01-07 14:01:10 · 2422 阅读 · 0 评论 -
【Java基础】详解抽象类和接口的区别
1.抽象类可以有构造方法,接口不能有构造方法因为抽象类除了不能被实例化以外,其他的特性和类基本相同,也可以拥有非抽象的方法,也存在成员变量,抽象类的实现类可以通过调用抽象类的构造方法来对抽象类中的成员变量进行赋值接口没有成员变量,有的话也只能是静态常量,而且接口中只能有抽象方法,不能有非抽象方法2.抽象类中可以有普通的成员变量,接口中没有普通的成员变量 同上因为抽象类除了不能被实例化以外,其他的特性和类基本相同,也存在成员变量 ...原创 2022-01-06 13:48:54 · 602 阅读 · 1 评论 -
【Java基础】详解Java接口(interface)
目录接口(interface)修饰范围:什么时候使用:作用: 修饰类:接口(interface)java有时候需要几个类派生出一个类,继承他们的所有属性和方法。但是Java不支持多重继承,这个时候我们就需要接口,得到多重继承的效果修饰范围: 类什么时候使用: 如果一个类中,既有抽象方法,又有非抽象方法,那么该类只能定义为抽象类,不能定义为接口 如果一个类中,只有抽象方法,没有非抽象方法,那么该类...原创 2022-01-06 13:25:34 · 335 阅读 · 0 评论 -
【Java基础】详解abstract关键字
目录abstract关键字修饰范围:作用:修饰类: 修饰方法:抽象类和抽象方法的关系abstract与final、static、private、native的关系 final和abstract不能修饰同一个对象或类 static和abstract不能修饰同一个对象或类 private和abstract不能同时修饰一个对象或类 native和abstract不能修饰同一个对象或...原创 2022-01-06 12:54:27 · 455 阅读 · 0 评论 -
【Java基础】详解所有变量和常量的定义与区别
本文主要说明一下概念 1.静态变量 2.静态常量 3.成员变量 4.类变量 5.实例变量 6.局部变量 7.常量关系图其中成员变量包括三个变量: 1.局部变量 2.实例变量 3.类变量(又叫静态变量)然后就是常量,静态变量和静态常量的区别: 1.常量是用final修饰的 2....原创 2022-01-06 02:25:44 · 566 阅读 · 0 评论 -
【Java基础】详解final和static
目录final修饰范围:作用:修饰类: 修饰属性: 修饰方法:static修饰范围:作用: 修饰属性: 修饰方法: 修饰代码段: 修饰类: 修饰内部类:final修饰范围:类,属性,方法,局部变量作用:修饰类: 当final修饰类的时候,表示这个...原创 2022-01-06 02:14:07 · 1205 阅读 · 0 评论 -
【Java基础】面向对象
目录什么是面向对象面向对象和面向过程举例面向对象的三大特性封装:什么是封装封装的优点经典封装的例子继承:多态:多态的例子什么是面向对象与面向过程相比,两者是对同一种问题的两种不同的处理角度面向过程更注重事情的每一个步骤以及这些步骤的顺序面向对象更注重事情都有那些参与者,以及每个参与者都需要干什么这里可以举一个洗衣机洗衣服的案例面向对象和面向过程举例假设人要用洗衣机洗衣服,具体步骤为:1.打开洗衣机...原创 2022-01-05 22:44:19 · 243 阅读 · 0 评论 -
【Java基础】Lambda表达式
目录参考文章为什么要使用Lambda表达式用其他方法来实现Lambda的功能成员内部类局部内部类静态内部类匿名内部类函数式接口Lambda表达式语法参考文章Lambda表达式超详细总结_huangjhai的博客-CSDN博客_lambda表达式为什么要使用Lambda表达式为什么使用Lambda表达式 1.避免匿名内部类定义过多 2.可以让你的代码看起来很简洁 3.去掉了一堆没有意义的...原创 2021-12-28 12:17:53 · 293 阅读 · 0 评论 -
【Java基础】详解JVM、JRE、JDK三者的区别和联系
参考文章JVM、JRE、JDK的区别 - 莫等、闲 - 博客园弄懂 JRE、JDK、JVM 之间的区别与联系_Walker_YAM-CSDN博客_jre和jvm概念JVM:英文名称(Java Virtual Machine),就是Java虚拟机,只认识xxx.class文件,仅仅是用来运行Java编译好的程序的(编译好的程序为xxx.class),一般是不能单独安装的,而且JVM要运行.class文件时,需要运用JRE中的类库来运行JRE:英文名称(Java Runtime ...原创 2021-12-22 11:07:52 · 172 阅读 · 0 评论