Java 8 之后都更新了些什么

前言

我最开始学 Java 是在 2017 年,那时候距离 Java 8 正式发布(2014年)已经过去3年了,因此我是直接从 Java 8 开始学习的。然而时至今日(2023年),我在网上仍然可以看到不少文章在介绍 “Java 新特性 - Stream、Lambda表达式”,拜托,那些都是快10年前的东西了,但还是有好多人固执地认为这些就是 Java 的最新特性。

这几年在公司里也见到不少项目仍然使用 Java 6,到了不得不升的时刻,也只敢升到 Java 8,而不敢进一步往上升了。很多程序员依然遵循着「你发任你发,我用Java 8」的原则。看来大家对 Java 8 真是爱之入骨。

那么,假如你是一个新项目的负责人,在新项目里你可以使用全新的技术栈而不用担心历史包袱,你敢不敢尝试新技术呢?要做出选择,这不得先了解一下 Java 8 之后,Java 主要都更新了些什么。

阅读更多

Java中的浅拷贝和深拷贝

引言

最近在复审代码时,发现组内一个同学写了这么一段代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public void process(ResultContext rc){

Map m1 = rc.getResult();
Map m2 = rc.getResult();

// m1 做一些get set处理
// ..

// m2 做一些get set处理
// ..

dao.insert(m1);
dao.insert(m2);
}

这段代码,本意是想从同一个 ResultContext 获取到原始数据,然后对这份数据做不同的加工,再分别保存。但这段代码实际上是有问题的。因为 m1m2 虽然是不同的引用,但实际上都指向了同一个对象,在修改 m1 的同时, m2 实际上也发生了改变,反之亦然

阅读更多

Java简明笔记(十七)注解

注解魔法

注解是一种标记。在 Java 中,随处可见@Override@Deprecated这样的注解。说实话,Java的注解经常不被重视,以至于学习的时候习惯性略过。在学了Spring框架后发现Spring使用了大量的注解来简化开发和配置,回过头来才发现注解的魅力。

阅读更多

Java简明笔记(十六)网络编程

socket_title

前言

网络编程,顾名思义就是编写通过网络通信的计算机程序。提到网络编程,一般指 socket 编程,之前我写过两篇相关的文章,分别是:浅谈 socket 编程Socket编程实践(Java & Python实现),主要侧重于 socket 编程的理解,而这一篇侧重于使用 Java 进行 socket 编程的要点,作为简明笔记,以备后续用到时方便查阅。

阅读更多

Java简明笔记(十五)Java NIO

什么是 Java NIO

Java NIO, N 可以理解为 New ,也可以理解为 Non-blocking ,是 Java 1.4 之后新的一套区别于标准 Java IO 和 Java Networking 的 API 。NIO 跟传统的 BIO 之间最大的区别在于 NIO 是面向 Channels 和 Buffers 的,一个线程可以通过 Selector 管理多个 Channels ,继而管理多个连接,在线程进行 IO 操作时不会阻塞。

阅读更多

Java中的回调机制

什么是回调(CallBack)呢?有一个经典的打电话例子。

有一天小王遇到一个很难的问题,问题是“1 + 1 = ?”,就打电话问小李,小李一下子也不知道,就跟小王说,等我办完手上的事情,就去想想答案,小王也不会傻傻的拿着电话去等小李的答案吧,于是小王就对小李说,我还要去逛街,你知道了答案就打我电话告诉我,于是挂了电话,自己办自己的事情,过了一个小时,小李打了小王的电话,告诉他答案是2

所谓回调:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法。

回调让模块与模块之间解耦,也实现了异步调用。

阅读更多

Java中的引用类型

什么是引用类型

引用类型(reference type)是一种基于类的数据类型。Java中,除去基本数据类型外,其它类型都是引用类型。包括Java提供的或者自己定义的class类。

当我们对某个对象声明一个变量的时候,例如

1
Ball b1 = new Ball();

变量 b1 事实上指向了这个对象的引用,而不是对象本身。

1
Ball b2 = b1;

b2 和 b1 都指向了 ball 类的同一个实例。

Java中有四种引用:

  • 强引用(Strong Reference)
  • 软引用(Soft Reference)
  • 弱引用(Weak Reference)
  • 虚引用(Phantom Reference)
阅读更多

Java简明笔记(十四)反射机制

Java 是完全面向对象语言。事实上,我们创建的每一个类,其实也是对象,称为类对象。类对象提供了类的元信息,比如这个类有几种构造方法,有多少个属性,有哪些普通方法等。

meta

Java反射机制主要提供了以下功能:

  • 在运行时判断任意一个对象所属的类;
  • 在运行时构造任意一个类的对象;
  • 在运行时判断任意一个类所具有的成员变量和方法;
  • 在运行时调用任意一个对象的方法;生成动态代理。
阅读更多

Java简明笔记(十三)JDBC

假设电脑已经安装有 MySQL,并在里面有一些表。现在,我们想通过 Java,来访问数据库里的表。

JDBC (Java DataBase Connection) 指的就是通过Java访问数据库。

这是我的数据库情况。

阅读更多