【基础】Java基础
文章平均质量分 91
IT码客
明日复明日,明日何其多,以此博文来约束自己,多学习,多总结。如不巧能帮助他人,实属本人之荣幸。
展开
-
Java 常识(005):Java中final、finally、finalize
## 简述1. final 可以用来修饰类、方法、变量,分别有不同的意义:final 修饰的 class 代表不可以继承扩展final 的变量是不可以修改的final 的方法也是不可以重写的(override)finally 则是 Java 保证重点代码一定要被执行的一种机制。我们可以使用 try-finally 或者 try-catch-finally 来进行类似关...原创 2018-05-16 22:57:16 · 148 阅读 · 0 评论 -
Java 常识(012):hashCode 和 equals 的区别
Java的基类Object提供了一些方法,其中equals()方法用于判断两个对象是否相等,hashCode()方法用于计算对象的哈希码。equals()和hashCode()都不是final方法,都可以被重写(overwrite)。1、equals 方法Object类中equals()方法实现如下: public boolean equals(Object obj) { ...原创 2019-02-17 14:51:22 · 397 阅读 · 1 评论 -
Java 8(二):Lambda 表达式
文章目录1、认识Lambda表达式1.1、Lambda表达式语法1.2、Lambda 表达式示例2、函数式接口(Functional interfaces)2.1、Predicate2.2、Consumer2.3、Function3、类型检查4、类型推断5、变量作用域5.1、Lambda使用局部变量的限制5.2、为什么对局部变量限制6、方法引用6.1、如何构建方法引用6.2、Lambda构造函数引...原创 2019-07-13 23:39:02 · 565 阅读 · 0 评论 -
Java 8(一):行为参数化
文章目录1、认识行为参数化2、示例推演行为参数化2.1、筛选绿苹果2.2、颜色作为参数筛选2.3、多个属性作为参数筛选2.4、行为参数化2.5、根据抽象条件筛选2.6、使用匿名类2.7、使用Lambda表达式2.8、List 类型抽象化3、行为参数化在 Java API中的应用实例3.1、用 Comparator 排序3.2、用 Runnable 执行代码块1、认识行为参数化通过相关书籍或网络...原创 2019-06-30 15:57:29 · 686 阅读 · 0 评论 -
Java 8(三):Stream 流的认识及简单应用
文章目录1、什么是流(Stream)2、为什么需要流(Stream)3、Java 流(Stream) 和 集合(Collection)4、流(Stream)的构成5、流(Stream)的使用5.1、流(Stream)的操作类型5.2、流(Stream)的创建5.2.1、空流(Empty Stream)5.2.2、通过集合(Collection)创建5.2.3、通过数组(Array)创建5.2.4、...原创 2019-07-15 22:26:48 · 400 阅读 · 0 评论 -
Java 8(四):Stream 收集器
文章目录1、Collectors 收集器简介2、Collectors 收集器常用静态方法3、预定义收集器3.1、归约汇总3.1.1、Collectors.counting()3.1.2、Collectors.minBy、Collectors.maxBy3.1.3、Collectors.summingInt、Collectors.summingLong、Collectors.summingDoubl...原创 2019-07-18 23:05:57 · 418 阅读 · 0 评论 -
Java 8(五):默认方法(Default Methods)
文章目录1、简介2、java 8中的默认方法是什么?3、为什么java 8中需要默认方法?4、调用默认方法时如何解决冲突?1、简介Java 程序的接口是将相关方法按照约定组合到一起的方式。实现接口的类必须为接口中定义的每个方法提供具体的实现,或者从父类中继承它。但是,一旦接口更新,现有的实体类为了适配接口也需要进行更新。Java 8为了解决这一问题引入了一种新的机制。Java 8中的接口现在...原创 2019-07-21 11:36:30 · 850 阅读 · 0 评论 -
Java 8(六):Optional 空值(NULL)处理
文章目录1、简介2、什么是null类型3、只返回null有什么问题?4、Java 8 Optionals 如何提供解决方案?4.1、创建 Optional 对象4.1.1、Optional.empty()4.1.2、Optional.of()4.1.3、Optional.ofNullable()4.2、默认/缺省值和操作4.3、使用过滤方法(filter)排除某些值5、Optional 内部是如何...原创 2019-07-21 23:06:47 · 8295 阅读 · 0 评论 -
Java 8(七):新的Date 和 Time API
文章目录1、为什么会引入新的API2、java.time 包2.1、java.time2.2、java.time.chrono2.3、java.time.format2.4、java.time.temporal2.5、java.time.zone3、用于表示本地日期和时区的新类3.1、java.time.LocalDate3.1.1、创建当前日期和特定日期3.1.2、从LocalDate获取年,月...原创 2019-08-02 14:58:36 · 744 阅读 · 0 评论 -
Java 常识(013):Java中的super关键字
文章目录1、Java 中 super 是什么2、为什么要用 super 关键字3、Java 中 super 的用法3.1、使用 super 调用父类的构造方法3.2、引用父类实例变量3.3、调用父类方法4、super 关键字与 this 关键字的区别1、Java 中 super 是什么java中的super关键字是一个引用变量,用于引用直接父类对象。每当创建子类的实例时,父类的实例被隐式创建...原创 2019-08-10 23:39:00 · 6002 阅读 · 1 评论 -
Java 常识(011):聊聊Java字符串String的那些事
1、String 为什么被定义为不可变?详见:https://blog.csdn.net/u010647035/article/details/874735422、String 字符串创建有哪些方式?区别是什么?详见:https://mp.csdn.net/mdeditor/87477876#3、String 字符串编码如何转换?String s1 = "Hello World";St...原创 2019-02-16 22:47:44 · 241 阅读 · 0 评论 -
Java 常识(010):Java字符串创建使用双引号或构造函数?
在Java 中有两种创建字符串的方式,一种是使用双引号、另一种是使用构造函数,本文就来说一下二者有什么区别?String x = "abc";String y = new String("abc");1、双引号 vs 构造函数这里使用两个代码示例来比较二者之间的区别,如下示例1:String a = "abcd";String b = "abcd";System.out.prin...原创 2019-02-16 22:24:41 · 457 阅读 · 0 评论 -
Java 常识(009):看图理解Java中String的不可变
下面将用一组图来说明Java String的不变性1、定义一个字符串String s = "abcd";变量s存储字符串对象的引用,如下所示2、赋值给另一个字符串变量String s2 = s;s2保存了相同的引用值,因为他们代表同一个对象。3、字符串连接(concat)s = s.concat("ef");此时,s中保存的是一个重新创建出来的string对象的引用。...原创 2019-02-16 21:53:25 · 139 阅读 · 0 评论 -
Java 常识(004):Java异常Error和Exception
简述程序运行时,发生了不被期望的结果,阻止了程序按照预期正常执行,这就是异常。世界上没有不出错的程序,只有正确处理好意外情况,才能保证程序的可靠性。Java 语言在设计之初就提供了相对完善的异常处理机制,这也是 Java 得以大行其道的原因之一,因为这种机制大大降低了编写和维护可靠程序的门槛。如今,异常处理机制已经成为现代编程语言的标配。异常处理机制能让程序在异常发生时,按照代码的预先...原创 2018-05-20 14:27:15 · 7505 阅读 · 0 评论 -
Java 常识(006):Java中String、StringBuffer、StringBuilder
String 对象String 创建机制String 是 Java 语言中非常基础和重要的类,提供了构造和管理字符串的各种基本逻辑,由源码可知,它是典型的 Immutable (不可变)类,被final class 修饰并且所有属性也都是 final 的。也由于它的不可变性,类似拼接、截取字符串等操作,都会产生新的 String 的对象。public final class S...原创 2018-05-16 21:51:25 · 267 阅读 · 0 评论 -
Java 常识(003):Java中jdk代理和cglib代理
代理模式给某一个对象提供一个代理,并由代理对象控制对原对象的引用。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。在Java中代理模式从实现方式上可以分为两个类别:静态代理和动态代理静态代理: 也就是我们学习设计模式之代理模式时常见的事例,具体不在赘述,参见:【Java设计模式-13代理模式】动态代理: 在静态代理中,因...原创 2018-06-24 19:09:43 · 195 阅读 · 0 评论 -
Java 常识(002):常用日志框架(log4j,slf4j,logback)有啥区别
1、概述相信目前大多数情况下,不管是开源框架或是平时我们工作编码中都离不开一种框架,它就是日志框架。因此本节就简单了解一下我们常用日志框架的区别。2、Commons Loggingcommon-logging是apache提供的一个通用的日志接口,在common-logging中,有一个Simple logger的简单实现,但是它功能很弱,所以使用common-logging,通常都是配合...原创 2018-12-16 15:05:53 · 1117 阅读 · 0 评论 -
Java 常识(001):Annotation 注解
1、概念注释(一种元数据形式)提供有关不属于程序本身的程序的数据。 注释对它们注释的代码的操作没有直接影响。注释有许多用途,其中包括:编译器信息(Information for the compiler):编译器可以使用注释来检测错误或抑制警告。编译时和部署时处理(Compile-time and deployment-time processing):软件工具可以处理注释信息以生...原创 2019-01-13 11:23:53 · 240 阅读 · 0 评论 -
Java 常识(007):RPC 服务 与 HTTP 服务的区别
1、什么是RPCRPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。RPC采用客户机/服务器(c/s)模式。请求程...原创 2019-01-20 15:59:58 · 1297 阅读 · 0 评论 -
Java 8 新特性指南
1、简介Java 8 已经发布很久了,事实已经证明 Java 8 是一次重大的版本升级。在网上已经有很多介绍Java 8 新特性的文章,我也看了不少,都挺好的。为什么我还要再写关于Java 8 的文章呢,原因很简单:「我需要」。有些“轮子”还是需要重复造的,比如“学习”这个轮子,别人文章写得很棒,那是因为别人用心学习和总结的成果,你虽然看到这些文章产生了一些共鸣,但这些技能你真正掌握了吗?虽然...原创 2019-01-26 21:36:55 · 659 阅读 · 0 评论 -
Java 常识(008):为什么String在Java中是不可变的?
String是Java中一个不可变的类,所以他一旦被实例化就无法被修改。不可变类的实例一旦创建,其成员变量的值就不能被修改。不可变类有很多优势。本文总结了为什么字符串被设计成不可变的。将涉及到内存、同步和数据结构相关的知识。1、字符串池的要求字符串池(String intern pool)是方法区的特殊存储区域。创建字符串时,如果池中已存在该字符串时,将返回现有字符串的引用,而不是创建新对象。...原创 2019-02-16 21:14:30 · 780 阅读 · 0 评论 -
Java 常识(014):什么是AIO、BIO、NIO
本文旨在理解Java IO的几种类型,不会过多深入讲解,不过笔者已经计划用一个系列来讲解IO,敬请期待。。。文章目录1、Java IO 简介2、BIO(同步阻塞I/O模型)2.1、什么是BIO2.2、BIO 阻塞IO模型2.3、BIO网络编程3、AIO(异步非阻塞I/O模型)3.1、什么是AIO(Asynchronous I/O)3.2、AIO 异步IO模型3.3、AIO 网络编程4、NIO(...原创 2019-08-11 01:54:47 · 471 阅读 · 0 评论