自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (4)
  • 收藏
  • 关注

转载 Java异常处理——日志打印

目录小结使用JDK Logging使用Commons Logging使用Log4j使用SLF4J和Logback小结日志是为了替代System.out.println(),可以定义格式,重定向到文件等;日志可以存档,便于追踪问题;日志记录可以按级别分类,便于打开或关闭某些级别;可以根据配置文件调整日志,无需修改代码;Java标准库提供了java.util.logging来实现日志功能。Commons Logging是使用最广泛的日志模块;Commons Logging的API非常简单;C

2021-08-27 10:09:22 2541

转载 Java异常处理——断言

小结断言是一种调试方式,断言失败会抛出AssertionError,只能在开发和测试阶段启用断言;对可恢复的错误不能使用断言,而应该抛出异常;断言很少被使用,更好的方法是编写单元测试。断言(Assertion)是一种调试程序的方式。在Java中,使用assert关键字来实现断言。我们先看一个例子:public static void main(String[] args) { double x = Math.abs(-123.45); assert x >= 0;

2021-08-27 07:36:15 1642 1

转载 Java异常处理——抛出异常&自定义异常&NullPointerException

目录小结抛出异常异常的传播抛出异常异常屏蔽提问时贴出异常自定义异常NullPointerException处理NullPointerException定位NullPointerException小结调用printStackTrace()可以打印异常的传播栈,对于调试非常有用;捕获异常并再次抛出新的异常时,应该持有原始异常信息;通常不要在finally中抛出异常。如果在finally中抛出异常,应该原始异常加入到原有异常中。调用方可通过Throwable.getSuppressed()获取所有添加的

2021-08-26 20:30:56 6888

转载 Java异常处理——捕获异常

目录小结多catch语句finally语句捕获多种异常小结使用try … catch … finally时:多个catch语句的匹配顺序非常重要,子类必须放在前面;inally语句保证了有无异常都会执行,它是可选的;一个catch语句也可以匹配多个非继承关系的异常。在Java中,凡是可能抛出异常的语句,都可以用try ... catch捕获。把可能发生异常的语句放在try { ... }中,然后使用catch捕获对应的Exception及其子类。多catch语句可以使用多个catch语句

2021-08-24 17:54:53 736

转载 Java异常处理——Java的异常

目录小结捕获异常小结Java使用异常来表示错误,并通过try … catch捕获异常;Java的异常是class,并且从Throwable继承;Error是无需捕获的严重错误,Exception是应该捕获的可处理的错误;RuntimeException无需强制捕获,非RuntimeException(Checked Exception)需强制捕获,或者用throws声明;不推荐捕获了异常但不进行任何处理。Java内置了一套异常处理机制,总是使用异常来表示错误。异常是一种class,因此它

2021-08-24 10:53:20 128

转载 Java核心类——常用工具类

Java提供的常用工具类有:Math:数学计算Random:生成伪随机数SecureRandom:生成安全的随机数Java的核心库提供了大量的现成的类供我们使用。本节我们介绍几个常用的工具类。Math顾名思义,Math类就是用来进行数学计算的,它提供了大量的静态方法来便于我们实现数学计算:求绝对值:Math.abs(-100); // 100Math.abs(-7.8); // 7.8取最大或最小值:Math.max(100, 99); // 100Math.min(1.2,

2021-08-23 21:18:06 84

转载 Java核心类——BigInteger&BigDecimal

目录小结BigIntegerBigDecimal比较BigDecimal小结BigInteger用于表示任意大小的整数;BigInteger是不变类,并且继承自Number;将BigInteger转换成基本类型时可使用longValueExact()等方法保证结果准确。BigDecimal用于表示精确的小数,常用于财务计算;比较BigDecimal的值是否相等,必须使用compareTo()而不能使用equals()。BigInteger在Java中,由CPU原生提供的整型最大范围是64

2021-08-23 20:53:28 719

转载 Java核心类——记录类

小结从Java 14开始,提供新的record关键字,可以非常方便地定义Data Class:使用record定义的是不变类;可以编写Compact Constructor对参数进行验证;可以定义静态方法。使用String、Integer等类型的时候,这些类型都是不变类,一个不变类具有以下特点:定义class时使用final,无法派生子类;每个字段使用final,保证创建实例后无法修改任何字段。假设我们希望定义一个Point类,有x、y两个变量,同时它是一个不变类,可以这么写:publ

2021-08-23 20:23:16 264

转载 Java核心类——枚举类

目录小结enumenum的比较name()ordinal()switch小结Java使用enum定义枚举类型,它被编译器编译为final class Xxx extends Enum { … };通过name()获取常量定义的字符串,注意不要使用toString();通过ordinal()返回常量定义的顺序(无实质意义);可以为enum编写构造方法、字段和方法enum的构造方法要声明为private,字段强烈建议声明为final;enum适合用在switch语句中。在Java中,我们可以

2021-08-23 17:56:49 76

转载 Java核心类——JavaBean

目录小结JavaBean的作用枚举JavaBean属性小结JavaBean是一种符合命名规范的class,它通过getter和setter来定义属性;属性是一种通用的叫法,并非Java语法规定;可以利用IDE快速生成getter和setter;使用Introspector.getBeanInfo()可以获取属性列表。在Java中,有很多class的定义都符合这样的规范:若干private实例字段;通过public方法来读写实例字段。例如:public class Person {

2021-08-23 14:55:10 660

转载 Java核心类——包装类型

目录小结包装类Auto Boxing不变类进制转换处理无符号整型小结Java核心库提供的包装类型可以把基本类型包装为class;自动装箱和自动拆箱都是在编译期完成的(JDK>=1.5);装箱和拆箱会影响执行效率,且拆箱时可能发生NullPointerException;包装类型的比较必须使用equals();整数和浮点数的包装类型都继承自Number;包装类型提供了大量实用方法。包装类我们已经知道,Java的数据类型分两种:基本类型:byte,short,int,long,bo

2021-08-23 14:27:21 75

转载 Java核心类——StringBuilder

目录小结StringBuilder&StringBufferStringJoinerString.join()小结StringBuilder是可变对象,用来高效拼接字符串;StringBuilder可以支持链式操作,实现链式操作的关键是返回实例本身;StringBuffer是StringBuilder的线程安全版本,现在很少使用。用指定分隔符拼接字符串数组时,使用StringJoiner或者String.join()更方便;用StringJoiner拼接字符串时,还可以额外附加一个“开

2021-08-23 08:16:37 503

转载 Java核心类——字符串和编码

目录小结String字符串比较去除首尾空白字符替换子串分割字符串拼接字符串格式化字符串类型转换转换为char[]小结Java字符串String是不可变对象;字符串操作不改变原字符串内容,而是返回新字符串;常用的字符串操作:提取子串、查找、替换、大小写转换等;Java使用Unicode编码表示String和char;转换编码就是将String和byte[]转换,需要指定编码;转换为byte[]时,始终优先考虑UTF-8编码。String在Java中,String是一个引用类型,它本身也是

2021-08-22 11:05:15 115

转载 面向对象基础——classpath&jar和模块

小结JVM通过环境变量classpath决定搜索class的路径和顺序;不推荐设置系统环境变量classpath,始终建议通过-cp命令传入;jar包相当于目录,可以包含很多.class文件,方便下载和使用;MANIFEST.MF文件可以提供jar包的信息,如Main-Class,这样可以直接运行jar包。小结参考链接Java 9引入的模块目的是为了管理依赖;使用模块可以按需打包JRE;使用模块对类的访问权限有了进一步限制。...

2021-08-21 17:08:54 56

转载 面向对象基础——内部类

目录小结Inner ClassAnonymous ClassStatic Nested Class小结Java的内部类可分为Inner Class、Anonymous Class和Static Nested Class三种:Inner Class和Anonymous Class本质上是相同的,都必须依附于Outer Class的实例,即隐含地持有Outer.this实例,并拥有Outer Class的private访问权限;Static Nested Class是独立类,但拥有Outer Clas

2021-08-21 11:56:10 55

转载 面向对象基础——包和作用域

目录包小结作用域小结publicprivateprotectedpackage局部变量final包小结Java内建的package机制是为了避免class命名冲突;JDK的核心类使用java.lang包,编译器会自动导入;JDK的其它常用类定义在java.util.,java.math.,java.text.*,……;包名推荐使用倒置的域名,例如org.apache。作用域小结Java内建的访问权限包括public、protected、private和package权限;Java在

2021-08-21 11:18:07 265 1

转载 面向对象基础——静态字段和静态方法

目录小结静态字段静态方法接口的静态字段小结静态字段属于所有实例“共享”的字段,实际上是属于class的字段;调用静态方法不需要实例,无法访问this,但可以访问静态字段和其他静态方法;静态方法常用于工具类和辅助方法。静态字段在一个class中定义的字段,我们称之为实例字段。实例字段的特点是,每个实例都有独立的字段,各个实例的同名字段互不影响。还有一种字段,是用static修饰的字段,称为静态字段:static field。实例字段在每个实例中都有自己的一个独立“空间”,但是静态字段只有一

2021-08-21 10:07:00 88

转载 面向对象基础——接口

目录小结术语接口继承继承关系default方法小结Java的接口(interface)定义了纯抽象规范,一个类可以实现多个接口;接口也是数据类型,适用于向上转型和向下转型;接口的所有方法都是抽象方法,接口不能定义实例字段;接口可以定义default方法(JDK>=1.8)。在抽象类中,抽象方法本质上是定义接口规范:即规定高层类的接口,从而保证所有子类都有相同的接口实现,这样,多态就能发挥出威力。如果一个抽象类没有字段,所有方法全部都是抽象方法:abstract class Pers

2021-08-20 19:30:03 150

转载 面向对象基础——抽象类

目录小结抽象类面向抽象编程小结通过abstract定义的方法是抽象方法,它只有定义,没有实现。抽象方法定义了子类必须实现的接口规范;定义了抽象方法的class必须被定义为抽象类,从抽象类继承的子类必须实现抽象方法;如果不实现抽象方法,则该子类仍是一个抽象类;面向抽象编程使得调用者只关心抽象方法的定义,不关心子类的具体实现。由于多态的存在,每个子类都可以覆写父类的方法,例如:class Person { public void run() { … }}class Student

2021-08-20 17:31:26 118

转载 面向对象基础——多态

目录小结覆写(@Override)多态覆写Object方法调用superfinal小结子类可以覆写父类的方法(Override),覆写在子类中改变了父类方法的行为;Java的方法调用总是作用于运行期对象的实际类型,这种行为称为多态;final修饰符有多种作用:final修饰的方法可以阻止被覆写;final修饰的class可以阻止被继承;final修饰的field必须在创建对象时初始化,随后不可修改。覆写(@Override)在继承关系中,子类如果定义了一个与父类方法签名完全相同的

2021-08-20 15:04:22 58

转载 面向对象基础——继承

目录小结继承树protectedsuper阻止继承向上转型向下转型区分继承和组合练习小结继承是面向对象编程的一种强大的代码复用方式;Java只允许单继承,所有类最终的根类是Object;protected允许子类访问父类的字段和方法;子类的构造方法可以通过super()调用父类的构造方法;可以安全地向上转型为更抽象的类型;可以强制向下转型,最好借助instanceof判断;子类和父类的关系是is,has关系不能用继承。Java使用extends关键字来实现继承:class Per

2021-08-20 07:58:13 175

转载 面向对象基础——方法重载

小结方法重载是指多个方法的方法名相同,但各自的参数不同;重载方法应该完成类似的功能,参考String的indexOf();重载方法返回值类型应该相同。在一个类中,我们可以定义多个方法。如果有一系列方法,它们的功能都是类似的,只有参数有所不同,那么,可以把这一组方法名做成同名方法。例如,在Hello类中,定义多个hello()方法:class Hello { public void hello() { System.out.println("Hello, world!"

2021-08-19 23:34:45 157

转载 面向对象基础——构造方法

目录默认构造方法多构造方法小结通过构造方法,在创建对象实例时就把内部字段全部初始化为合适的值创建实例的时候,实际上是通过构造方法来初始化实例的。我们先来定义一个构造方法,能在创建Person实例的时候,一次性传入name和age,完成初始化:// 构造方法public class Main { public static void main(String[] args) { Person p = new Person("Xiao Ming", 15); S

2021-08-19 23:24:06 137

转载 面向对象基础——方法

面向对象基础——方法本文参考链接目录面向对象基础——方法private方法this变量可变参数参数绑定小结一个class可以包含多个field,例如,我们给Person类就定义了两个field:class Person { public String name; public int age;}但是,直接把field用public暴露给外部可能会破坏封装性。比如,代码可以这样写:Person ming = new Person();ming.name = "Xiao Min

2021-08-19 08:04:49 206

转载 前端监控和前端埋点

参考: https://zhuanlan.zhihu.com/p/65834362目的获取用户基本信息、行为以及跟踪产品在用户端的使用情况,并以监控数据为基础,指明产品优化的方向。前端监控类别前端监控可以分为三类:数据监控、性能监控和异常监控。数据监控数据监控,就是监听用户信息和行为,常见的监控项有:PV(page view 页面访问量):即页面浏览量或点击量UV(unique visitor 独立访客):指访问某个站点或点击某条新闻的不同 IP 地址的人数用户在每一个页面的停留时间用户

2021-08-02 11:15:45 148

Java集合知识点思维导图.xmind

Java集合知识点思维导图.xmind

2021-09-05

Java泛型x详细知识点思维导图.xmind

Java泛型x详细知识点思维导图.xmind

2021-09-01

Java注解详细知识点思维导图.xmind

Java注解详细知识点思维导图.xmind

2021-08-29

java反射知识点详细思维导图.xmind

java反射知识点详细思维导图.xmind

2021-08-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除