JavaSE
文章平均质量分 58
记录总结JavaSE阶段学习的知识
有裂痕的石头
埋头苦干,未来可期
展开
-
Java基本数据类型和String类型的转化
基本数据类型转String类型只需要 + ""即可,如下public static void main(String[] args) { int n1 = 100; float n2 = 1.1f; double n3 = 3.4; boolean b1 = true; String str1 = n1 + ""; String str2 = n2 + ""; String str3 = n3原创 2022-03-10 18:13:49 · 507 阅读 · 2 评论 -
模拟实现HashMap
为了方便实现,突出重点,将key指定为String类型,将Value指定位Integer类。在实际中,如果Key的类型为自己的实现类,那么必须重写该类的hashCode()和equals()两个方法,重写hashCode()方法是因为在找key对应的下标时需要调用hashCode()方法,重写equals()方法是因为两个相同对象的哈希值必须相同,程序怎么知道哪两个对象相同,就是通过equals方法。对于还不了解哈希表的同学建议先去看上一篇博客哈希表(HashTable),哈希冲突的避免、解决。下面开原创 2021-09-11 17:38:46 · 235 阅读 · 0 评论 -
Java中的Comparable和Comparator到底该怎么用看完就全明白了
很多同学搞不清楚Comparable和Comparator这两个接口,单看这两个单词,一个是形容词一个是名词,但是可以看出来都和比较有关,我个人把实现了Comparable接口的某个类理解成这个类具备了比较能力,而把实现了Comparator的类称为比较器类,那么他们分别该怎么用呢?目录Comparable(比较能力)PriorityQueue队列Comparator(比较器)小结Comparable(比较能力)PriorityQueue队列在正式介绍他们俩之前,先给大家介绍一下Java中的优先级队原创 2021-08-26 21:41:49 · 889 阅读 · 18 评论 -
什么是java源码文件,什么是字节码文件,初程序的编译和运行
java源文件就是源代码文件,是指我们编写好的代码文件,即当我们开始运行的时候系统会执行javac命令先把java源文件编译成字节码文件即:这里科普一下java为什么会有字节码文件。字节码产生的背景:Java最初诞生的目的就是为了在不依赖于特定的物理硬件和操作系统环境下运行,那么也就是说Java程序实现跨平台特性的基石其实就是字节码。Java之所以能够解决程序的安全性问题、跨平台移植性等问题,最主要的原因就是Java源代码的编译结果并非是本地机器指令,而是字节码。当Java源代码成功编译成字节原创 2021-07-29 17:45:41 · 7036 阅读 · 0 评论 -
Java中的抽象类和接口(interface),abstract关键字的用法
目录抽象类接口抽象类Java是一个面向对象的语言,因此类可以说是根基一般的存在,所有的方法/变量/语句都必须依附一个类才能存在,有时我们为了对一个类进行拓展,会选择继承这个类,在子类中对父类进行增删改,由此就出现了这么一种类,一种专门用来被继承的且不能实例化对象的类——抽象类。抽象类是被关键词abstract修饰的类,像这样:public abstract class AbsStudy { . . . . . . . }虽然抽象类不能被继承,但是它也是一个类,是类就能被 方法/变量/原创 2021-03-11 19:19:14 · 623 阅读 · 0 评论 -
汉诺塔的递归实现,看完就懂了
对于要实现汉诺塔递归程序的同学,我相信有一部分同学还没有真正的玩过汉诺塔这个游戏,我建议你们现在手机随便哪个应用商店里下载一个汉诺塔游戏去玩一会,你了解了游戏的玩法之后,也更方便你去理解递归代码的逻辑。下面通过标准汉诺塔简单介绍一下这个游戏和玩法:有三个柱子,初始情况是在其中一个柱子上叠有 N 个盘子,盘子从下往上依次变小,在规定大盘子不能在比自己小的盘子的上方的情况下,将盘子从初始情况下的柱子上移到另外一个柱子上,且规定移动过程中一次只能移动一个盘子。起始柱:当前汉诺塔问题初始状态时所有碟子所在的原创 2021-03-09 01:00:38 · 465 阅读 · 3 评论 -
通过链表深入理解Java的引用和对象
在正式介绍重点内容以前,先给像我这样的初学者强调一下 " = " 在引用和对象应用中的作用:大致是 " = " 左边是引用," = " 右边是对象 (万变不离其宗,始终抓住这一点就好)。含义是让 " = " 左边的引用指向" = " 右边的对象 。链表作为一种线性表的数据结构,目的是将一组数据通过逻辑上相邻(线性),实际存储空间不相邻的方式组织起来,相比于顺序表,链表最大的好处是链表可以不必用一段完整的空间存储数据,这-相比于顺序表这大大提高了空间的利用率。C语言实现链表是通过指针(非静态链表)将一原创 2021-03-06 21:06:10 · 622 阅读 · 4 评论 -
重载(Overload)和重写(Overide)
重载(Overload)重载是在同一个类中对已有方法的再次编程,它的目的是在使用时能适应更多情况。这里拿构造函数举例理解:public class IdCard { public String name; public int age; public String sex; public String address; //一个形参 public IdCard(String name){ this.name = name;原创 2021-03-04 16:06:51 · 1299 阅读 · 5 评论 -
更高效地刷OJ——String常用方法(三)
续 更高效地刷OJ——String常用方法(二)contains() :这个方法用于查询传入的子串是否存在于字符串中,这个方法返回值是Boolean类型。通过代码理解:public static void main(String[] args) { String str = "Hello World"; //查询"o w"这个子串是否存在于字符串内 System.out.println(str.contains("o W")); /原创 2021-02-22 14:42:40 · 930 阅读 · 10 评论 -
更高效地刷OJ——String常用方法(二)
续 更高效地刷OJ——String常用方法(一).5.subString() :从字符串中切除一个子串,该方法有两个重载第一个是传入一个起始位置,返回从起始位置一直到结尾的子串第二个是传入一个起始位置,一个结束位置,返回从起始位置到结束位置长度的子串(左闭右开)通过代码理解: public static void main(String[] args) { String str = "我是中国人,我爱我的,我爱我的家乡,我爱我的学校,我爱我的家"; //这是一个空原创 2021-02-20 23:54:51 · 1421 阅读 · 8 评论 -
更高效地刷OJ——String常用方法(一)
因为常用方法较多,所以分为3篇1.length() : 返回字符串长度,此处的length有别于数组中的length数组中的length为属性,此处的length为方法。2.charAt() :将String类型变量视作一个字符数组,传入合法下标([ 0 , str.length() ) ),返回该下标位置字符。3.toCharArray() :将String类型变量拆解为一个字符类型数组。下面通过代码理解以上三种方法:import java.util.Arrays;public class M原创 2021-02-20 00:00:09 · 1337 阅读 · 13 评论 -
String常用构造方法
最常用的就是直接创建,相信大家都知道,并且很熟练了:public class Main { public static void main(String[] args) { String s; s = "hello"; s = s + " " + "world"; //相当于 s = "hello world" }}或者可以new一个新String对象public class Main { public sta原创 2021-02-19 15:12:52 · 821 阅读 · 3 评论 -
Java中static的作用
static作为一个关键字,它有它的使用范围:类的内部,方法的外部(static不能出现在方法的内部),这样看下来他能修饰的东西主要有以下几种 属性 | 方法 | 代码块 。属性,方法,代码块 一旦被static修饰之后就表示 自身与所在类实例化出的对象无直接关联,说到这里就得说一下类的作用了,类主要有两种作用:1.类可以作为实例化该类对象的蓝图 2.类可以容纳一类与实例化对象这个操作无关的东西,而这类东西就是被static修饰后的 属性 | 方法 | 代码块 ,也称为 静态属性 | 静态方法 | 静态原创 2021-02-17 11:44:36 · 1942 阅读 · 5 评论 -
关于Java静态属性初始化
Java中静态属性初始化的方式有两种:1.定义时初始化2.静态代码块中初始化当两种方式出现在同一个代码中,执行顺序就是代码中出现的先后顺序:public class Main { static { int a = 2; System.out.println("静态代码块"); } public static int b = shunXun(); public static int shunXun(){ Sy原创 2021-02-15 22:14:34 · 1999 阅读 · 1 评论 -
Java计算两日期相差天数源码
public class MyDate { public int year; public int month; public int day; //1.必须得校验传入参数的合法性 // year : 1 <= year // month : 1 <= month <= 12 // day : 1 <= day <= 每个月的天数 //2. 如果不符合,应该怎么办 // 抛异常 public My原创 2021-02-15 20:35:04 · 522 阅读 · 2 评论 -
Java对象初始化执行顺序
Java是面向对象的语言,需要把一个大的项目细化成相应的类,在通过一个个类实例化对象,实例化一般都要初始化属性,常见初始化属性的方式有以下几种定义时初始化class Person{ String name = "张三"; int age = 21;}2.代码块中初始化class Person{ String name ; int age ; { name = "张三"; age = 21; }}3.构造方法原创 2021-02-10 19:26:10 · 608 阅读 · 1 评论 -
Java默认值规则——各种数据类型的初试值是什么?
默认值规则指的就是不给变量赋值时,它自己初始化为默认值,不同数据类型默认值不同具体如下表所示:数据类型默认值booleanfalsechar" "(空格)byte0short0int0long0Lfloat0.0fdouble0.0d引用类型null在Java中基本数据类型作为局部变量时不享受默认值规则,说白了就是基本数据类型作为局部变量时不赋值不能使用(引用类型可以),如下所示:其他情况(数组,属性)都享受默原创 2021-02-07 01:13:05 · 719 阅读 · 2 评论 -
Java形参的改变不会影响实参
这篇文章就是想说一个结论,结论就是标题 —— Java形参的改变不会影响实参下面通过代码来理解这个结论。public class Main { public static void main(String[] args) { int a = 10; int b = 20; System.out.println("交换前a = " + a); System.out.println("交换前b = " + b);原创 2021-02-06 19:13:20 · 1379 阅读 · 9 评论 -
IDEA常用快捷键
一、Ctrl 快捷键快捷键作用是否常用Ctrl + F在当前文件进行文本查找√Ctrl + R在当前文件进行文本替换√Ctrl + Z撤销√Ctrl + Y删除光标所在行 或 删除选中的行√Ctrl + X剪切光标所在行 或 剪切选择内容√Ctrl + C复制光标所在行 或 复制选择内容√Ctrl + D复制光标所在行 或 复制选择内容,并把复制内容插入光标位置下面√Ctrl + W递进式选择代码块。可选中光标所原创 2021-02-06 13:09:49 · 651 阅读 · 0 评论 -
Java通过引用操作对象的“共享”特性
先来理解一下引用和对象的关系:对于任何引用类型直接创建的变量都是一个引用,这个引用指向这个类型的对象,数据是存在对象中的,对数据的操作实质是通过引用找到对应的对象,在对对象中的数据进行操作。通过代码理解通过引用操作对象的“共享”特性:public class Main { public static void main(String[] args) { int[] a = { 1, 2, 3, 4, 5 }; int[] b = a; b[0] =原创 2021-02-06 12:28:39 · 490 阅读 · 0 评论 -
Java关键字——final的用法
final这个单词的意思是“最终的; 不可改变的”总的来说,在java中被final修饰的都是不想在后续程序中改变的。在Java中final主要有以下几个用处:1、修饰变量的定义(此处的变量主要指:静态变量、属性、局部变量、形参变量):对于静态变量,属性来说,用final修饰后,他们只允许被赋值一次,且这一次必须是在声明时就进行,就是说不能先在一个语句中声明一个变量,然后在后续语句中赋值,只能在声明变量的同时对变量赋值(在同一个语句中)对于局部变量来说,在声明时用了final修饰,那么只允许被赋值原创 2021-01-30 17:31:26 · 621 阅读 · 6 评论 -
Java访问修饰符——用于控制可见性
在Java中有下面几个地方需要用到访问修饰符的:一、访问修饰符 class 类名 {…}这个地方可以用public修饰,也可以不用任何修饰符。二、在类的内部 :1. 修饰方法2. 修饰属性(成员变量)3. 修饰构造方法这些地方可以用public/protected/private修饰,也可以不用任何修饰符不同修饰符修饰,能被访问的范围就不同:(范围从小到大)1、仅对本类可见 ——— private 。2、对本包可见 ——— 不用任何修饰符即可 。3、对本包和所有子类可见 ——— p原创 2021-01-30 01:22:40 · 725 阅读 · 1 评论 -
Java命名规范(建议收藏)
一、 所有命名规范都必须遵循以下规则: 1、名称只能由字母、数字、下划线、$符号组成 2、不能以数字开头 3、名称不能使用JAVA中的关键字 4、坚决不允许出现中文及拼音命名二、命名规范:1、项目名称全部用小写2、包名全部用小写3、 类名首字母大写,如果类名由多个单词组成,每个单词的首字母都要大写。如: public class MyBinarySearch {}4、变量名、方法名首字母小写,如果名称由多个单词组成,除首单词外其余单词的首字母都要大写(驼峰命名法)如:int l原创 2021-01-28 18:53:16 · 3364 阅读 · 9 评论 -
Java中大数值是什么?数值想存多大存多大
如果我们常用的整数和浮点数不能满足需求时,java.math包中有两个很有用的类:BigInteger 和 BigDecimal 。这两个类可以处理任意长度数字序列的数值,就是说有了这两个类,想存多大数就能存多大。但是我们不能用平常用的算数运算符(+或者*等)来处理大数值,而是需要它专用的方法,需要注意的是大数值不能直接跟普通数值计算,我们可以使用 valueOf 方法将普通数值转换为大数值,具体请看下面代码理解:这段代码用BigInteger类进行演示,BigDecimal类使用方法相同,不过就是B原创 2021-01-26 00:57:20 · 604 阅读 · 0 评论 -
Java 数组的拷贝(复制一个相同数组)
在上一篇博客中,浅谈了 关于 java 中数组的创建,遍历,打印相关问题,这一篇想谈一谈 java 中 数组的拷贝 问题,C语言中数组是直接在内存上给相应变量一定大小的空间,对数组的赋值,改变是直接在内存层面操作的,但是在java中因为数组是一种引用类型,创建一个数组本质是创建了一个 相应类型的对象,对数组的操作也只是通过引用对对象中相应数据的改变。C语言中要复制一个数组就先要创建另外一个数组,在通过对数组的遍历,依次将第一个数组每个元素赋值 到 第二个数组中,java中也可以这样操作。 public原创 2021-01-25 00:08:43 · 1046 阅读 · 0 评论 -
java 中数组的创建 数组遍历 以及数组的输出(打印)
什么是数组?如果我们需要创建一个 int 类型变量,那么我们只需要 int a;如果我们需要创建五个 int 类型变量,那么我们只需要int a1; int a2; int a3;int a4; int a5;那我们需要创建一百个int 类型变量呢? int a1; int a2; int a3; int a4;int a5;int…这种时候我们就需要创建一个数组,说白了数组是一种数据结构,是用来储存相同类型数据的有限集合。java中数组的创建很多同学都是从C语言开始接触编程的,C语言中原创 2021-01-24 21:45:29 · 5571 阅读 · 0 评论