{ }codelper

学习 Java

用 Java 学习编程基础。每一课都有可运行的示例,以及与其他语言的差异说明。

A

基础

4 课
  1. 01在屏幕上输出第一行代码:输出文字和计算结果。
  2. 02变量和值给值起个名字,以后可以再用或修改。
  3. 03读取输入从键盘(标准输入)读取文字和数字。
  4. 04计算和除法加减乘在各语言中一样,除法却各不相同。
B

流程控制

4 课
  1. 05条件语句根据条件做不同的事:if · else if · else,还有 switch。
  2. 06循环把同一件事做很多次:for 和 while。
  3. 07更多循环逐个取值、倒着循环、读到结束标记、至少执行一次的 do-while。
  4. 08布尔值与三元运算符把真假存进变量、在两个值里选一个、问“是不是其中之一”。
C

数据

5 课
  1. 09字符串长度、大写、反转、取出一个字符。
  2. 10列表和数组把多个值排成一列:个数、首尾、求和、全部转换。
  3. 11处理单个字符把一个字符当作值:编码、字符运算、第 i 个字符、重复。
  4. 12拼接构建字符串一段一段拼出字符串、用分隔符连接、在一行里连着输出。
  5. 13修改列表判断是否包含、移除、反转、交换、用同一个值填充、复制。
D

函数

2 课
  1. 14函数给一段工作起名字,接收值并返回结果,还有递归。
  2. 15函数进阶变量的作用域、返回多个值、把函数当作值来传递。
E

进阶

10 课
  1. 16字典(映射)按键查找和修改值:统计单词、判断键是否存在、按键的顺序遍历。
  2. 17排序从小到大、从大到小,或按自己定的规则排列。
  3. 18二维列表(网格)由行和列组成的网格:读取、行和与列和,只在范围内查看相邻格子。
  4. 19字符串处理截取、查找、替换、去除首尾空白、比较、补齐对齐。
  5. 20整数与浮点数为什么 0.1 + 0.2 不等于 0.3,固定小数位输出,舍入规则,以及整数溢出。
  6. 21递归函数调用自己:终止条件、调用栈深度、循环与记忆化。
  7. 22常见错误与错误信息如何阅读错误信息,以及各种语言都会犯的错误:差一位、= 与 ==、整数除法、null、下标越界。
  8. 23绝对值、乘方、平方根去掉符号、连乘多次、求平方后等于某数的值。
  9. 24计数、累计、分组遍历一次:数出符合条件的个数,带着“到目前为止”的值,按键把数据归到一起。
  10. 25记录列表与枚举把记录收进列表,给固定的几种取值起名字。
F

算法

8 课
  1. 26模拟与暴力枚举照着题目的故事一步一步做,把候选一个不漏地都试一遍。
  2. 27栈与队列栈先取出后放入的,队列先取出先放入的。
  3. 28二分查找把有序的范围每次丢掉一半,找到某个值,或者第一个满足条件的位置。
  4. 29前缀和与双指针用一次减法求出区间和;让两个位置只向前移动来寻找区间。
  5. 30最大公约数、素数与进制用余数求最大公约数,用筛法筛出素数,把数写成别的进制。
  6. 31贪心与优先队列每一步都选眼下看起来最好的,再用一个能马上交出最小值的队列。
  7. 32图与深度优先搜索记下谁和谁相连,再把能到的地方一个不漏地走一遍。
  8. 33广度优先搜索与拓扑排序用队列从近处向外扩展求最少步数,并把任务排成先决条件在前的顺序。
G

各语言特有

3 课
  1. 37类与对象Python · JavaScript · TypeScript · Java · C# · C++把数据(字段)和行为(方法)放进同一个模板,再用它创建多个对象。
  2. 38接口与泛型TypeScript · Java · C#用接口约定“有这些方法”,用泛型让一个函数适用于多种类型。
  3. 39LINQ 与流Java · C#把筛选、转换、分组、排序连成一条管道,代替手写循环。