Coder Social home page Coder Social logo

modern-java-demos's Introduction

Modern Java: From Java 8 to Java 22.

现代Java案例大全

《Java核心编程》源码

内容简介

现代Java案例大全,包含从 Java 8 到 Java 22 所有新特性及其案例。学习 Java 的同志们,燥起来!

技术版本如下:

  • JDK 22
  • Eclipse IDE for Java Developers 2023-09
  • JUnit 5.5.1
  • ...

源码

所有示例源码,移步至https://github.com/waylau/modern-java-demos/ samples 目录下。

工程代码可以直接导入Eclipse IDE。

文章

配套书籍《Java核心编程》

与该源码配套的书籍《Java核心编程》已经出版,内容详见全书目录

本书如有勘误,会在https://github.com/waylau/https://github.com/waylau/modern-java-demos/issues上进行发布。由于笔者能力有限,时间仓促,难免错漏,欢迎读者批评指正。

您也可以上豆瓣给老卫打Call。

如何获取本书

实体店及各大网店有售。据我所知有如下网站供应:

想低于市价得到本书?来二手书集市试试看。

也可以直接关注我博客(https://waylau.com/)或者我的开源书(https://waylau.com/books/)了解更多免费咨询。

联系作者

您也可以直接联系我:

其他书籍

若您对本书不感冒,笔者还写了其他方面的超过一打的书籍(可见https://waylau.com/books/),多是开源电子书。

本人也维护了一个books-collection项目,里面提供了优质的专门给程序员的开源、免费图书集合。

开源捐赠

开源捐赠

捐赠所得所有款项将用于开源事业!见捐赠列表。

modern-java-demos's People

Contributors

waylau avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

modern-java-demos's Issues

《Java核心编程》2020年6月第1版第1次印刷勘误、改进项

2.1.2(p19)

“l和1长得很像,所以表示一个long型时,以免肉眼看错,建议以L结尾。”

改进为

“字母l和数字1长得很像,所以表示一个long型时,以免肉眼看错,建议以L结尾。”

2.1.2(p20)

最后一段代码:

float f1 =10;  
f1 = 10.0;  // 为double类型

改进为:

float f1 =10;  
f1 = 10.0;  // 编译失败,因为10.0为double类型,不能将double转为float

2.1.4(p22)

“加上4为十六进制的数表示”应为“加上4位十六进制的数表示”

8.5.1(p199)

该页第二段代码开头多了“```java”字样。应为;

SynchronizedRGB color = new SynchronizedRGB(0, 0, 0, “Pitch Black”); 
… 
int myColorInt = color.getRGB(); // 语句1 
String myColorName = color.getName(); // 语句2

9.4.4(p218)

该页第二段代码,变量命名有误:

// 重复0次返回空字符串
var string = "foo";
var result2 = string.repeat(0);

assertEquals("", result2);

应为:

// 重复0次返回空字符串
var string = "foo";
var result1 = string.repeat(0);

assertEquals("", result1);

13.11.2(p308)

该页第二段排版有问题。应为:

可以看到,

  • supplier方法的实现为“ArrayList::new”,创建一个ArrayList对象并返回;
  • accumulator方法的实现为“List::add”,将流中的元素添加进上面创建的ArrayList对象;
  • combiner方法的实现为“(left, right) -> { left.addAll(right); return left;}”,对于两个中间结果容器ArrayList,将其中一个的所有元素添加进另外一个,并返回另外一个ArrayList;
  • characteristics方法的实现是返回静态常量CH_ID(它是一个包含了IDENTITY_FINISH的集合,标示中间结果是可以直接向最终结果进行强制类型转换的)。

14.5(p319)

第一段排版有问题。应为:

Java 8在List和Set接口中引入了几种方法:

  • removeIf删除与谓词匹配的元素。它可用于实现List或Set的所有类(并且从Collection接口继承)。
  • replaceAll在List上可用,并使用(UnaryOperator)函数替换元素。
  • sort也可在List界面上使用,并对列表本身进行排序。
    所有这些方法都会改变调用它们的集合。换句话说,它们改变了集合本身,而不像流操作那样产生新的(复制的)结果。

14.16.2(p330)

最后一段排版有问题。应为:

在上述代码中,

  • table代表整个HashMap。装载Node的数组,作为ConcurrentHashMap的数据容器,采用懒加载的方式,直到第一次插入数据的时候才会进行初始化操作,数组的大小总是2的幂次方。采用table数组元素作为锁,从而实现对每一行数据进行加锁,进一步减少并发冲突的概率。
  • nextTable是在扩容时使用的,平时为null,只有在扩容的时候才为非null。扩容完成后会被重置为null。
  • baseCount保存着整个哈希表中存储的所有节点的个数总和,有点类似于HashMap的size属性。
  • 无论是初始化还是扩容哈希表,都需要依赖这个sizeCtl。sizeCtl有以下几种取值:
    • 0,默认值;
    • -1,代表哈希表正在进行初始化;
    • 大于0,相当于HashMap中的threshold,表示阈值;
    • 小于-1,代表有多个线程正在进行扩容。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.