Java基础及重难点
文章平均质量分 68
记录在学习中遇到的疑难问题
adrian_h
想要变得优秀
展开
-
Java8新特性-Lambda表达式与Stream API
简介Stream是Java 8的新特性。Stream让开发者能够以一种声明的方式处理数据源,将处理的数据源看做一种Stream(流),Stream(流)在Pipeline(管道)中传输和运算,支持的运算包含筛选、排序、聚合等,当到达终点后便得到最终的处理结果。Lambda表达式简介简而言之,Lambda表达式可以用来实现匿名类,简化了代码。举例:测试用的函数式接口package algorithm;/** * 测试用的函数式接口(只有一个抽象方法的接口) * @author : kun原创 2021-03-01 14:49:04 · 216 阅读 · 0 评论 -
关于hashCode()和equals(),看这一篇就够了!
我们经常被问到hashCode()方法和equals()方法的用法,以及什么时候需要重写这两个方法的类似问题,本文是我对这两个方法的一些理解。一、equals()和"==" 提到equals()和"==",我们首先来理解一下它们的联系与区别。对于基本数据类型,==比较的是两边的值,对于引用类型,比较的是两个对象的地址是否相等。 equals()用来比较两个对象是否相等,如果我们不重写equals方法的话,用的是Object类里的eq原创 2021-01-07 17:33:08 · 239 阅读 · 0 评论 -
解读类加载、类初始化与实例化
要理解类加载和类初始化,必须了解类的生命周期,类的生命周期可简要概括为五个阶段,即加载、连接、初始化、使用、销毁五个阶段。类加载通常指类生命周期的前三个阶段:加载阶段:加载阶段就是把经过编译后的字节码文件加载进内存,即把类信息加载进jvm的方法区中,并在堆中创建一个Class对象,来作为类信息的入口。类加载的时机和虚拟机的实现有关,有的实现是在类被使用之前就进行加载,有的是在只有使用的时候才去加载,我们常用的虚拟机就采用了后面这种实现。连接阶段:连接阶段可细分为:验证、准备、解析三个阶段。验证:原创 2020-12-11 16:53:17 · 345 阅读 · 0 评论 -
详细解读深拷贝与浅拷贝
深拷贝和浅拷贝clone()方法首先介绍一下拷贝的核心clone()方法,clone()方法和new关键字都会构建出一个新的对象。当我们使用new关键字来创建对象的时候,后面会跟要创建对象的类型,根据类型来分配内存空间,然后调用相应的构造方法,来填充对象的各个属性,这样对象就创建好了,我们可以使用它的引用,来进行操作。clone()方法创建对象需要依赖一个已经存在的对象,对象对应的类需要实现Cloneable接口(这个接口里面没有内容,起到了一个标识的作用,执行clone()方法的时候Jvm会检测对原创 2020-12-04 08:54:55 · 172 阅读 · 0 评论 -
Java锁机制的理解(欢迎指正)
锁机制首先介绍一个重要的概念:CAS:即比较并设置,这个操作是原子的。首先进行比较,如果原值要进行更改,再更改之前会比较原值是否发生过改变,如果没有的话就会执行更改,如果发生过改变,就不会进行更改。一、乐观锁和悲观锁(宏观分类)从宏观角度,将锁分为了两类乐观锁:读取数据的时候,认为数据没有被修改,不会加锁。如果要更新数据的话,会检查从读取到要更新这段时间里,数据是否有改变,如果有,就重新读取,再次尝试更新,再次进行检查。适用于写操作比较少的情况。悲观锁:读取数据的时候,认为数据会被修改。每次读取原创 2020-11-30 15:12:48 · 109 阅读 · 0 评论 -
正则表达式
元字符:元字符注释.匹配除换行符外的任意字符\w匹配字母、数字、下划线、汉字\s匹配任意空白符\d匹配数字\b匹配单词的开始或结束^匹配字符串的开始$匹配字符串的结束限定符:限定符注释*重复零次或多次+重复一次或多次?重复零次或一次{n}重复n次{n,}重复n到更多次{n,m}重复n到m次转义:如果要匹配的字符串中包含了元字符和限定符等,在这些字符前加\进行转原创 2020-11-24 18:58:36 · 68 阅读 · 0 评论 -
Java基础问题
一.for循环的流程问题:例题:package demo;public class testFor { static boolean foo(char c) { System.out.print(c); return true; } public static void main(String[] args) { int i = 0; for (foo('A'); foo('B') && (i原创 2020-10-28 10:10:02 · 218 阅读 · 0 评论 -
Java反射机制
概述最近在读公司框架源码的时候,多处用到了反射,现在写一篇文章来复习一下反射这部分的知识。反射的核心是JVM在运行时才动态加载类、调用方法、访问属性。如果你需要用到某方法,但是那个方法是私有的,这个时候你就可以通过反射去执行这个私有方法,并且获取私有变量。功能实现首先需要获取一个类的Class对象获取类的Class对象主要有三种方式:Person person = new Person();Class personClass1= person.getClass();Class perso原创 2020-10-19 14:45:16 · 71 阅读 · 0 评论 -
理解Java序列化
1.实现序列化:1)让类实现Serializable接口,该接口是一个标志性接口,标注该类对象是可被序列2)然后使用一个输出流来构造一个对象输出流并通过writeObect(Obejct)方法就可以将实现对象写出3)如果需要反序列化,则可以用一个输入流建立对象输入流,然后通过readObeject方法从流中读取对象2.作用:1)序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化,可以对流化后的对象进行读写操作,也可以将流化后的对象传输与网络之间;2)为了解决对象流读写操作时转载 2020-10-16 10:15:13 · 65 阅读 · 0 评论 -
关于抽象类和接口的常见问题总结
首先抽象类里可以有抽象方法,也可以有具体的方法。如果子类是非抽象类,那么这个子类必须去实现父类里面所有的抽象方法(重写),而抽象类里的非抽象方法会被继承。另外,接口中所有的方法都是抽象的,接口中可以定义数据成员,但必须是常量。如果抽象类来实现接口,不必实现接口中所有的方法,其余方法可以交给抽象类的子类实现。也就是说,一个子类继承了某抽象类,这个抽象类又实现了某接口,抽象类中若没有实现接口中所有的方法,这些没有实现的方法就由子类实现。...原创 2020-10-10 10:41:46 · 411 阅读 · 0 评论