![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA
存放JAVA的学习记录
qq_52983535
这个作者很懒,什么都没留下…
展开
-
JAVA中的ArrayDeque和LinkedList实现Deque,前者不能存NULL结点,后者可以存放NULL。
在刷力扣的时候,在进行二叉树的题目训练时,需要用队列来存储二叉树的结点。因为使用ArrayDeque实现Deque习惯了,所以默认使用ArrayDeque来实现Deque。但是在运行的时候,发现这个dq中无法存入null空结点,会报空指针异常。于是尝试了使用LinkedList来实现Deque。可以看到在ArrayDeque会对加入的值进行判断,如果为空就会报出异常,而LinkedList不会。具体原因我也不清楚。这样再将null空结点存入这个队列就不会报错了,我分别查看了一下两者的源码。原创 2024-08-13 10:41:15 · 207 阅读 · 0 评论 -
JAVA中的PriorityQueue优先队列的使用和比较器。
下面这段代码摘自廖雪峰老师的java教程中。// 添加3个元素到队列:// Boss/V1// Bob/A1// null,因为队列为空// 如果两人的号都是A开头或者都是V开头,比较号的大小:// u1的号码是V开头,优先级高:return -1;看到User类,这是我们存入这个优先队列中的元素。原创 2024-08-05 10:41:36 · 241 阅读 · 0 评论 -
Java中字符串的==和equals方法。力扣150题。逆波兰表达式求值。
至于为什么使用“==”在idea中也能实现比较字符串内容的原因,大概是因为idea内置了优化把,自动将它识别成了equals?可以看到错误是,最后将尝试将“*”转换成int类型而报错,这就证明栈顶的元素是“*”,整个栈只进行了入栈操作,而并没有出栈。字符串比较的时候使用的是“==”运算符,结果运行通过,测验也能得到正确的结果。通过了解,我得知,在Java中,String的“==”运算符是用来。使用到了字符串内容的比较。但是我将它复制到力扣中去,编译就不通过了。在IDEA中我编写的代码是这样的。原创 2024-08-02 15:38:40 · 247 阅读 · 0 评论 -
JAVA中实现队列和栈(Deque接口和ArrayDeque类)
首先JAVA中有一个Queue接口,用来实现队列。Deque其实就是双端队列,代表两端都可进可出的队列。ArrayDeque就是用数组来实现这个双端队列。(Deque由于是接口,只可以用于声明对象,但是没办法实例化,实例化还是要使用ArrayDeque类)这时可能就会产生疑惑,队列有了,那么栈用什么来实现呢,其实在Java中栈也是用这个Deque来实现,具体实现下面会写,现在先放在一边,思考那么Java中的Stack类不就是栈吗,为什么不使用Stack来作为栈呢?原创 2024-08-02 14:07:11 · 760 阅读 · 0 评论 -
JAVA中List不能创建实例。结合ArrayList的理解。
后来我查看了List源码,和ArrayList源码,我发现。List是一个接口,而ArrayList是一个类继承自AbstrctList,而AbstractList实现了List接口。所以List是没法创建实例的。今天在使用List的时候,我以为List是一个父类,ArrayList继承自List,所以我想着干脆直接就创建一个List实例。结果发现程序报错了。原创 2024-08-02 09:35:11 · 207 阅读 · 0 评论 -
JAVA的String类的contains方法,Indexof方法不使用KMP算法
然后我又去看了Indexof的源码,发现他就是简单的暴力匹配,没有使用KMP算法,我们直到暴力匹配的算法的时间复杂度是O(m*n),而KMP算法的时间复杂度可以达到O(m+n)。为什么JDK官方没有使用更加优秀的KMP算法呢?今天做力扣的一道题目,在一个字符串中找出字符串的时候,想到了JAVA有一个contains方法,于是我去看了一下源码,发现他就是简单地调用了一下java的indexof方法,原创 2024-08-01 15:04:09 · 150 阅读 · 0 评论 -
对JAVA的包package的理解
一直理解不了java中的包,包括下图中的这种在几乎每个java程序的开头都有的import和package。今天在实际应用中突然理解了。原创 2024-07-31 15:19:06 · 148 阅读 · 0 评论 -
JAVA后端拉取gitee仓库代码项目并将该工程打包成jar包
公司当前有一个系统用于导出项目,而每次导出的项目并不可以直接使用,需要手动从gitee代码仓库中获取一个模板代码然后将他们整合到一起它才是一个完整的项目,所以目前我的任务就是编写一个java程序可以自动地从gitee仓库拉取下来那个模板代码到指定地路径上去。并且我还要将这个java程序打包成jar包上传到先前创建好的私有仓库中去,这样可以在pom.xml中引入即可使用。原创 2024-07-30 15:48:22 · 833 阅读 · 0 评论 -
简单理解JAVA中的堆内存、栈内存、对象内存、静态代码区。
堆内存用于存储对象和数组,生命周期长且管理复杂(需要垃圾回收或手动管理)。new可以这么说,堆内存就是用来存储对象的,对象空间中的一些成员变量就会存储在堆空间创建好的对象空间中去。原创 2024-07-22 12:32:17 · 226 阅读 · 0 评论 -
JAVA的接口和实现类
在学习JAVA的过程中,我发现了如果要创建一个列表,往往使用下面这行代码。那为什么是使用接口类型(List)指向具体的实现类ArrayList。这就要想到面向接口编程和多态性了。原创 2024-07-19 10:14:29 · 350 阅读 · 0 评论 -
JAVA的基本数据类型和引用数据类型
在上述代码中:array1=array2 将array2中存储的地址赋值给array1 , 即,此时,array1也指向数组:{11,22,33,44} 再通过,array1[0]=1888,导致,array1与array2的结果为:1888,22,33,44。array1=array2,即,让array1去引用array2引用的数组空间,此时array1与array2实际上是同一个数组!因此,此时,array1与array2 都指向{100,200,300,400,500}转载 2024-07-08 15:57:02 · 20 阅读 · 0 评论 -
JAVA的String的不可变特性
在学习JAVA的时候,看到了JAVA的String具有不可变的特性,他是说,JAVA的String在创建好后,JVM将这个String变量指向内存中的一个地址,当下次改变这个String变量的时候,改变的不是这个变量的值,而是将这个变量指向内存中的另一块地址,元来的值还存储在原来的内存中,只是改变了变量的指向。python的不可变数据类型:当该数据类型对应的变量的值发生了变化时,如果它对应的内存地址发生了改变,那么这个数据类型就是 不可变数据类型。因此,字符串的不可变是指字符串内容不可变。原创 2024-07-08 14:32:32 · 161 阅读 · 0 评论 -
JAVA中常见的转义字符
常见的转义字符包括:\""\''\\\原创 2024-07-08 14:17:25 · 224 阅读 · 0 评论 -
JAVA中的移位运算和位运算
对两个整数进行位运算,实际上就是按位对齐,然后依次对每一位进行运算。对两个整数进行位运算,实际上就是按位对齐,然后依次对每一位进行运算。仔细观察可发现,左移实际上就是不断地×2,右移实际上就是不断地÷2。,通过与运算,可以快速判断一个IP是否在给定的网段内。在计算机中,整数总是以二进制的形式表示。,它的特点是不管符号位,右移后高位总是补。异或运算的规则是,如果两个数不同,结果为。右移,它会变成正数,原因是最高位的。如果对一个负数进行右移,最高位的。可以对整数进行移位运算。或运算的规则是,只要任意一个为。转载 2024-07-08 14:14:45 · 13 阅读 · 0 评论 -
JRE、JVM、JDK分别是什么。
JDK 是 Java 开发工具包,它是 Java 开发者用来编写、编译、调试和运行 Java 程序的集合。JDK 包括了 Java 编译器(javac)、Java 运行时环境(JRE)、Java 文档生成工具(Javadoc)等开发工具和库。JVM 负责将 Java 字节码(由 Java 编译器生成的中间代码)解释执行或者编译执行为机器码,以便在各种操作系统上运行 Java 程序。它包含了运行 Java 应用程序所需的所有内容,包括 Java 虚拟机(JVM)和 Java 核心类库等。原创 2024-07-08 14:05:24 · 421 阅读 · 0 评论 -
JAVA切换版本,并且解决配置了环境变量版本不切换的问题。
JAVA切换版本,并且解决配置了环境变量版本不切换的问题。原创 2024-06-26 09:49:05 · 237 阅读 · 1 评论 -
JAVA叫法和JDK叫法。JAVA8 JDK1.8
JAVA叫法和JDK叫法不同。原创 2024-06-26 09:19:21 · 390 阅读 · 0 评论