java
文章平均质量分 72
快乐李同学(李俊德-大连理工大学)
B站/微博/微信公众号:快乐李同学。
大连理工大学软件工程2020毕业学生。
大连理工大学2018-2019学年科技创新奖学金。
2个国家级项目,2个国家级奖项,5个省级奖项,8个校级奖项(总项目经费和竞赛奖金达2万2千元)。
2018-2019年在中国核心期刊《现代计算机》发表2篇项目相关论文,分别署名第一、第二作者(知网可查)。
2018-2019年申请2份项目软件著作权,并发布软件(编程乐园、编程学院)到Google,腾讯,百度,华为,小米等应用商店。
大学英语六级568分。
展开
-
Java库常用的方法及其复杂度分析Common Java APIs and complexity analysis
Java库常用的方法及其复杂度分析Common Java APIs and complexity analysis原创 2022-10-09 23:07:32 · 702 阅读 · 0 评论 -
Java数组常用的工具方法和字段(Java Array‘s common methods and fields)
1 Mind Mapping of Java Array’s common methods and fields2 Practical Code Demopackage com.test;import java.util.Arrays;public class JavaArrayUsage { //This statement only declares a integer array variable `a`. It does not yet initialize `a` with原创 2022-01-20 23:53:15 · 652 阅读 · 0 评论 -
Java包注解和package-info.java文件的作用和用法
1 问题背景博主最近在深入学习Java注解,其中就了解到注解可用于修饰包声明,因为@Target元注解的value元素数组可以包含ElementType.PACKAGE元素,接着博主就发现@Deprecated注解就支持修饰包声明:package java.lang;import java.lang.annotation.*;import static java.lang.annotation.ElementType.*;@Documented@Retention(RetentionPolic原创 2021-09-04 23:43:56 · 5660 阅读 · 0 评论 -
3万字死磕Java泛型所有细节知识点,看这一篇就够了
1 泛型1.0 前言——为什么要死磕Java泛型不知道阅读这篇文章的你是否曾跟我一样,在没有阅读《Java核心技术》前查阅了大量的Java泛型文章,但是在实际使用泛型的过程中,总是觉得对泛型的理解不够深透。在撰写这篇文章之前,我自问了自己下述的问题,结果我自己却不能回答上来:泛型类中能用类型参数去定义static成员变量和static方法的返回值和形式参数吗?泛型方法的类型参数命名可以跟泛型类的类型参数重名吗?泛型方法可以是成员方法、static方法、final方法、private方法吗?泛型原创 2021-07-21 00:11:58 · 1800 阅读 · 0 评论 -
配置JDK的javac命令输出英文信息(IntelliJ IDEA, 提示, 英语, 编译运行, Java, Windows, Mac)
配置JDK的javac命令输出英文信息(IntelliJ IDEA, 提示, 英语, 编译运行, Java, Windows, Mac)1 问题背景不知道大家跟博主有没有一样的想法:在配置IntelliJ IDEA等IDE后,虽然IDE操作界面的语言是英文的,但是由于电脑的环境语言是中文的,所以在IDE操作JDK的java或javac命令,JDK还是按照电脑的环境语言配置而输出中文的提示信息、报错信息等。由于我们更希望JDK的输出信息是英文版的,因为这样避免了英译中潜在的歧义,同时我们也可以通过英文的原创 2021-05-24 16:06:47 · 1493 阅读 · 6 评论 -
Handler内存泄漏问题解决方案(Android,第一行代码,This Handler class should be static or leaks might occur)
1 问题背景博主最近在复习《第一行代码》的第10.2.2章节——在子线程中更新UI,书中给出的在UI主线程中用匿名内部类实现Handler的写法如下:private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { switch (msg.what) { case UPDATE_TEXT: //在这里原创 2020-12-04 14:31:33 · 1588 阅读 · 0 评论 -
Java详解剑指offer面试题10--斐波那契数列
Java详解剑指offer面试题10–斐波那契数列现在要求输入一个整数n,请你输出斐波那契数列的第n项。我想到的是迭代法,从底向上的方法:先得到f(0)、f(1)的值,然后根据这两个值计算序列后面的值。package Chap2;public class Fibonacci { /** * 推荐迭代法 */ public int fib(int n) { if (n <= 0) { return 0;原创 2020-09-06 12:15:13 · 215 阅读 · 0 评论 -
Java详解剑指offer面试题09--两个栈实现队列
Java详解剑指offer面试题9–两个栈实现队列用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。刚开始两个栈都是空的,要进队列,可以将元素压入任何一个栈,不妨就压入stack1中,我们知道元素在栈中是后进先出的,因此要出列需要删除stack1最底部的元素,此时stack2派上用场了,将stack1的元素再压入stack2中,现在元素的排列变成了原来插入的顺序,要出列的元素到了栈顶,要完成出列操作就很方便了。若要继续出列,只要stack2不为空,只需继续从sta原创 2020-09-06 09:28:41 · 199 阅读 · 0 评论 -
Java详解剑指offer面试题08--二叉树中序遍历的下一个结点
Java详解剑指offer面试题8–二叉树中序遍历的下一个结点给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。要找出中序遍历的下一个结点,要分几种情况探讨。如果当前结点的右子结点不为空,那么下一个结点就是以该右子结点为根的子树的最左子结点;如果当前结点的右子结点为空,看它的父结点。此时分两种情况,如果父结点的右子结点就是当前结点,说明这个结点在中序遍历中已经被访问过了,需要继续往上看其父结点…直到父结点的左原创 2020-09-05 21:17:49 · 246 阅读 · 0 评论 -
Java详解剑指offer面试题06--从尾到头打印链表
Java详解剑指offer面试题6–从尾到头打印链表输入一个链表的头节点,从尾到头打印链表每个节点的值。使用栈我的做法:典型的后进先出,使用栈,顺序遍历一遍链表,依次将每个值入栈。得到的就是尾节点在前,头节点在后的列表。package Chap2;import java.util.LinkedList;import java.util.ArrayList;public class FromTail2Head { // 节点类的定义 private class List原创 2020-09-05 09:54:53 · 266 阅读 · 0 评论 -
Java详解剑指offer面试题04--二维数组中的查找
Java详解剑指offer面试题4–二维数组中的查找在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。根据题目,一个满足要求的二维数组长下面这样。1 2 8 92 4 9 124 7 10 136 8 11 15对每一行进行二分查找我的做法:每一行的一维数组已经有序,所以使用二分查找在每一行中查找,一旦找到立即返回。对于一个M*N的二维数组,一次二分查找的时间复杂度为O(原创 2020-09-04 09:48:15 · 297 阅读 · 0 评论 -
Java详解剑指offer面试题3--数组中的重复数字
剑指offer面试题3–数组中的重复数字在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2或者3。排序后相邻元素两两比较我想到的方法是:先对数组排序,如果有重复元素排序后将会相邻。然后相邻元素两两比较,有相等的情况就找到了重复数字。排序一个长度为n的数组时间复杂度为O(nlg n)。代原创 2020-09-04 00:37:55 · 321 阅读 · 0 评论 -
Java详解剑指offer面试题2-单例模式(史上最全的Java单例模式和原理解析)
Java详解剑指offer面试题2-单例模式1题目描述单例模式需要满足如下规则:构造函数私有化(private),使得不能直接通过new的方式创建实例对象;通过new在代码内部创建一个(唯一)的实例对象;定义一个public static的公有静态方法,返回上一步中创建的实例对象;由于在静态方法中,所以上一步的对象也应该是static的。2代码实现2.1饿汉模式根据这个规则,我们可以写出如下模式,这种模式又被称为饿汉模式。不管用不用得到,先new出来再说。package Chap2;原创 2020-09-04 00:27:23 · 346 阅读 · 0 评论 -
Java中各种进制的表示方法和转义字符的2种表示方法
一、问题背景博主最近在研究Java的正则表达式,但Java的正则表达式涉及到很多\1或\0或\\1的写法,这些写法的含义既有正则表达式的含义,也有八进制转义序列表示字符的含义。因此博主李同学写了这篇文章用来详细区分这些字符间的区别和联系。二、Java中各种进制数和转义字符的表示方法1. 二进制数表示法二进制的整数以 0b 或 0B 开头是因为字母B全称为Binary /ˈbaɪnəri/ ...原创 2020-03-25 13:19:10 · 3959 阅读 · 0 评论 -
[2022春招必备]LeetCode和牛客网的编程题中常用的Java方法和API(校招,代码,详细解释,软件工程,计算机)
import java.util.Arrays;import java.util.Map;import java.util.Scanner;public class LeetCodeAPI { public static void main(String[] args) { //整形最好用long,浮点型最好用double,比如360的2019校招真题第1题必须是l...原创 2020-03-24 18:04:19 · 1304 阅读 · 1 评论 -
Hash算法、Hash函数、Hash表、HashMap的区别联系和详细解释(数据结构考研,哈希算法,哈希函数,哈希表,哈希Map)
一、问题背景博主最近在了解并使用Java中的HashMap,但是博主发现若博主不彻底弄懂Hash算法、Hash函数、Hash表、HashMap之间的区别与联系,博主将无法准确地理解Java的HashMap,因此博主浏览了相关文章,做出了以下总结。本文参考文献:[1]哈希表、Java中HashMap[2]哈希表(散列表)原理详解[3]Java HashMap原理详解[4]Java基础之H...原创 2020-03-21 12:51:19 · 602 阅读 · 0 评论 -
原码、反码和补码之间符号位改变的特殊情况分析(正零+0,负零-0,)
一、问题背景博主在准备应聘的笔试、面试时,再次采用了多年以来的Java工具书《Java疯狂讲义》,当博主看到该书的《Java疯狂讲义》第3章(数据类型和运算符)时,里面涉及了原码、反码和补码之间符号位改变的特殊情况,因此博主想完全地探讨其全部的特殊情况。二、原码、反码和补码当用二进制来表示一个数时,最高位是符号位,符号位是0表明它是一个正数,符号位是1表明它是一个负数。计算机都是通过正数、...原创 2020-03-15 11:16:42 · 12480 阅读 · 3 评论 -
转义字符是什么?为什么要使用转义字符?[转义字符定义和意义的详细解释](关键词:Java,C,C++,C#,HTML,PHP,Python)
对于 ASCII 编码,0~31(十进制)范围内的字符为控制字符,它们都是看不见的,不能在显示器上显示,甚至无法从键盘输入,只能用转义字符的形式来表示。不过,直接使用 ASCII 码记忆不方便,也不容易理解,所以,针对常用的控制字符,C语言又定义了简写方式。\n和\t是最常用的两个转义字符:\n用来换行,让文本从下一行的开头输出,前面的章节中已经多次使用;\t用来占位,一般相当于四个空格,或...原创 2020-03-05 01:45:05 · 47341 阅读 · 6 评论 -
Java输入Scanner类的构造方法,hasNext(),next(),useDelimiter()方法的详细讲解
一、问题背景博主最近在LeetCode和牛客网做编程题目。在leetcode平台,做编程题目的时候只需要完成所给的类的方法,使用时,输入为方法输入的形式参数,输出为程序的返回值。而在牛客网上的题目,包括一些竞赛时的题目,形式为输入的是从控制台键入的几行数据,而输出是直接将结果打印到控制台。因此博主决定好好研究一下Java数据的输入方法,其中最原始的Java数据输入方法便是Scanner类及其方法...原创 2020-03-02 14:39:54 · 2310 阅读 · 2 评论 -
编程语言中字面常量(literal)的详细介绍(关键词:Java,文字量,直接量,常量,常值,字面量,字面值,实字)
一、问题背景博主在复习《Java疯狂讲义》第3章(数据类型和运算符)时,其中在3.2.3 Java关键字中提到了直接量的概念:如上图所述,原文提到:TRUE、 FALSE 和 NULL 都不是 Java 关键字。Java还提供了三个特殊的直接量(literal):true、 false 和 null; Java 语言的标识符也不能使用这三个特殊的直接量。博主对此概念很疑惑,于是便上...原创 2020-03-02 01:31:58 · 10479 阅读 · 5 评论 -
《Java疯狂讲义》第3章(数据类型和运算符):博主李俊德的阅读笔记与知识拓展
一、问题背景博主在准备应聘的笔试、面试时,再次采用了多年以来的Java工具书《Java疯狂讲义》,并决定在每章详细复习后都要在博客中写下详细的阅读笔记。二、阅读笔记与知识拓展——《Java疯狂讲义》第3章(数据类型和运算符)Java是强类型语言。强类型语言定义:所有的变量必须先声明后使用。指定类型的变量只能接受类型与之匹配的值。强类型语言可在编译中发现源代码的错误,从而保证程序的健...原创 2020-02-29 00:07:01 · 732 阅读 · 0 评论 -
《Java疯狂讲义》第2章(理解面向对象):博主李俊德的阅读笔记与知识拓展
一、问题背景博主在准备应聘的笔试、面试时,再次采用了多年以来的Java工具书《Java疯狂讲义》,并决定在每章详细复习后都要在博客中写下详细的阅读笔记。二、阅读笔记与知识拓展Java是面向对象的程序设计语言,因Java支持面向对象的三种特征:封装、继承、多态。Java以对象为中心,Java的最小程序单位是类,整个Java程序由一个个的类组成。2.1面向对象目前编程领域的编程思想主要分为:...原创 2020-02-25 12:53:21 · 483 阅读 · 0 评论 -
[全网最全]UML类图专业术语,类与类之间的关系,类图实例的详细讲解
一、统一建模语言UML(Unified Modeling Language)OO面向对象(Object Oriented)包括OOA面向对象分析(Object Oriented Analysis)、OOD面向对象设计(Object Oriented Design)和OOP面向对象编程(Object Oriented Programming)。而OOA和OOD的分析、设计结果需要统一的符号来描述...原创 2020-02-22 23:10:17 · 2307 阅读 · 0 评论 -
《Java疯狂讲义》第1章(Java语言概述与开发环境):博主李俊德的阅读笔记与知识拓展
一、问题背景博主在准备应聘的笔试、面试时,再次采用了多年以来的Java工具书《Java疯狂讲义》,并决定在每章详细复习后都要在博客中写下详细的阅读笔记。二、阅读笔记与知识拓展1.1Java语言的发展简史Sun公司开发了Java语言,Oracle公司收购了Sun公司。1.2.1高级语言的运行机制计算机高级语言(C、C++、C#、Java、Python)按程序的执行方式分为编译型和解释型。...原创 2020-02-14 22:52:32 · 300 阅读 · 0 评论 -
Intellij IDEA错误“CreateProcess error=2, 系统找不到指定的文件“的完美解决方案
一、问题背景博主正常使用着Intellij IDEA,不知道为什么突然Intellij IDEA报错,错误提示如下:Error:Cannot run program "F:\WINDOWS应用安装\IntelliJ IDEA 2018.1\jre\bin\java" (in directory "C:\Users\李俊德\.IntelliJIdea2018.1\system\compil...原创 2018-05-31 13:54:33 · 123518 阅读 · 43 评论 -
JAVA类与类之间的全部关系简述+代码详解
类和类之间关系包括了 is a,has a, use a三种关系(1)is a包括了 继承,实现关系(2)has a包括了 组合,聚合,关联关系(3)use a包括了 依赖关系一、继承关系 继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。在Java中继承关系通过关键字extends明确标识,在设计时一般没有争...原创 2018-07-18 09:23:03 · 12091 阅读 · 7 评论 -
2018年最新Java环境变量配置:完美解决java,javac不是内部或外部命令,cmd只识别java不识别javac,jdk,jre,tomcat,JAVA_HOME,JRE_HOME配置
用cmd运行java可以,却不能运行javac原因:JDK9(或者是JDK1.9)版本之后,JDK和JRE的安装路径不再是包含关系了,而网上的环境变量的路径还是JDK老版本(JDK8及以下版本)的配置方法,所以你按照JDK老版本路径配置肯定不能在命令行下java 和 javac命令验证解决方案:按照以下JDK9及以上新版本的安装方法进行1. 安装首先前往官方网站下载最新版的JDK-...原创 2018-09-26 12:28:09 · 1610 阅读 · 0 评论 -
Java8与JDK1.8与JDK8与J2SE8与J2SE1.8的区别是什么?——Java的各个版本和各个版本的历史版本号的关系与解读
Java8与JDK1.8与JDK8的区别是什么?Java是面向对象的编程语言,在我们开发Java应用的程序员的专业术语里,Java这个单词其实指的是Java开发工具,也就是Java Development Kit。所以我们常常在CSDN等各大程序员论坛讨论到安装Java8或者JDK8或者JDK1.8,其实这3个专业词汇的概念是一样的。因为在用户眼中,Java是Java应用;而在程序员眼中,Jav...原创 2019-06-09 11:12:13 · 49561 阅读 · 3 评论 -
Java与JDK与JRE与JVM之前的关系解读
1.定义Java:面向对象编程语言(程序员口头简称Java就是JDK)JDK:Java Develpment Kit java 开发工具JRE:Java Runtime Environment java运行时环境JVM:java Virtual Machine java 虚拟机2.使用人群JDK(程序员口头简称Java) 是给开发人员使用的; JRE和JVM是给普通用户使用。3.详...转载 2019-06-09 11:27:22 · 320 阅读 · 0 评论 -
Java的各个版本和各个版本的历史版本号的关系与解读
1996年1月,Sun公司发布了Java的第一个开发工具包(JDK 1.0),这是Java发展历程中的重要里程碑,标志着Java成为一种独立的开发工具。1997年2月,JDK 1.1面世。1998年12月8日,Sun公司发布了第二代Java平台(简称为Java2)的3个版本:J2ME(Java2 Micro Edition,Java2平台的微型版),应用于移动、无线及有限资源的环境;J2SE(...原创 2019-06-09 11:37:03 · 42208 阅读 · 6 评论 -
查询当前电脑安装的Java/JDK版本的方法(查看Java/JRE版本号)
1.同时按住Windows+R按键,弹出运行程序,输入cmd并确定2.在黑框控制台中输入java --version,即可查看Java版本号原创 2019-06-09 12:02:43 · 159796 阅读 · 4 评论 -
已安装Java较新版本后,如何回退版本到Java老版本如Java8
1.问题背景最新要使用 Android Studio中的UI Automator Viewer来写移动应用测试开发的测试用例,但是博主电脑安装的是Java10,导致UI Automator Viewer无法正常打开。所以博主我需要重新覆盖安装到Java8。2.方法步骤(1)在Oracle官网下载最新版本的Java8(可能需要科学上网)Oracle官网下载最新版本Java8的网站:https...原创 2019-06-09 13:04:36 · 27849 阅读 · 0 评论 -
JAVA的JDK安装错误完美解决:正在进行另一Java安装,您必须先完成该安装
有时候,我们安装过一次JAVA的JDK,想再次安装或卸载重装时,便出现“正在进行另一Java安装”的BUG导致我们不能安装解决办法:如果系统装在C盘,那么环境变量 (1)%ProgramData%=C:\ProgramData(2)%HOMEPATH%=C:\Users\{USER}删除以下两个文件,一定要两个都给删掉%ProgramData%\Oracle\Java\JAVA_INSTALL_F...原创 2018-05-31 13:38:17 · 47291 阅读 · 15 评论