Skip to content

帮助学习 Java SE 标准库的项目,对 JDK 中的常用包和类都设计了简单有趣的编程题目,并且提供了完整的单元测试用例来帮助你检测你的答案,同时还提供了一套完整的参考实现供参考。

License

Notifications You must be signed in to change notification settings

terry83299387/javase-study

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

javase-study:Java Standard Edition(Java SE)学习工具

项目简介

本项目可以用来帮助学习 Java SE 标准库,也可以用于检查学习成果。

项目基于 JDK 8,它具有以下特点:

  1. 覆盖面广

    覆盖 JDK 中所有的常用包和类;

  2. 难度适中、简单但有趣

    大多数题目都是对初学者友好的,同时也尽量兼顾趣味性,很多题目都具有实际应用的背景(可能会做一些简化);

  3. 提供完整的单元测试用例来帮助检测答案

    每个题目在设计时都兼顾了可测试性,并编写对应的测试用例。一键运行即可轻松检测答案;

  4. 为每个题目提供了一套完整的参考实现

    参考实现并不是“标准答案”,仅用来在“卡壳”时为您提供思路。请尽量独自完成题目。

如何开始?

将项目克隆到你的本地,然后打开任何一个包中的类,你就能知道怎么做了。例如:

例如,对于 Java 语言基础中的表达式 中的一个题目:

/**
 * num 是一个 int 类型的整数,请计算并返回其平方值。
 * 注:为了防止结果溢出,应以 long 型来存储结果。
 */
public long square(int num) {
	// TODO your code goes here
	return 0;
}

文档注释中的内容即为题目的要求(本项目的所有题目都遵照这种方式)。按照题目要求,下面是实现之后的代码:

/**
 * num 是一个 int 类型的整数,请计算并返回其平方值。
 * 注:为了防止结果溢出,应以 long 型来存储结果。
 */
public long square(int num) {
	long result = (long) num * (long) num;
	return result;
}

等到部分或全部题目完成后,即可运行测试来检查成果了。

运行测试

请按照以下步骤来运行本项目。

  1. 按照要求编写代码,完成题目

  2. 修改 resources 中的 config.ini

    将“test_answers”设置为 true,以允许运行题目的测试用例。
    如果不希望运行参考实现的测试用例,可将“test_refimpl”设置为 false。
    如果有必要,可修改“ignore_pkg”,此配置项用来指定测试时需要忽略的包(即不运行这些包的测试用例)。

  3. 运行测试用例

    以 Eclipse 为例,只需在项目上右键,然后选择“Run As” -> “JUnit Test”即可。

注:不需要等到全部题目都完成后再运行测试用例,每完成一部分都可以运行一次,从而检查阶段性成果。有问题能够及时修改和更正。

项目中包含的包

本项目通过 Java 包将 Java SE 所包含的知识点分成若干个类别,大部分的包都是一目了然的。

  • study.javase.assist

          该包及其子包中的类是辅助类,供其他包使用。

  • study.javase.refimpl

          本包及其子包是本项目中包含的题目的参考实现,供参考。

  • study.javase.langbasic

          与 Java 语言相关的基本概念,以及常用的类和接口的使用。推荐初学者先从这里开始

  • study.javase.string

          Java 字符串和相关的类。

  • study.javase.string.regex

          正则表达式。

  • study.javase.enum_type

          Java 枚举类型。

  • study.javase.reflect

          Java 反射和动态代理。

  • study.javase.generic

          Java 泛型。

  • study.javase.annotation

          Java 注解。

  • study.javase.collection

          Java 集合框架(Java Collections Framework),包括普通集合和并发集合。

  • study.javase.collection.lagacy

          Java 早期的集合类(Vector、Hashtable 等)

  • study.javase.functional

          lambda 表达式和函数接口(java.util.function)、方法引用相关的知识,以及 java.util.stream.Stream 的使用。

  • study.javase.time

          Java 时间和日期 API 的使用(java.time 包)。

  • study.javase.time.lagacy

          Java 早期的时间和日期 API(Date、Calendar)。

  • study.javase.text

          java.text 包。

  • study.javase.util

          java.util 包中除集合、时间日期类之外的其他工具类。

  • study.javase.math

          java.math 包的使用。

  • study.javase.security

          Java 安全。

  • study.javase.security.policy

          Java 安全策略的配置和使用。

  • study.javase.io

          java.io 包的使用。

  • study.javase.nio

          java.nio 包的使用。

  • study.javase.net

          java.net 包的使用。

  • study.javase.logging

          Java 日志框架的使用。

  • study.javase.classloader

          Java 类加载机制。

  • study.javase.beans

          Java Beans。

  • study.javase.i18n

          Java 国际化。

  • study.javase.jdbc

          JDBC。

  • study.javase.jndi

          JNDI。

  • study.javase.jmx

          JMX。

  • study.javase.rmi

          RMI。

  • study.javase.jni

          JNI。

  • study.javase.xml

          Java XML。

  • study.javase.reference

          java.lang.ref 包的使用。


以下包默认不进行单元测试:

  • study.javase.accessibility

          Java Accessibility API。

  • study.javase.script

          Java 脚本技术。

  • study.javase.awt

          Java AWT。

  • study.javase.awt.dd

          GUI 编程中的 Drag and Drop

  • study.javase.awt.graphic2d

          GUI 编程中的 Java 2D API。

  • study.javase.awt.imf

          GUI 编程中的 Java Input Method Framework

  • study.javase.swing

          Java Swing。

  • study.javase.sound

          Java 声音处理。

  • study.javase.imageio

          javax.imageio 及其子包。

  • study.javase.deployment

          与应用部署相关的内容,目前仅包括 Web Start 应用的部署,不包括 Applet 相关内容。

  • study.javase.deployment.jnlp

          jnlp api

  • study.javase.ext_mechanism

          Java 扩展技术(Java Extension Mechanism)。

  • study.javase.fullscreen_exclusive

          全屏独占模式(full-screen exclusive mode)的使用。

  • study.javase.jpda

          Java Platform Debugger Architecture,Java 平台调试架构。

  • study.javase.jvmti

          JVM Tool Interface,JVM 工具接口。

  • study.javase.net.sdp

          Socket Direct Protocol 的使用(InfiniBand)。

  • study.javase.print

          javax.print 包的使用。

  • study.javase.tools

          Java 常用工具的使用。(https://docs.oracle.com/javase/8/docs/technotes/tools/index.html

  • study.javase.tools.attach

          Dynamic Attach

  • study.javase.tools.jconsole

          JConsole Accessing API

如何参与项目及报告 bug

可以在线提 PRIssues,也可以给我发邮件:qiaomingkui@163.com

另外,欢迎 star!

贡献者名单

Terry Qiao

目前仅有我一人,期待您的参与。

版权声明

本项目遵守 Apache License 2.0。

About

帮助学习 Java SE 标准库的项目,对 JDK 中的常用包和类都设计了简单有趣的编程题目,并且提供了完整的单元测试用例来帮助你检测你的答案,同时还提供了一套完整的参考实现供参考。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages