![](https://img-blog.csdnimg.cn/20210219225624631.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java_basic
介绍Java的基本知识
奔跑的扫地僧
在代码的世界中,知识需要分享,代码需要open source,世界才能大一统。世界本没有界限,人类的思维限定了国界。
展开
-
Java字节码层面读程序
准备工具:IntelliJ开发工具+Jclass Lib插件,插件直接在setting选项中,搜索安装即可,见下图:然后这个工具的好处在于,可以跳转到Oracle的官网,去查看具体的JVM指令的说面文档。我这里写了两个简单的程序(箭头上的指令含义,见最下面的截图),并且分析如下:局部变量表的具体信息如下图:具体的指令,点击后可以跳转,我这里截图几个,分享下。根据这些指令,才有了上面简单程序,执行流程的解释介绍。...原创 2022-01-03 11:22:19 · 7552 阅读 · 0 评论 -
Java8-Optional类
JAVA8 optianal类的使用原创 2021-12-19 11:37:12 · 345 阅读 · 0 评论 -
java8 常见的函数式接口对比
java8 引入了函数式接口,其中用最多的当属Consumer、Predicate、Function这三类,这里写个例子展示没有缩写时和缩写时的差异。废话不多说,直接上代码:public class FunctionExpress { public static void main(String[] args) { ArrayList<String> strings = new ArrayList<>(); Collections.原创 2021-12-07 08:38:30 · 122 阅读 · 0 评论 -
Java8 双冒号-构造方法引用
前两篇文章已经介绍了两种方法引用。这里再增加一个构造方法引用。1、准备一个可用的类public class Book { private String name; public Book(String name) { this.name = name; } public Book() { } public String getName() { return name; } public void原创 2021-12-04 17:55:03 · 332 阅读 · 0 评论 -
Java8 双冒号-对象方法引用
双冒号的使用,之前写了一篇静态方法引用。今天这里再写一篇双冒号之对象方法的引用。废话不多说,直接上代码,一切说明都在代码中:准备步骤:1、准备一个类,功能是是返回a-b之间的随机数public class RandomNum { //返回a到b之间的随机数 public int nextIntAtoB(int a,int b){ Random random = new Random(); return random.nextInt(b-a+1原创 2021-12-04 10:52:02 · 698 阅读 · 0 评论 -
Java8 stream流map方法使用
直接上代码,顺便演示了从匿名内部类→lamdba表达式:/** * stream流的map方法的作用 * 将当前流中的元素从一种类型转换为另一种类型存储到新流中 * map 方法中隐含的函数式接口是 Funtion接口 */public class LamdbaExpress03 { public static void main(String[] args) { ArrayList<String> strings = new ArrayList<&原创 2021-12-02 19:24:03 · 4076 阅读 · 0 评论 -
Java8 静态方法引用-双冒号::
java8 中静态方法的双冒号引用示例。首先我们创建一个函数式接口@FunctionalInterfacepublic interface ArrayInterface { public abstract int maxValue(int[] arr);}其次,静态方法一般都是工具类中用,我们写一个获取数组最大值的方法。/** * 工具类中定义静态方法 */public class ArrayUtils { //定义一个方法返回数组的最大值 publi原创 2021-11-24 21:15:31 · 510 阅读 · 0 评论 -
Java8 串行流和并行流效率对比
哈哈,废话不多说,上菜:/** * 串行流: 所有的数据操作都在一个线程中 通过stream()方法获得的都是串行流 * 并行流: 将数据分成多块,并在不同的线程分别处理每一块的数据,通过 parallelStream()实现 * * 列子:用串行流计算0-2000000的和,用并行流计算0-200000的和 * */public class LamdbaExpress01 { public static void main(String[] args) { t原创 2021-11-22 20:15:37 · 515 阅读 · 0 评论 -
Java8 stream流的收集
java8 引入流进行处理之后,我们常需要对流进行搜集。那么流的搜集主要有如下两种方式:1、将流收集到集合中2、将流收集到数组中具体的例子见如下代码:public class LambdaExpress { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); Collections.addAll(list,原创 2021-11-22 19:50:32 · 522 阅读 · 0 评论 -
Java8 Lamdba表达式缩写介绍
上一篇我写了一个Lamdba表达式的经典例子,但是实际工作中,很多人喜欢写各种缩写,导致有的伙伴看不懂。这篇主要写下,Lamdba表达式的缩写:首先我们常见的Lamdba表达式的结构如下:( 参数列表 ) -> { 方法体 }那么可以省略的场景总结如下:①参数列表有且只有一个参数,则可以省略小括号②参数列表的数据类型可以省略,随时都可以省略③当方法体有且只有一条语句的时候,可以省略大括号,如果省略了大括号,则return语句后分号也需要省略。下面针对上面的三个场景给一个例子原创 2021-11-21 15:05:07 · 252 阅读 · 0 评论 -
Java8 Lamdba表达式经典例子
Lamdba表达式经典例子原创 2021-11-20 22:47:58 · 348 阅读 · 0 评论 -
因为热爱,所以编程,因为编程,所以精彩
致敬所有的开发工程师,来了就相互关注下,共同进步,一起学习,一起秃头。O(∩_∩)O哈哈~原创 2021-08-03 16:52:03 · 74 阅读 · 0 评论 -
Java8 并行流示例
package Stream;import java.util.ArrayList;import java.util.List;import java.util.stream.Collectors;public class StreamTest { public static void main(String[] args) { List<Person> personList = new ArrayList<Person>(); .原创 2021-07-28 18:18:19 · 154 阅读 · 0 评论 -
集合框架图整理
程序=数据结构+算法在集合框架图中,红色代表接口, 蓝色代表抽象类, 绿色代表并发包中的类,灰色代表早期线程安全的类(基本已经弃用)原创 2021-07-20 19:24:18 · 251 阅读 · 0 评论 -
Java8 Stream 写法示例
import java.util.ArrayList;import java.util.List;import java.util.stream.Collectors;public class Stream { //流的理解,把它定义成遍历数据集合的高级迭代器。还有并行流的高级写法 public static void main(String[] args) { List<Shop> shops = new ArrayList<Shop>().原创 2021-05-26 17:28:28 · 277 阅读 · 0 评论 -
JAVA8 :: 号用法示例
上代码:import java.util.Arrays;import java.util.List;import java.util.function.Consumer;public class Java8MaoHao { public static void printValur(String str){ System.out.println("打印字符串 : "+str); } public static void main(String[]原创 2021-05-26 17:25:30 · 197 阅读 · 0 评论 -
java的GC垃圾回收算法
关于垃圾回收算法,大家可能平时用到并不多,但是在面试的过程中很多人会问这方面的问题。其实主要也是考察大家对底层的一个了解,不需要很深入,但是希望大家可以大致了解这个过程。常见的垃圾回收算法有CMS G1我们按照回收的机制,那么可以展示成如下3种。补充下:上面的GC roots我们成为 根可达算法,采用GC roots来判断,对象是否还可用,是否需要回收。...原创 2021-04-12 23:40:42 · 137 阅读 · 0 评论 -
java代码性能优化总结35条
1、尽量指定类、方法的final修饰符 带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是 final的。为类指定final修饰符可以让类不可以被继承,为方法指定final修饰符可以让方法不可以被重写。如果指定了一个类为final,则该 类所有的方法都是final的。Java编译器会寻找机会内联所有的final方法,内联对于提升Java运行效率作用重大,具体参见Java运行期优 化。此举能够使性能平均提高50%...原创 2021-03-12 11:38:19 · 197 阅读 · 0 评论 -
Java基本理解之--泛型的通配符?
泛型的通配符: ?:代表任意的数据类型使用方式:①不能在创建对象时使用②只能作为方法的参数使用举个具体的例子:定义一个方法,能够遍历所有类型的ArrayList集合import java.util.ArrayList;import java.util.Iterator;public class GenericCommon { public static void main(String[] args) { ArrayList<I...原创 2021-02-15 11:53:42 · 83 阅读 · 0 评论 -
Java基本理解之--接口泛型的定义
接口泛型的定义有两种:第一种:定义接口的实现类,实现接口,制定接口的泛型第二种:接口使用什么泛型,实现类就使用什么泛型,类带着接口走,相当于定义了一个含有泛型的类,创建对象的时候确定泛型的类型。public interface GenericInterface<I> { public abstract void method(I i);}第一种方式如下代码:public class GenericInterfaceImpl01 implements Gener原创 2021-02-15 10:04:06 · 1405 阅读 · 0 评论 -
Java基本理解之---泛型方法的定义和使用
含有泛型的方法:泛型定义在方法的修饰符和返回值类型之间格式如下: 修饰符 <泛型> 返回值类型 方法名(参数列表(使用泛型)){ 方法体;}含有泛型的方法,在调用方法的时候确定泛型的数据类型,传递什么类型的参数,泛型就是什么类型。public class GenericMethod { public <M> void method01(M m){ System.out.println(m); } ...原创 2021-02-15 09:28:45 · 657 阅读 · 0 评论 -
Java基本理解之---参数泛型化定义和使用
泛型的本质是参数类型化,解决不确定具体对象类型的问题。在面向对象编程语言中,允许程序员在强类型校验下定义某些可变的部分,以达到代码复用的目的。动手开干,举一个具体的例子,我先创建一个类,如下:public class GenericClass { private String name; public String getName() { return name; } public void setName(String name) {原创 2021-02-14 11:56:03 · 330 阅读 · 0 评论 -
Java基本理解之---Collection集合
一直好奇Java的Collection 集合有什么用?平时在工作中,相信大家基本不会去用这个Collection 集合,几乎就是在用list或者map今天看到别人总结了一张图,分享出来。其实Collection集合最大的作用就是让我们彻底去理解,Java面向接口编程的理念。公共的方法抽取出来,实现的时候可以任意采用子类,这也是Java多态的一种体现。我们学习Collection 基本是在学习它的API接口,具体全部的API接口,可以去看Java的开发的API接口文档,这里简单写几个常用的。.原创 2021-02-14 09:34:21 · 251 阅读 · 0 评论 -
Java中this 关键字的用法
1、代指类中的属性,我们采用this 代码如下:/** * 1、类中的属性调用都要用this */public class TestStudent001 { public static void main(String[] args) { Student001 st001 = new Student001("Kobe",38); System.out.println(st001.getInfo()); }}class Student001{原创 2021-02-02 07:11:10 · 448 阅读 · 0 评论 -
Java的JVM内存模型全面知识点总结
Java内存 应该是Java面试中问得最多的问题,今天写一篇彻底终结面试。(* ̄︶ ̄)首先先摆上Java内存模型图:JVM内存布局规定了java在运行过程中内存申请、分配、管理的策略1、Heap堆内存区域:heap是0OM故障的主要发源地,存储几乎所有的实例对象,堆由C自动回收.通常其占用的内存也是最大的。通常情况下堆内存的空间既可以固定大小也可以在运行时动态进行调整。常见的调优参数例如:.Xms256M-Xmx256M-X是VM运行参数,ms是memorystart简称,mx...原创 2021-01-24 15:49:20 · 220 阅读 · 0 评论 -
JDK8新特性之---遍历List(map)结构
先描述下这段代码的请用场景,代码外层是一个List集合,List集合中是一个Map,我这边需要根据Map中的key值对,List<Map>中的数据进行过滤,过滤条件为匹配Map中的key值的中间两个是数字的数据。这里记录下来,希望有同学用到了可以参考,废话不多说,直接上代码:结果如下:...原创 2020-06-14 21:03:05 · 2065 阅读 · 0 评论 -
SpringMVC定时任务的实现(cron表达式)
最近公司搭建新的系统,其中许多业务均需要用到定时任务,临时看了下SpringMVC定时任务的实现,记录下。大致分为如下几个步骤实现:后台java的代码:这里写下cron表达式,有同事就写错过。...原创 2020-03-17 23:06:12 · 290 阅读 · 0 评论 -
JDK8新特性之---Stream操作
java8中新增的特性旨在帮助程序员写出更好的代码,对核心类库的改进是最关键的一部分。对核心类库的改进主要包括集合类的API和新引入的流stream流式写法最常见的就是对集合进行操作 判断一个操作是 惰性求值 还是 及早求值 很简单,看它的返回值。如果返回值是Stream则是惰性求值;如果返回值是另一个数值或者为空,则是及早求值此处我们先介绍下创建stream流的几种常见方式: ...原创 2020-04-12 10:21:29 · 224 阅读 · 0 评论 -
JDK8新特性之---Lamdba表达式的类型推断
java8中增加了,lamdba表达式的写法。函数接口:函数接口是只有一个抽象方法的接口,用作Lamdba表达式的类型。每个方法都有自己的参数类型,那么我们思考Lamdba表达式的参数类型又是什么?java7中程序员可以省略构造函数的泛型类型,java8更进一步,程序员可以省略Lamdba表达式中多有的参数类型。当然并不是什么魔法,只是javac根据Lamdba表达式的上下文信息推断出参数...原创 2020-04-12 07:55:19 · 148 阅读 · 0 评论 -
JDK8新特性之---时间类
Java 8通过发布新的Date-Time API (JSR 310)来进一步加强对日期与时间的处理。对日期与时间的操作一直是Java程序员最痛苦的地方之一。标准的 java.util.Date以及后来的java.util.Calendar一点没有改善这种情况,个人感觉JDK8对时间的处理使得对日期的处理更加人性化了。这些增加的特性都是1.8之后才有的,以前本人在工作中之前大多用1.6 ...原创 2020-04-06 10:53:02 · 223 阅读 · 0 评论 -
xml数据介绍与用java读写xml文件
XML 可扩展的标记语言 Extensible Markup Language用来标记数据,并且允许用户对自己的标记语言进行定义的源语言,此语言非常适合万维网的传输,得到W3C的支持。特点:①类似HTMl ②用来传输数据而不是展示数据 ③XML标签没有预定义,需要自己定义标签 ④ 具有自我描述性 ⑤W3C推荐的标准注意点:XML标签大小写敏感,必须正确的嵌套,必须有根元素,属性必须加原创 2017-03-27 18:10:52 · 481 阅读 · 0 评论 -
关于JSON数据的入门了解以及在java中简单的读写json文件
JSON 的全称是:JavaScript Object NotationJSON也是一种数据格式,刚开始接触JSON的时候,很想了解它是什么。其实换种思维,就跟excel这样的文件一样,世界上所有的数据格式都不是生来就有的,都是为了解决某个问题而产生,而JSON就是因为它比XML更小、更快、更容易解析,且数据格式简单,所以获得了大众的喜欢,从而流行起来。JSON数据特点:①键值对形原创 2017-03-27 16:15:30 · 660 阅读 · 0 评论 -
快速创建一个springboot工程
写一下10分钟搞定和启动一个SpringBoot项目工程。第一步:首先在官方网站下载一个自己选择的项目https://start.spring.io/第二步:在自己的Eclipse中直接导入一个maven项目(这个项目就是上面下载好的压缩包)。注意:导入项目前,先配置好本地的JDK1.8或1.8以上版本,另外配置好Maven的环境变量,最后在Eclipse中配置好maven的s...原创 2020-03-25 08:33:48 · 797 阅读 · 0 评论 -
Maven简单配置
目前的J2EE项目,基本上项目管理工具都在用Maven,本人购买过一本Maven实战的书,感叹,一个工具就可以写厚厚的一本书!当然,我们开发总是站在巨人的肩膀上,我们会使用就行,别再去纠结1+1为什么会等于2这样的问题。简单介绍:Apache Maven是一个软件项目管理和综合工具。基于项目对象模型(POM)的概念,Maven可以从一个中心资料片管理项目构建,报告和文件。我们下载直接...原创 2020-03-21 10:15:55 · 158 阅读 · 0 评论 -
RestFul风格代码
restful风格的代码大多在SpringMVC中使用@RestController = @Controller + ResponseBody 注解的合并@RequestMapping 注解可以在Controller级别提取如下选取了几个代码片段,供大家参考:我们再调试时,经常选用发出请求的工具是PostMan:如下是jas...原创 2020-03-12 22:09:03 · 652 阅读 · 0 评论 -
关于java的增强型的for语句
在JDK1.5之后java语言支持增强型的for 循环语句,我们正常情况下去读取数据是采用for语句,如下:for(int i = 0; i System.out.println(a[i]);}但是增强型的语句可采用如下形式: 输出的结果如下:以上是将增强型的for语句用在了一个数组排序的例子中,仅供参考。原创 2015-11-28 10:58:34 · 788 阅读 · 0 评论 -
采用Java写冒泡法———2015.11.27
冒泡法排序堪称经典!许多入门者必须会!上面的功能是:从键盘输入一个数,这个数为接下来需要排序的总数,之后从键盘输入需要排序的数,完毕后,即可看到结果。如下:原创 2015-11-27 22:00:58 · 414 阅读 · 0 评论 -
用Java语言打印一个倒立的等腰三角形———2015.11.26
上篇博客上写了打印等腰三角形,这篇自然继续写了,只不过是倒立的等腰三角形。大同小异,关键是我们要有自己的思维方法,自己对于一个问题的逻辑。具体见下:运行结果如下:原创 2015-11-26 21:26:54 · 7168 阅读 · 0 评论 -
用Java语言打印等腰三角形———2015.11.26
用*号打印图形是许多编程语言都喜欢干的事,经典的就是打印三角形,今天写了个等腰三角形的程序,记录一下。运行结果如下:原创 2015-11-26 20:35:23 · 730 阅读 · 0 评论 -
九九乘法表的程序编写———2015.11.26
在一些中小乃至大公司的笔试题目中,偶尔会要求大家手写九九乘法表的程序,简单而不失逻辑的考验。其实乘法表的编写,就是两个for循环的嵌套使用,程序如下:该程序若在笔试过程中,笔试者要一次写对,就得注意思维的完整性了,其中的细节包括:j与i的打印输出位置,制表符的引入,换行的位置。输出结果如下图:原创 2015-11-26 20:18:43 · 1196 阅读 · 0 评论