JavaSE
文章平均质量分 88
Java基础相关
XH雪浪风尘
Java咸鱼
展开
-
Java8新特性之Optional了解与使用
文章目录前言使用of与ofNullablegetorElseorElseGet、orElseThrowmapflatMapfilter(过滤)isPresentifPresent前言Java8引入了一些新的特性,比如lambda表达式、Stream流,当然了,还有这篇要说的Optional,它主要就是解决NullPointerException,用法其实也没多少,他的接口也就十来个,来个图一下展示出来:接下来,我们就围绕这些API来了解Optional。使用of与ofNullable这俩是.原创 2021-07-30 08:47:09 · 1324 阅读 · 0 评论 -
Java是值传递还是引用传递(值传递)
前言最近在看Java核心卷一,也就是这本书:在这本书里面也看到了这个问题,Java是值传递还是引用传递,这个问题其实也是很有意思的,之前也看到过这个问题,但是只是依稀记得是值传递,但是而且网上也有在讨论这个问题的。所以就先说结论吧:是值传递。文章目录前言值传递与引用传递二、使用步骤1.引入库2.读入数据总结值传递与引用传递既然讨论是值传递还是引用传递,那肯定是要知道啥是值传递、引用传递的。示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤原创 2021-06-06 18:01:33 · 291 阅读 · 3 评论 -
一文掌握Java8Stream流的常见用法
前言Lambda 表达式是 jdk8引入的一个新特性,可以取代大部分的匿名内部类,在集合的遍历和对集合的操作中,可以极大地优化代码结构。而jdk8又是现在的主流版本,关于lambda表达式,其实也得多多少少了解一点,尤其是在某些情况下,使用lambda表达式确实能够方便很多。在接下来的内容中,通过从简单到复杂,一步一步去了解lambda与Stream流。Lambda表达式遍历比如下面这个数组::String[] name = {"Tom", "Abel","Jack","Cary","Georg原创 2021-01-14 21:43:11 · 783 阅读 · 2 评论 -
IDEA修改内存大小并显示内存使用
最近在使用IDEA的时候,感觉就是比较卡,点个class文件就会卡顿,为了提高流畅度,我决定修改下内存大小。最方便的方法就是在IDEA上方点击Help->Edit Custom VM Options:点击之后就会到配置文件,主要看两项:这两项根据自己的需要,自行配置。最好是配个整数:比如1024啦,2048啦。配置完重启IDEA就OK了。看右下角就知道内存的使用情况了。如果你也想显示这个内存使用情况的话,点击Setting:在图中对应的位置打上勾即可,此时IDEA主页面右下方就原创 2020-12-27 17:21:50 · 1317 阅读 · 0 评论 -
Volatile关键字的解析
先来看两段代码:class volatileTest extends Thread{ private boolean k=false; @Override public void run() { if (k){ System.out.println("进入"); } }}public class volatileee { public static void main(String[] args) {原创 2020-12-17 21:30:46 · 334 阅读 · 0 评论 -
Java集合之Set篇(知识点)
上一篇主要介绍了List中的ArrayList、LinkedList、Vector:Java集合之List篇(知识点与面试题)这一篇则来介绍Set集合。个人感觉Set集合的优先级不如Map与List,但是也是重要的一点。Set作为同样实现了Collection接口中的一员,自然免不了与List一通比较。他与List相比,最主要的方面就是Set不允许出现重复元素,Set中有的子类是无序的,有的子类是有序的。先看下IDEA中Set的结构图:我们也就主要看HashSet、TreeSet、LinkedHa原创 2020-12-05 21:44:59 · 417 阅读 · 1 评论 -
Java集合之List篇(知识点与面试题)
在面试中,集合应当是Java基础中必问的一块了,无论是Map,还是List、Set,总有一款会问到。这一篇就来聊聊这个List的一些常见问题。我还记得校招有一次面试的时候,面试官就问我LinkedList底层是什么?我就说LInkedList的底层是双向链表。面试官:你确定么?“对啊,LinkedList底层就是双向链表啊。”“ 你再好好想想。”我:????是我记错了么?这特喵就是双向链表啊。没毛病啊,就是双向链表。后来我查了下,确实是双向链表。可能是这个面试官故意搞事情。好了,废原创 2020-12-05 19:05:36 · 472 阅读 · 0 评论 -
Java并发编程之线程池的了解与使用
前言在Java语言中,一切都可以看作是对象,如果要使用对象,那么就new一个出来,线程也是如此。我们知道,要使用线程,那么肯定是先去创建一个线程,使用完毕后就将线程销毁,这个操作在我们现在的硬件条件下,执行速度是相当快的。但是如果并发线程数量很多的时候,那情况就不一样了,积少成多,会严重地减少相应的速度。那么能不能将使用过的线程先保存下来,在需要线程的时候直接去调用?针对这样的情况,Java中正好有线程池,通过线程池能够在一定程度上减少多个线程运行的时间。文章目录前言一、ThreadPoolExecut原创 2020-11-14 15:11:03 · 415 阅读 · 0 评论 -
Java使用aspose将word文档转换为pdf
这一周有个需求正好用到了将word转换为pdf,网上资料很多,但是实现功能还是费了点事,这里把具体的实现贴了出来,有需要的直接使用即可,功能是都可以跑的通实现的。原创 2020-10-17 21:21:38 · 1630 阅读 · 3 评论 -
Java使用poi根据word模板进行导出(有效可行)
最近一直在做与导出这部分相关的事情,有一个就是需要将数据库中查询到的信息写入到word模板中再进行导出。下面的代码直接复制使用即可,没啥毛病,无论是段落中的,还是表格中的,都是有效的。使用过程中遇到的一些问题我也写在注释中了,如果你也遇到类似的问题,或许可以参考一下。package com.dong.poi.wordReplace;import org.apache.poi.POIXMLDocument;import原创 2020-10-17 20:15:31 · 3045 阅读 · 4 评论 -
Java使用poi导出word(亲测有效)
废话也就不那个多说,下面的代码是我最近使用过的,直接使用即可,本地跑通之后可以做下适当的修改就可以放到项目中。工具类:package com.dong.outWord;import org.apache.poi.xwpf.usermodel.ParagraphAlignment;import org.apache.poi.xwpf.usermodel.XWPFDocument;import org.apache.poi.xwpf.usermodel.XWPFParagraph;import o原创 2020-10-17 16:05:49 · 5589 阅读 · 4 评论 -
那些年一起看过的HashMap面试题
前言我们在日常的工作学习中,都会常常用到HashMap,记得在校招面试中,也是基本上多多少少会问到一些关于HashMap的知识点,因此我们对于HashMap也不能仅仅停留在使用get、put操作存取数据,接下来就看看HashMap有哪些常见的问题。了解数据结构中的HashMap么?讲讲你对HashMap的认识这种应该就属于比较基本的问题,根据这个问题来引出之后的问题。HashMap由数组+链表的形式组成,是一个用于存储key-value键值对的集合,在Java7中叫做Entry,在Java8中叫原创 2020-09-20 20:56:48 · 488 阅读 · 0 评论 -
Runnable与Callable的区别
相同点都是接口;都可以编写多线程程序;都采用Thread.start()启动线程。不同点Runnable没有返回值;Callable可以返回结果,但是是个泛型。Callable接口的call方法允许抛出异常;Runnable的run()方法异常只能在内部消化,不能往上继续抛。示例callable:package com.test;import java.util.Rando...原创 2020-01-08 20:46:12 · 396 阅读 · 0 评论 -
Java中的重写与重载(附代码)
Java中的重写(override)与重载(overload)刚接触的时候也是被搞得迷迷糊糊的,学习的时候也总是搞错。今天就来总结一下Java中的重写与重载的区分与使用。首先是重写(override):重写呢,是子类对父类允许访问方法的实现过程的重新编写。在这个过程中,方法名、参数列表、返回类型都是不能改变的。而子类的访问修饰符是要大于等于父类的访问修饰符的。子类抛出的异常的范围是要小于等于父类...原创 2019-11-11 20:42:16 · 1108 阅读 · 0 评论 -
Java中的四种访问修饰符(附代码测试)
在写Java代码的时候,总会使用到访问修饰符,那么,四种访问修饰符之间有什么区别?又是什么时候去使用相对应的修饰符呢?今天就了解一下这四个修饰符的不同吧。Java四个修饰符:public、protected、default、private。按照顺序,修饰符能作用的范围依次减小。用一个表格来表示就是: 为了验证表格的正确与否以及更好地理解,下面我们用代码来测试一下。首先我们来验证四种修饰符能否...原创 2019-11-10 20:39:08 · 1702 阅读 · 1 评论 -
java集合中的set,list,map
Collection是最基本的集合接口,声明了适用于JAVA集合的通用方法Java常用三个集合:set集合,list集合,map集合。List来处理序列,set用来处理集合,而map是存储键值对。其中,list与set是继承collection接口,而map集合则没有继承collectionList(存取有序,有索引,可以重复)ArrayList底层是数组,线程不安全,查找和修改快,增和删比...原创 2019-06-05 21:34:19 · 388 阅读 · 0 评论 -
Java基础之基本数据类型
标识符什么是标识符:用来标识类名、变量名、方法名、类型名、数组名以及文件名的有效字符序列称为标识符。 标识符的语法规则:标识符由字母、数字、下划线以及美元符号组成;标识符的第一个字符不能是数字字符;标识符不能是关键字;标识符不能是true、false、null等。基本数据类型数据类型可以分为基本数据类型和引用数据类型。基本数据类型又称为简单数据类型。Java中基本数据类型共有8种,可分为...原创 2019-07-24 10:25:48 · 392 阅读 · 0 评论 -
Java基础之运算符、表达式、语句
运算符常见的运算符有:加减运算符、乘除和求余运算符、自增自减运算符、关系运算符、逻辑运算符、赋值运算符、位运算符、以及比较特殊的instanceof运算符。加减乘除运算符都是耳目运算符:+、-、*、/;自增自减:++、–。都是单目运算符。两个可以放在操作元前面,也可以放在操作元后面,但是位置不同,所产生的效果也不同,++x表示在使用x之前,先使x的值+1,x++表示在使用x之后,x的值再+1...原创 2019-07-24 16:32:29 · 396 阅读 · 0 评论 -
Java中的static关键字解析
Static:可以理解为全局的,可以修饰变量,方法,代码块,内部类。被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去访问。一、Static方法:static方法一般称为静态方法,静态方法不依赖于任何对象就可以运行,在静态方法中是不能访问非静态方法和非静态变量。但是非静态方法可以访问静态方法和静态变量。 可以看到,非静态可以访问静态,而静态访问...原创 2019-07-25 20:39:43 · 312 阅读 · 0 评论 -
Java中的IO流
IO流概念:Java对数据的操作是通过流的方式,而IO流就是用来处理设备之间的数据传输。流按照流向可以分为两类:输入流和输出流。按照操作类型可以分为两类:字节流:字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的。字符流:字符流只能操作纯字符数据,比较方便。Java.io包中最重要的有五个类,一个接口。五个类是File、InputStream、OutputStream...原创 2019-08-03 12:43:18 · 334 阅读 · 0 评论 -
Java基础之类与对象
面向对象特征:封装、继承、多态。面向对象开发:不断创建对象、使用对象、指挥对象做事情。面向对象设计:管理和维护对象之间的关系。对象:类声明的变量被称为对象变量,简称对象。类的定义分为两部分:类声明和类体。class 类名{ 类体的内容 }类的目的:抽象出一类事物共有的属性和行为,并用一定的语法格式来描述所抽象出的属性和行为。其中{ }之间的内容称作类体。类体的内容由两部分...原创 2019-07-25 22:38:36 · 382 阅读 · 0 评论 -
Java基础之数组
首先,需要了解到为什么有数组?什么是数组?为什么有数组为了存储同种数据类型的多个值。例如从1-100这些int型数据,如果对其进行存储,输出等操作时,没有数组,一个一个定义的话,会非常麻烦,所以,引入数组可以极大地节省时间。什么是数组数组是存储同一种数据类型多个元素的集合,也可以看成是一个容器。同时,数组既可以存储基本数据类型,又可以存储引用数据类型。数组定义格式数据格式[ ] 数组...原创 2019-07-26 10:46:27 · 323 阅读 · 0 评论 -
Java之线程
线程首先需要了解,什么是线程?线程不是进程,但其行为很像进程,线程是比进程更小的执行单位,一个进程在其执行的过程中,可以产生多个线程。线程是程序执行的一条路径,一个进程可以包含多条线程。多线程并发执行可以提高程序的效率,可以同时完成多项工作。多线程并行和并发的区别多线程并发可以提高程序的效率,那么并行和并发的区别是什么?并行是两个任务同时运行,在A任务执行的同时,B任务也在执行(需要多核...原创 2019-08-04 15:58:46 · 408 阅读 · 0 评论 -
Java基础之继承与多态
继承是Java的一大特征,那么,什么是继承?继承就是让类与类之间产生关系,子父类的关系。让子类继承父类的特征和行为,使子类对象具有父类的实例域与方法。子类与父类的关系是"is-a"的关系。那么,什么时候使用继承?假设有一群动物,它们都有叫的特征,我们可以将叫的特征抽取出来,并为每个动物赋予属于自己的叫的特征,这也是Java的另一个特征:多态。package com.hpu.edu.dong...原创 2019-07-26 21:25:55 · 351 阅读 · 0 评论 -
Java数组排序:冒泡排序、选择排序、二分法查找
冒泡排序:原理:将第一个数与第二个数比较,如果第一个数比第二个数大,则第一个数与第二个数交换位置,否则保持当前位置不变。并依次将第二个数与第三个数比较。当前趟数比较完后比较下一趟,下一趟比较次数比前一趟次数少一。比较趟数比比较个数小一。假设创建一个长度为5的数组,第一次arr[0]与arr[1],arr[1]与arr[2],arr[2]与arr[3],arr[3]与arr[4]比较四次第二...原创 2019-07-27 18:44:36 · 464 阅读 · 0 评论 -
Java中的异常
异常的概述异常就是Java程序在运行过程中出现的错误。异常与错误的区别就是:异常能被程序本身处理,而错误是无法处理的。程序的错误分为三种:编译错误;运行时错误;逻辑错误。编译错误:编译错误是程序没有遵循语法规则,编译程序能够自己发现并且提示错误的原因以及位置。运行时错误:程序在执行时,运行环境发现了不能执行的操作。逻辑错误:程序没有按照预期的逻辑顺序执行。异常的分类Throwabl...原创 2019-07-28 17:33:58 · 336 阅读 · 0 评论 -
继承和实现的区别
继承:如果多个类的某个部分的功能相同,那么可以抽象出一个类出来,把他们相同的部分都放到父类中,让他们都继承这个类。实现:如果多个类处理的目标都是一样的,但是处理的方法不同,那么就可以定义一个接口,让他们实现这个接口,各自通过自己的处理方法来处理那个目标。也可以理解为继承是通过部分相同的功能,产生不同的结果。而实现则是通过不同的方法来实现同一个结果。继承和实现的区别:1、数量不同:java只...原创 2019-05-25 15:50:59 · 16796 阅读 · 1 评论