JAVA基础
以jdk8版本的java学习记录
wangdiankun
这个作者很懒,什么都没留下…
展开
-
java 的反射机制
java的反射机制是java框架的基石,正是有了反射的机制,才会有那么多优秀的java开发框架。反射将java类中的属性、构造器和方法都变成了对象,更是充分体现了java“万物皆对象”的设计思想。优势:1.可以在程序运行过程中操作由反射生成的对象2. 解耦,降低代码的耦合度,提高代码的复用率 在平常的开发过程中,通过泛化和反射的结合,可以设置出更加精简、通用的代码。1 创建java反射机制的使用需要一个名为Class的类,其创建有三种方式1.Class.forName2.类名.class3原创 2021-08-03 19:07:53 · 180 阅读 · 0 评论 -
foreach是否可以修改遍历的对象
foreach循环迭代数组元素时,不能改变数组元素的值,因此,不要对foreach的循环变量进行赋值”。基本类型数组,不可改变。引用类型数组(除String类型),可以改变。1 对象foreach可以改变对象的值,但不能删除或添加对象(foreach循环中,是把容器中的数据交给了那个element,当容器中装的是对象时,对象的赋值(赋的是引用,即给的是原对象所在的地址))为什么不能删除或者添加变量,因为每次进入foreach是,就会调用java.util.LinkedList.Listltr.next原创 2021-07-24 10:52:19 · 2925 阅读 · 0 评论 -
Stream流中的中间操作map、filter、limit等
Stream流中提供了一些方便简单的中间操作,如map、filter、limit等原创 2021-07-22 19:34:11 · 373 阅读 · 0 评论 -
Stream流中的收集操作,转化成集合/数组等
1. collect收集器Stream流中的收集器collect API,是stream流的一个结束/终止操作。其写法是.collect(collectors.方法)输出List .collect(collectors.toList())输出Set .collect(collectors.toSet())输出Map .collect(collectors.toMap(需要设置key,需要设置value,某种规则))输出map可以设置某些规则,当然不是必须字段,比如相同key值进行valu原创 2021-07-22 19:33:05 · 4441 阅读 · 0 评论 -
使用Stream流将List转化为Map,并对相同key值的数据进行合并
使用Stream流将List转化为Map,并对相同key值的数据进行合并,这里使用的场景是:有一个存储产品对象列表,里面存在重复的产品信息,需要将相同产品信息和产品数量进行合并解决方法,将list使用stream的Collectors工具类的toMap进行转换,转化时的key为产品的ID,value为数量,规则为遇见相同的key进行数量的累加,代码如下所示 Map<Long, Integer> map = itemList.stream().collect(Collectors.toMap(原创 2021-07-22 19:06:53 · 8225 阅读 · 0 评论 -
java BigDecimal处理高精度的专用工具
在java.math包下的BigDecimal是java提供的处理高精度的API,double和float处理的数据精度在16位,对于业务需求中金额一类的数据处理时需要使用高精度的BigDecimal来实现一般情况下,对于那些不需要准确计算精度的数字,我们可以直接使用Float和Double处理,但是Double.valueOf(String) 和Float.valueOf(String)会丢失精度。所以开发中,如果我们需要精确计算的结果,则必须使用BigDecimal类来操作。BigDecimal所创原创 2021-03-17 15:50:25 · 273 阅读 · 0 评论 -
java8新特性之Optional --- 解决空指针的问题
Optional 用于简化Java中对空值的判断处理,以防止出现各种空指针异常。 Optional实际上是对一个变量进行封装,它包含有一个属性value,实际上就是这个变量的值。1 创建它的构造函数都是private类型的,因此要初始化一个Optional的对象无法通过其构造函数进行创建。它提供了一系列的静态方法用于构建Optional对象:1.1 empty用于创建一个空的Optional对象;其value属性为Null。如:Optional o = Optional.empty();1.2原创 2021-03-16 20:41:38 · 412 阅读 · 0 评论 -
Java8新特性函数式编程 ---- lambda表达式
在java8版本中有三个重要使用的更新内容,其中之一为lamda表达式的使用,lamda表达式使用使java具有了函数式编程的规范,它的存在可以简化匿名内部类使用时的代码编写量,利用Lamda表达式是为了避免匿名内部类定义过多无用的操作。1 使用背景lamda表达式是java为函数式编程而设计的,要了解其函数式编程,就要先了解java的匿名内部类的。匿名内部类:在java中,若一个接口中存在一个方法,想要调用该接口的该方法,因为是一个接口,直接使用new是创建不了的,但是可以new了之后重写内部的该方原创 2021-03-16 19:42:05 · 143 阅读 · 0 评论 -
java8的Stream API入门笔记
一、Stream入门介绍1.流与集合有以下几种不同没有存储。 流不是存储元素的数据结构; 相反,它通过计算操作的流水线传送诸如数据结构,阵列,生成器功能或I / O通道的源的元件。功能性质。 流上的操作产生结果,但不会修改其来源。 例如,过滤从Stream获得的Stream会生成新的Stream而不需要过滤的元素,而不是从源集合中删除元素。懒惰寻求。 许多流操作(如过滤,映射或重复删除)可以懒惰地实现,从而暴露优化的机会。 例如,“找到具有三个连续元音的第一个String ”不需要检查所有的输入字原创 2020-11-09 17:50:05 · 198 阅读 · 0 评论 -
数组工具类Arrays和集合工具类Collections的常用方法
Arrays是数组的工具类,内部提供了许多操作数组的静态方法,并且提供了一个和集合的转换方法。Collections是集合的工具类,内部同样提供了需要集合需要的静态方法,也提供了一个和数组转换的方法。1. 数组工具类 Arrays该类包含用于操作数组的各种方法(如排序和搜索)。 该类还包含一个静态工厂,可以将数组视为列表。 如果指定的数组引用为空,则该类中的方法都抛出一个NullPointerException ,除非另有说明。**1.1 **2. 集合工具类 Collections...原创 2020-07-20 19:14:30 · 377 阅读 · 0 评论 -
map集合的hashmap集合底层实现原理---初探索
hashmap的底层实现简单来说就是(哈希表)数组+链表+红黑树,但是HashMap使用链表法避免了哈希冲突(相同hash值),当链表长度大于8(默认)时,将链表转化为红黑树,当小于6(默认)时,又会转回链表已达到性能均衡什么是红黑树红黑树是平衡二叉树中的一种,它有如特点:结点只有红黑两种颜色两个红色结点不能连在一起红色结点的子节点一定是黑色。红黑树总是通过旋转和变色达到自平衡...原创 2020-05-14 20:42:14 · 244 阅读 · 0 评论 -
Java的IO流之字符流
字符流的出现解决了字节流操作中文不方便的问题,字符流=字节流+编码表。用字节流复制文本文件时,文本中有中文但也没问题,原因是其底层操作自动进行字节拼接成中文,它是怎么识别中文的?原因就在于汉字在存储的时候,无论选择那种编码方式,第一个字节都是负数。(GBK格式站2个字节和UTF-8站3个字节)...原创 2020-04-28 19:50:59 · 163 阅读 · 0 评论 -
JVM的类加载机制
要执行一个编写好的java文件,要经过编译和运行的过程。编译过程将java文件编译成.class二进制文件,运行时需要加载到JVM中,本篇文章记录jvm的类加载机制的学习笔记。一、类加载的生命周期由上图可以看出,Class类加载的整个生命周期中,包括5(加载、校验、准备、解析、初始化)各阶段,里面比较重要的三个阶段分别是:加载、连接、初始化(1)加载:通过类的全限定名来获取定义此类的二进制...原创 2020-04-27 21:39:02 · 272 阅读 · 0 评论 -
Java中的IO流概述以及字节流学习笔记
IO流,流是一种抽象概念,是对数据传输的总称,也就是说数据在设备之间的传输称为流,流的本质是数据传输,IO流就是用来处理设备之间数据传输问题的,常见的应用:文件的复制、上传、下载。IO流根据流向分为输入流(读数据)、输出流(写数据)。IO流根据数据类型分为字符流(字符输入流、字符输出流)、字节流(字节输入流、字节输出流)。一般我们说IO流的的分类是按数据类型来分的。字节流是万能流,在不知道...原创 2020-04-19 19:53:37 · 187 阅读 · 0 评论 -
Java的IO流之File类
java的IO流模块常用的工具有File、字节流、字符流、特殊操作流,本篇文章便是本人学习File类的一次学习记录。一、File类概述File:是文件和目录路径名的抽象表示① 文件和目录是可以通过File封装成对象的。② 对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已。他可以是存在的,也可以是不存在的,将来是要通过具体的操作把这个路径的内容转换为具体存在的。三种...原创 2020-04-18 20:05:10 · 228 阅读 · 0 评论 -
Java集合框架之Map集合基础用法学习笔记
Map集合和collection集合一起构成了java的集合框架,本篇文章讲解Map集合的学习线路。一、Map集合简述(1)概述① interface Map<K,V> k:键的类型,V:值的类型② 将键映射到值的对象;不能包含重复的键;每个键可以映射到最多一个值。③举例: 学生学号和姓名(2)创建Map集合对象采用的是多态的方式,一般使用具体的实现类HashMapi...原创 2020-04-17 21:00:26 · 232 阅读 · 0 评论 -
泛型、泛型类、泛型方法相关问题解读
泛型是在JDK5中引入的特性,它提供了编译时类型安全检测机制,该机制允许在编译时检测到非法的类型。其本质是参数化类型,也就是说所操作的数据被指定为一个参数,将类型由原来的具体的类型参数化,然后在使用/调用时传入具体的类型。这种参数可以使用在类、方法、接口中,分别称为泛型类、泛型方法、泛型接口。一、泛型类/** 泛型 generic* 修饰符 class 类名 <范型变量>{*...原创 2020-04-17 20:12:51 · 278 阅读 · 0 评论 -
Set集合的子集合TreeSet集合
TreeSet集合也是Set集合的子集合,TreeSet集合间接实现了Set集合,相对于HashSet集合,TreeSet集合更多的自己独特的方法。本篇文章将介绍TreeSet集合的相关内容。一、TreeSet集合概述(1)TreeSet集合特点① 元素有序,这里的有序是不指元素的存储和取出的顺序,而是一种特殊规则进行的排序,具体的排序方式取决于构造方法。TreeSet():根据其元素的自...原创 2020-04-16 20:35:47 · 309 阅读 · 1 评论 -
java Set集合的也可以实现有序 ---- LinkedHashSet
LinkedHashSet集合是HashSet集合的子集合,本篇文章讲述LinkedHashSet的学习心得。一、LinkedHashSet集合概述(1)特点① 是使用哈希表和链表实现的Set接口,具有可预测的迭代顺序② 由于比hashSet多了一条链表,该链表保证了元素有序,也就是说元素的存储和取出顺序是一致的。③ 由哈希表保证元素的唯一性,也就是说没有重复的元素。(2)练习,存储...原创 2020-04-16 19:38:25 · 617 阅读 · 0 评论 -
Collection集合之Set集合基础概述
Collection集合另一大重要集合Set集合,在继承Collection集合的同时,它和List集合有重大区别,本片文章便介绍Set集合的进阶学习。一、Set集合概述(1)特点① 不包含重复的元素集合② 没有带索引的方法,所以不能使用普通的for循环遍历(2)练习:存储字符串并遍历import java.util.HashSet;import java.util.Set;/*...原创 2020-04-13 22:15:39 · 216 阅读 · 0 评论 -
List集合的子类ArrayList和LinkedList
List集合最常用的两个子类,分别是ArrayList和LinkedList,本篇文章就来讲解这两个子类的进阶学习。一、ArrayList(1)ArrayList底层是用数组实现的,同时它也是继承了数组的特点:查询快、增删慢。继承自List,所以List有的功能他们也都有。二、LinkedList(1)LinkedList底层是用链表实现的,同时它也是继承了链表的特点:增删快、查询慢。继承...原创 2020-04-13 21:43:23 · 1165 阅读 · 1 评论 -
Collection集合之List集合进阶学习
Collection集合中比较常用的有两大种,一是Set集合(不可重复),二是List(可重复)集合,本篇文章来介绍List集合的具体使用。一、List集合概述和特点(1)概述① 有序集合(也称为序列),用户可以精确的控制列表中的每个元素的插入位置,用户可以通过整数索引访问元素,并搜索列表中的元素。② 与Set集合不同,列表通常允许重复的元素。(2)特点① 有序:存储和取出的元素顺序一...原创 2020-04-13 21:17:48 · 238 阅读 · 0 评论 -
Collection集合的进阶学习
java集合框架中分为两大类,一类是单列的Collection集合,另一类是双列的map集合,本篇文章讲述Collection集合的内容。一、Collection集合概述和使用① Collection集合是单例集合,他表示一组对象,这些对象也成为Collection的元素。② JDK不提供此接口的任何直接实现,他提供更具体的子接口(如Set和List实现)。创建Collection集合的对...原创 2020-04-12 21:18:33 · 120 阅读 · 0 评论 -
java内部类相关知识的学习笔记
内部类、成员内部类、局部内部类、匿名内部类以及匿名内部类在开发中的使用进行总结介绍。一、内部类(1)概述:内部类就是在一个类定义一个类,例如:在一个类A的内部定义一个类B,类B就被称为内部类。(2)格式(3)内部类的访问特点①内部类可以直接访问外部类的成员,包括私有。②外部类访问内部类的成员,必须创建对象。(4)举例如上图所示,Inner类就是Quter类的内部类,Outer类中...原创 2020-04-10 21:13:18 · 248 阅读 · 0 评论 -
类和接口的关系、抽象类和接口的区别
一、类和接口之间的关系(1)类和类之间的关系继承关系,只能单继承,但是可以多层继承。(2)类和接口的关系实现关系,可以单实现,还可以在继承一个类的同时实现多接口。(3)接口和接口之间的关系继承关系,可以单继承,也可以多继承。二、抽象类和接口的区别(1)成员区别抽象类:变量、常量,有构造方法;有抽象方法,也有非抽象方法。接口:常量,抽象方法。(2)关系区别类与类:继承,单...原创 2020-04-06 18:33:41 · 1271 阅读 · 0 评论 -
Java中的接口
接口,在我们的平时编程过程中使用比较广泛的,可以说是一种特殊的抽象类。一、接口概述(1)定义:接口,就是一种公共的规范标准,只要符合规范标准,大家都可以通用,Java中的接口更多的体现对行为的抽象二、接口的特点(1)接口使用关键字interface修饰(2)类实现接口用implements表示(3)接口不能实例化接口的实例化参照多态的方式,通过实现类对象的实例化,这叫接口多态。...原创 2020-04-06 18:11:37 · 101 阅读 · 0 评论 -
Java抽象类
在动物类和猫类的关系上,动物类应该是一个抽象的,不同的动物喜欢吃的东西不一样,叫声也不一样,这就需要抽象类来实现。一、概述(1)概念:在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,这个类必须定义为抽象类(这里要和接口做一个区分:接口中没有变量,只有抽象方法)。二、抽象类特点...原创 2020-04-06 14:15:12 · 96 阅读 · 0 评论 -
面向对象语言的三大特性之多态
面型对象语言的三大特性:继承、多态、封装,深入了解多态的具体作用和应用。一、多态的定义(1)概述:同一个对象,在不同时刻表现出的不同形态。(2)举例:苹果① 可以苹果是苹果 :苹果 Apple = new 苹果();② 也可以说苹果是水果:水果 fruit = new 苹果();这里的苹果在不同的时刻表现出了不同的形态,这就是多态。(3)多态的前提和体现① 有继承/实现关系。② ...原创 2020-04-04 11:41:35 · 296 阅读 · 0 评论 -
不用编译器,使用指令运行java代码
一般在学习java的时候,基本上都是使用编译器进行代码的编写(IDEA、Eclipse等),这些编译器在我们写好main方法点击运行后,便会自动帮我们实现java代码。这次,我们要回到原点,不用编译器编写java代码,而是使用java 命令行执行java文件。首先要分清javac和java命令:javac:是编译命令,将java源文件编译成.class字节码文件。例如:javac hell...原创 2020-03-31 18:21:39 · 2827 阅读 · 1 评论 -
面向对象语言的三大特性之继承
面向对象语言的三大特性继承、封装、多态,本篇文章讲解继承的相关内容。一、基础内容(1)定义:继承是面向对象三大特性之一,可以使得子类具有父类的属性和方法,还可以在子类中重新定义,追加属相和方法(2)格式public class 子类名 extends 父类名()举例如下:/** 父类* */public class Person { String name; in...原创 2020-03-31 17:42:58 · 269 阅读 · 0 评论 -
java语言三大分类javaSE、javaME、javaEE的区别
JAVA是一门编程语言,分为三大版本,分别是javase、javame、javaee。(1)JavaSE标准版即Java标准版,主要用于开发和部署桌面、服务器以及嵌入设备和实时环境中的Java应用程序。例如,Java应用程序开发平台Eclipse。(2)JavaEE企业版是在JavaSE的基础上构建的,用来开发B/S架构软件,即开发企业级应用,主要针对企业应用的开发。例如,电子商务网站、E...原创 2020-03-30 13:15:18 · 1623 阅读 · 0 评论 -
JVM中的内存划分与垃圾回收算法
一、内存划分下面这张图完美的展示了JVM的内存划分可以看出,JVM将内存划分为堆区和非堆区,非堆区用来存储编译和保存的本地代码、虚拟机自己的静态数据、方法参数、局域变量等的引用以及方法执行顺序、本地方法的调用栈;而堆区则是存放创建的对象等。下图所示是堆中内存分配示意图,创建一个对象,首先会在eden区域分配区域,如果内存不够,就会将年龄大的转移到Survivor区,当survivor区域存...原创 2020-03-27 13:26:48 · 120 阅读 · 0 评论 -
JVM,JER,JDK各自的作用和之间的联系
一、JVM(1)概念JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。(2)作用引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟...原创 2020-03-27 13:12:41 · 653 阅读 · 0 评论 -
JDK8 新增的日期时间API
新的时间及日期API位于 java.time 包中,下面是一些关键类。Instant:代表的是时间戳。LocalDate:不包含具体时间的日期。LocalTime:不含日期的时间。LocalDateTime:包含了日期及时间。一、获取时间(1)Instant(时间戳类)JDK8获取时间戳特别简单。Instant类由一个静态的工厂方法now()可以返回当前时间戳。Instant in...原创 2020-03-20 12:33:29 · 170 阅读 · 0 评论 -
java集合框架(collection和map)详解
java集合框架(collection和map)详解推荐大家看这篇文章,详解的非常齐全https://www.cnblogs.com/bingyimeiling/p/10255037.html转载 2020-03-06 14:05:12 · 235 阅读 · 0 评论 -
Java 实现时间24小时制和12小时制的区别
yyyy-MM-dd hh:mm:ss 12小时SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”); //小写是12小时yyy-MM-dd HH:MM:ss 24小时SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:MM:ss”);//大写是...原创 2020-02-28 15:09:33 · 939 阅读 · 0 评论 -
String类与StirngBuilder、StringBuffer的区别
String 转 int//方式一:Integer(String s)Integer i = new Integer("10"); // 10int a = i.intValue()//方式二:static int parseInt(String s)int b = Integer.parseInt("20"); //20int 转Stringint a = 50;Strin...原创 2020-02-23 17:15:22 · 211 阅读 · 0 评论 -
java中对字符串的截取、转换、分割
1、截取`/*字符串的截取方法:public String substring(int index);截取从参数位置一直到字符串末尾,返回新字符串public String substring(int begin,int end);截取从begin开始,一直到end结束,中间的字符串。左闭右开* */public class DemoStringsub { public s...原创 2020-02-23 16:48:02 · 374 阅读 · 0 评论 -
List、Set、Map区别
整体来看List,Set,Map都是实现了Collection接口的接口。重复性:List允许存在重复的元素,也就是说List中可以在不影响现有元素的值及其索引的同时插入新的重复元素。Set不允许存在重复的元素,Set集合都不允许插入重复元素。Map是一种以键值对形式存储元素的映射类型集合,对Map而言key(键)是唯一的,value(值)是可重复的。空值性:List允许任意数量的空值...原创 2020-02-08 16:08:48 · 196 阅读 · 0 评论