Java 小例子
捏造的信仰
这个人很懒,什么都没写。
展开
-
Java 小例子:通过 Socket 发送和接收文件
这是一个简单的包含发送端和接收端的例子。发送端向接收端发送文件名和文件内容,接收端将收到的文件保存在磁盘上。接收端可以同时接收多个发送端传来的文件,但没有处理文件同名的情况。这个例子中设计了一个简单的协议。发送的内容是这样的:文件名长度(4字节)—文件名—文件内容长度(4字节)—文件内容。接收端也按照这个结构进行解析。建议先看 Client 类,再看 Server 类。原创 2009-03-04 08:44:00 · 15842 阅读 · 18 评论 -
Java 小例子:读取和解压 zip 压缩包
这是一个演示如何读取和解压 zip 压缩包的例子。zip 压缩格式是一个开放的标准。import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import原创 2009-08-22 12:03:00 · 2072 阅读 · 0 评论 -
Java 小例子:行列式和鸡兔同笼问题
鸡兔同笼问题就是二元一次方程组,高等数学里面用行列式来解此方程。具体过程可 Google “行列式 二元一次方程组”。对于鸡兔同笼问题还要加上一个限制:方程的解必须是正整数。 下面是代码示例:/** * 鸡兔同笼问题。解法请 Google:“行列式 二元一次方程组” * * @author yiding.he */public class BinaryLinea原创 2009-11-24 09:59:00 · 3235 阅读 · 0 评论 -
Java 小例子:打印菱形
这个例子用星号(*)打印出一个菱形。没有什么技巧,完全是按部就班的代码。供初学者参考。原创 2010-08-02 15:20:00 · 2069 阅读 · 0 评论 -
Java 小例子:大数乘法和阶乘
这是一个不借助 BigInteger 来实现大数乘法的例子,顺便做了一个阶乘。大数乘法的实现是基于印度的格子乘法,使用这种方法,计算 m 位数乘以 n 位数只需要创建一个 m+n 位的数组保存结果即可。当然,这种方式效率绝不可能跟 BigInteger 比,但作为初学者的练习,是很有价值的。原创 2010-08-30 21:14:00 · 3398 阅读 · 0 评论 -
Java 小例子:创建和使用固定大小的线程池
Java 1.5 开始,提供了线程池供大家使用,功能还挺全的。下面是一个简单的例子。复杂的例子将放在后面几篇博客中。import java.util.List;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent原创 2011-06-29 12:59:00 · 7036 阅读 · 1 评论 -
Java 小例子:老手如何编写计算器
计算器不单单是练习如何布局,更重要的是如何实现复杂的运算逻辑。新手编写计算器,无疑会用到大量的 if-else。而熟练的开发人员知道如何避开这点。下面是代码。PS:我终于找到空间了。这里是编写过程的视频。import javax.swing.*;import javax.swing.border.Border;import java.awt.*;import原创 2009-04-15 17:24:00 · 11133 阅读 · 15 评论 -
Java 小例子:图书馆课程设计(Java 8 版)
用 Java 模拟一个图书馆。包括创建图书、创建读者、借书、还书、列出所有图书、列出过期未还的图书等功能。每个读者最多只能借 3 本书,每个书最多只能借 3 个星期。本例子包含 Java 8 的新语法元素,给初学者参考。原创 2014-11-04 12:51:06 · 4871 阅读 · 0 评论 -
Java 小例子:图书馆课程设计
用 Java 模拟一个图书馆。包括创建图书、创建读者、借书、还书、列出所有图书、列出所有读者、列出已借出的图书、列出过期未还的图书等功能。每个读者最多只能借 3 本书,每个书最多只能借 3 个星期,超过就算过期。 下面是一个命令行下的实现。这个例子的主要目的是向初学者展示内部类的好处。原创 2009-02-26 19:30:00 · 7574 阅读 · 19 评论 -
Java 小例子:按照顺时针或逆时针方向输出一个数字矩阵
题目:按照指定的长宽和输出方向,从外向内打印一个从 1 开始的数字矩阵,矩阵的开始位置在左上角。原创 2015-11-19 11:00:40 · 5678 阅读 · 1 评论 -
Java 小例子:如何使用 Enum
Java 在 1.5 以前,常量是个头疼的问题。因为一些参数只能取那么几个值,而从参数类型上又看不出来有哪些值可以取。从 1.5 开始 Java 引进了 Enum 枚举类型,并根据 Java 自身的特点将其进行了强化。实际上现在所有的常量都可以通过 Enum 来定义了。下面是一个例子,演示了 Enum 的基本用法,以及如何向 Enum 类型加入自定义属性。原创 2009-04-11 14:42:00 · 9269 阅读 · 2 评论 -
生成几率可配置的随机数
从 1-10 中产生若干个随机数,要求每个数字出现的几率可配置。解决方案:将 1-100 分成 10 段(段的大小可以为 0)。每生成一个 1-100 之间的随机数,就看它落在哪一段。如果是第一段,那么取随机结果为 1,依此类推。这样的话,段的宽度越大,随机数对应该段的几率就越大。原创 2009-10-27 13:42:00 · 1818 阅读 · 1 评论 -
Java 小例子:如何使用 ThreadLocal
要想在多个类中访问同一个值,通常会用到静态成员。但是在多线程环境下,对静态成员就会出现你存我取的现象。如何保证静态成员不会被其他的线程访问呢?这就要用到 ThreadLocal。下面是两个例子:/** * 演示 ThreadLocal 的使用 */public class ThreadLocalTest { // ThreadLocal 是一个泛型容器 p原创 2009-08-09 11:32:00 · 2834 阅读 · 4 评论 -
Java 小例子:按字节截取字符串
你可能会碰到这样的问题。比如发送短信,短信长度为 140 字节,如果文本超过了 140 个字节,你就必须将其截成多条。同时你又希望尽可能多的利用这 140 个字节。如果每个中文 2 字节,把短信内容限制在 70 个字符,那么英文较多的短信长度就被浪费了。你希望有一个方法,按字节来截取字符串,得到不超过 140 字节的最长子字符串。下面是一个例子:public class CutByBytes转载 2009-08-08 21:13:00 · 2086 阅读 · 4 评论 -
Java 小例子:简单秒表
这是一个简单的秒表。看起来很简单,但是这里有一个设计上的问题。一般初学者会创建一个循环的线程讲一个整数叠加,该线程隔一段时间暂停一下,比如暂停 10 毫秒,然后往这个整数上加 10。 这样设计的问题在于,线程的暂停和继续,以及计数和显示都是要花费时间的。所以这样的程序运行越久,误差就会越大。下面这个例子就是经过改良的,能够将时间误差维持在极低的水平上。 import javax原创 2009-05-06 22:12:00 · 2527 阅读 · 0 评论 -
Java 小例子:创建一个可拖拽图片的面板
今天在论坛上看到帖子希望能在 Swing 中实现像拖地图一样拖拽图片。这里是一个最简单的实现,提供了一个基本思路。import javax.swing.*;import javax.swing.filechooser.FileNameExtensionFilter;import java.awt.*;import java.awt.event.MouseEvent;import原创 2009-02-14 17:29:00 · 5203 阅读 · 2 评论 -
关于 static 块是否是同步的
要理解 synchronized 关键字,可以先看看这篇文章: http://www.learndiary.com/archives/diaries/2910.htm 本文是对该文的补充。 作者在最后对类中的 static 块是否是同步的抱有疑惑。其实想鉴定也不难。通过编译代码我们就知道,synchronized static {} 这样写是不允许的。为什么呢?因为 sta原创 2009-02-27 17:03:00 · 1829 阅读 · 0 评论 -
Java 小例子:打印一个金字塔
这是最基础的例子了,每个初学者都会要做这个题目。这个题目的目的是熟悉循环特别是嵌套循环的使用。但是如果对 Java 足够熟悉,回头来再写这个程序,就完全不是这么写的了。 嵌套循环是非常复杂的逻辑。特别是写得很长的嵌套循环,一个不小心把 j 写成 i,就够你调试半天的。所以嵌套循环应该尽量避免。怎么避免?将内部循环提取成一个方法。这样每个方法里都只有一层循环,容易看,容易改,而且不容易出错。原创 2009-03-01 17:19:00 · 3263 阅读 · 2 评论 -
Java 小例子:数据持久化(保存数据到文件)
说数据持久化,初学者可能还不太懂;但要说把数据保存到文件,这谁都懂了。为什么说持久化就是把数据保存到文件?持久化指的就是当程序退出后,其中的数据能够保留下来,供程序再次运行的时候使用。这些数据保留在什么地方最好呢?当然是文件里。保存到文件是数据持久化最常用的方式,除此之外,还可以把数据保存到数据库,或者发送到其它机器,这都是持久化。不过保存在文件是最简单的方式。具体来说就是:选取需要保存原创 2009-03-09 09:07:00 · 16017 阅读 · 10 评论 -
Java 小例子:读取文件内容
Java 提供 BufferedReader 类用来从流中读取字符串、FileReader 类用来读取文件。我们用这两个类来读取文件中的字符串。下面是一个例子:import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException; public class ReadFile {原创 2008-12-27 19:48:00 · 2587 阅读 · 3 评论 -
Java 小例子:输出格式化数字
我们经常要将数字进行格式化,比如取2位小数,这是最常见的。Java 提供 DecimalFormat 类,帮你用最快的速度将数字格式化为你需要的样子。下面是一个例子:import java.text.DecimalFormat; public class TestNumberFormat { public static void main(String[] arg原创 2008-12-28 19:37:00 · 9155 阅读 · 1 评论 -
Java 小例子:读取控制台的用户输入
想当年学 BASIC 的时候,获取用户输入多简单,就一个 input;后来学 C,也挺简单,一个 scanf();后来学 c++,同样简单,一个 cin 1、简单的获取用户输入下面是一个基本的例子,包含解释:import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.IOException;public原创 2008-12-26 18:43:00 · 9360 阅读 · 3 评论 -
Java 小例子:轮询淘汰
一架飞机快要掉了,上面有 20 个人,但是只有 3 包降落伞。于是 20 个人凑成一圈,每数到第 7 个,就将他踢下去。——最后三包降落伞将落在哪几个人手里? 下面是示例代码。编写过程的录像在这里下载。 import java.util.ArrayList;import java.util.List; /** * 一架飞机快要掉了,上面有 20 个人,但是只有 3原创 2009-03-28 15:27:00 · 3169 阅读 · 0 评论 -
Java 小例子:模拟分数的类 Fraction
前一阵子 CSDN 博客奇慢无比,今天好些了。 这里是一个模拟分数运算的例子:Fraction 类。分数运算完后要用最大公约数除分子分母。所以这里也有个用辗转相除法求最大公约数的例子。另外在构造 Fraction 对象时如果分母为零将会抛出异常,这也是必要的检查。public class FractionTest { public static void main(St原创 2009-04-03 10:15:00 · 4788 阅读 · 0 评论 -
Java 小例子:求素数
素数(质数)指的是不能被分解的数,除了 1 和它本身之外就没有其它数能够整除。这里是一个小例子,说明如何求取十万以内的所有素数。 素数的分布没有规律可言,所以要检验一个数是不是素数,就必须将它同所有小于它的数作除法。不过有一个简便的方法,就是不需要检验所有小于它的数,而只要检验所有小于它的素数。如果所有小于它的素数都不能将其整除,那么它就是素数。 public class Prim原创 2009-04-07 10:45:00 · 1603 阅读 · 0 评论 -
Java 小例子:使你的 Java 程序使用单独的分辨率
如果你想在你的 Java 程序中使用单独的分辨率,下面是一个例子。注意这种改变不是永久性的,程序退出就恢复了。其实我也不清楚这到底有什么用。 import javax.swing.*;import java.awt.*;import java.awt.event.ActionListener;import java.awt.event.ActionEvent; /**原创 2009-04-10 16:47:00 · 2039 阅读 · 0 评论 -
Java 小例子:一个测试正则表达式的工具
这是一个例子,也是一个工具,用来测试指定的文本中是否包含指定的正则表达式匹配。 下面是代码:import javax.swing.*;import javax.swing.text.DefaultHighlighter;import javax.swing.text.BadLocationException;import java.awt.BorderLayout原创 2009-04-27 09:44:00 · 4495 阅读 · 0 评论 -
Java 小例子:不通过逻辑运算和类库,比较两个 integer 大小
这个问题在论坛上引起了热烈讨论!同时也得到了精彩的答案。 不能通过逻辑运算和类库的话,就只有用位运算了。将两个数相减之后,直接取结果的符号位。考虑到可能溢出,所以做减法之前先要扩展为 long。 下面是完整的代码:import java.util.Random; /** * 不通过逻辑运算和类库,比较两个 integer 大小 */public class原创 2009-05-01 08:20:00 · 1854 阅读 · 0 评论 -
Java 小例子:猜数字游戏
这是一个猜数字的游戏。用户输入 1~1000 以内的任意数字,程序给出它是大了还是小了,直到猜出正确的结果。程序编写的过程在这里,给初学者参考:http://yidinghesarchives.googlecode.com/files/GuessNumber.mkv注意:1、代码不是写出来就不改了。编写代码的过程是一个不断调整的过程。2、不要把所有的东西都写完才去运原创 2009-05-03 16:51:00 · 2001 阅读 · 0 评论 -
Java 小例子:按指定的编码读取文本文件内容
InputStreamReader 的构造函数提供了一个参数,用于指定通过什么编码将读取到的字节流转换成字符。下面是一个例子:/** * 读取指定的文本文件,并返回内容 * * @param path 文件路径 * @param charset 文件编码 * * @return 文件内容 * * @throws IOException 如果文件不存在、打开原创 2009-01-20 09:56:00 · 3953 阅读 · 6 评论