Java
AYJCSGM
屠龙者终将成为恶龙。
展开
-
Java学习路线,从入门到入土(适用面试前的复习)
JVM 1. 内存模型( 内存分为几部分? 堆溢出、栈溢出原因及实例?线上如何排查?) ...原创 2019-09-30 19:08:38 · 547 阅读 · 0 评论 -
《Java 编程思想》第七章 封装(JDK 8版)
文章目录封装包的概念代码组织创建独一无二的包名冲突定制工具库使用 import 改变行为使用包的忠告访问权限修饰符包访问权限public: 接口访问权限默认包private: 你无法访问protected: 继承访问权限包访问权限 Vs Public 构造器接口和实现类访问权限本章小结封装访问控制(Access control)(或者隐藏实现(implementation hiding))与“最初的实现不恰当”有关。所有优秀的作者——包括那些编写软件的人——都知道一件好的作品都是经过反复打磨才变原创 2020-06-09 15:59:34 · 816 阅读 · 0 评论 -
《Java 编程思想》第六章 初始化和清理(JDK 8版)
文章目录初始化和清理利用构造器保证初始化方法重载区分重载方法重载与基本类型返回值的重载无参构造器this关键字在构造器中调用构造器static 的含义垃圾回收器`finalize()` 的用途你必须实施清理终结条件垃圾回收器如何工作成员初始化指定初始化构造器初始化初始化的顺序静态数据的初始化显式的静态初始化非静态实例初始化数组初始化动态数组创建可变参数列表枚举类型本章小结初始化和清理"不安全"的编程是造成编程代价昂贵的罪魁祸首之一。有两个安全性问题:初始化和清理。C 语言中很多的 bug 都是因为程序原创 2020-06-09 10:47:34 · 1000 阅读 · 0 评论 -
try catch finally的return机制你真的了解吗?
前言java 中的异常处理机制你真的理解了吗?掌握了吗?catch 体里遇到 return 是怎么处理? finally 体遇到 return 怎么办?finally 体里有 System.exit() 方法怎么处理?当 catch 和 finally 体里同时遇上 return 怎么办?相信你在处理异常的时候不是每次都把它 throws 掉就完事了,很多时候异常是需要我们自己来 catch...原创 2020-04-08 16:35:14 · 249 阅读 · 0 评论 -
适用于高级Java开发人员的十大网站
这是我为高级Java开发人员准备的网站的集合。这些网站提供新闻,常见问题或访谈问题的答案,精彩的讲座等。质量是好的网站的关键因素。我认为它们都具有最高的质量。1. StackoverflowStackoverflow.com可能是编程世界上最受欢迎的网站。有数百万个很好的问题和答案。学习API或编程语言通常依赖于代码示例,stackoverflow有很多代码段。关于stackoverflow...原创 2020-01-31 10:32:12 · 2426 阅读 · 0 评论 -
Java 13新特性概述
Java 13 已如期于 2019 年 9 月 17 日正式发布,此次更新是继半年前 Java 12 这大版本发布之后的一次常规版本更新,在这一版中,主要带来了 ZGC 增强、更新 Socket 实现、Switch 表达式更新等方面的改动、增强。本文主要针对 Java 13 中主要的新特性展开介绍,带你快速了解 Java 13 带来的不同体验。动态应用程序类-数据共享在 Java 10 中,...原创 2020-01-14 16:05:45 · 752 阅读 · 0 评论 -
面向对象七种设计原则
文章目录1、面向对象设计原则概述2、单一职责原则3、开闭原则4、里氏代换原则5、依赖倒转原则6、接口隔离原则7、合成复用原则8、迪米特法则1、面向对象设计原则概述 对于面向对象软件系统的设计而言,在支持可维护性的同时,提高系统的可复用性是一个至关重要的问题,如何同时提高一个软件系统的可维护性和可复用性是面向对象设计需要解决的核心问题之一。在面向...原创 2019-12-19 16:14:59 · 416 阅读 · 0 评论 -
如何优化自己的代码,让性能更上一层楼
1、 尽量指定类的final修饰符 带有final修饰符的类是不可派生的。 如果指定一个类为final,则该类所有的方法都是final。Java编译器会寻找机会内联(inline)所有的 final方法(这和具体的编译器实现有关)。此举能够使性能平均提高50% 。2、 尽量重用对象。 特别是String 对象的使用中,出现字符串连接情况时应用StringBuffe...原创 2019-12-13 21:58:51 · 680 阅读 · 0 评论 -
解析JDK8中Arrays.sort底层原理及其排序算法的选择
暂时网上看过很多JDK8中Arrays.sort的底层原理,有些说是插入排序,有些说是归并排序,也有说大于域值用计数排序法,否则就使用插入排序。。。其实不全对。让我们对着源码分析个究竟: // Use Quicksort on small arrays if (right - left < QUICKSORT_THRESHOLD) {//QUICKSORT_THRESHOLD = 286...原创 2019-12-11 20:14:25 · 1376 阅读 · 2 评论 -
为什么 String 的 hashCode 选择 31 作为乘子
某天,我在写代码的时候,无意中点开了 String hashCode 方法。然后大致看了一下 hashCode 的实现,发现并不是很复杂。但是我从源码中发现了一个奇怪的数字,也就是本文的主角31。这个数字居然不是用常量声明的,所以没法从字面意思上推断这个数字的用途。后来带着疑问和好奇心,到网上去找资料查询一下。在看完资料后,默默的感叹了一句,原来是这样啊。那么到底是哪样呢?在接下来章节里,请大家带...原创 2019-12-11 16:22:01 · 172 阅读 · 0 评论 -
Java 日期时间
1、Datejava.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象。第一个构造函数使用当前日期和时间来初始化对象。Date( )第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。Date(long date)2、Date常用方法3、使用printf格式化日期printf 方法可以很轻松地格式化...原创 2019-12-09 20:27:03 · 143 阅读 · 0 评论 -
Java异常
1 、异常的思维导图2、JAVA异常分类1.1、概念如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返回任何值。另外,调用这个方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器。1.2、异常分类Throwable是 Java 语言中所有错误或异常的超类。下一层分为Erro...原创 2019-12-09 20:16:50 · 119 阅读 · 0 评论 -
Java8 Base64
在Java 8中,Base64编码已经成为Java类库的标准。Java 8 内置了 Base64 编码的编码器和解码器。Base64工具类提供了一套静态方法获取下面三种BASE64编解码器:基本:输出被映射到一组字符A-Za-z0-9+/,编码不添加任何行标,输出的解码仅支持A-Za-z0-9+/。URL:输出映射到一组字符A-Za-z0-9+_,输出是URL和文件。MIME:输出隐射...原创 2019-11-15 20:08:05 · 240 阅读 · 0 评论 -
Java 8 日期时间 API
Java 8通过发布新的Date-Time API (JSR 310)来进一步加强对日期与时间的处理。在旧版的 Java 中,日期时间 API 存在诸多问题,其中有:非线程安全 − java.util.Date 是非线程安全的,所有的日期类都是可变的,这是Java日期类最大的问题之一。设计很差 − Java的日期/时间类的定义并不一致,在java.util和java.sql的包中都有...原创 2019-11-15 20:05:44 · 176 阅读 · 0 评论 -
Java 8 Nashorn JavaScript
Nashorn 一个 javascript 引擎。从JDK 1.8开始,Nashorn取代Rhino(JDK 1.6, JDK1.7)成为Java的嵌入式JavaScript引擎。Nashorn完全支持ECMAScript 5.1规范以及一些扩展。它使用基于JSR 292的新语言特性,其中包含在JDK 7中引入的 invokedynamic,将JavaScript编译成Java字节码。与先前的...原创 2019-11-15 20:02:19 · 210 阅读 · 0 评论 -
Java 8 Optional 类
Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。Optional 类的引入很好的解决空指针异常。类声明以下是一个 java.util.Optional 类的声明:...原创 2019-11-15 19:59:47 · 161 阅读 · 0 评论 -
Java 8 Stream
Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。Stream API可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理,...原创 2019-11-15 19:57:52 · 192 阅读 · 0 评论 -
Java 8 默认方法
Java 8 新增了接口的默认方法。简单说,默认方法就是接口可以有实现方法,而且不需要实现类去实现其方法。我们只需在方法名前面加个 default 关键字即可实现默认方法。为什么要有这个特性?首先,之前的接口是个双刃剑,好处是面向抽象而不是面向具体编程,缺陷是,当需要修改接口时候,需要修改全部实现该接口的类,目前的 java 8之前的集合框架没有 foreach方法,通常能想到的解决...原创 2019-11-15 19:51:56 · 221 阅读 · 0 评论 -
Java 8 函数式接口
函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。函数式接口可以被隐式转换为 lambda 表达式。Lambda 表达式和方法引用(实际上也可认为是Lambda表达式)上。如定义了一个函数式接口如下:@FunctionalInterfaceinterface GreetingService { void sayM...原创 2019-11-15 19:48:15 · 239 阅读 · 0 评论 -
Java 8 方法引用
方法引用通过方法的名字来指向一个方法。方法引用可以使语言的构造更紧凑简洁,减少冗余代码。方法引用使用一对冒号 :: 。下面,我们在 Car 类中定义了 4 个方法作为例子来区分 Java 中 4 种不同方法的引用。package com.runoob.main; @FunctionalInterfacepublic interface Supplier<T> { ...原创 2019-11-15 19:43:52 · 175 阅读 · 0 评论 -
Java 8 Lambda 表达式
Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用 Lambda 表达式可以使代码变的更加简洁紧凑。语法lambda 表达式的语法格式如下:(parameters) -> expression或(parameters) ->{ statements; }以下是la...原创 2019-11-15 19:41:31 · 220 阅读 · 0 评论 -
Java 8 新特性
Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。新特性Java8 新增了非常多的特性,我们主要讨论以下几个:Lambda 表达式 − Lambda 允许把函数作为一个方法的参数(函数...原创 2019-11-15 19:36:43 · 302 阅读 · 0 评论