![324b8e51cedafc78a11841ef96de7e1e.png](https://img-blog.csdnimg.cn/img_convert/324b8e51cedafc78a11841ef96de7e1e.png)
阶段汇总集合:一年内容,200期Java面试题阶段汇总
1. 案例分析
1.1 案例场景
假设银行提供了一些 API 接口,对参数的序列化有点特殊,不使用 JSON,而是需要我们把参数依次拼在一起构成一个大字符串
按照银行提供的API文档顺序,将所有的参数构成定长的数据,并且拼接在一起作为一整个字符串
因为每一种参数都有固定长度,未达到长度需要进行填充处理
- 字符串类型参数不满长度部分要以下划线右填充,即字符串内容靠左
- 数字类型的参数不满长度部分以0左填充,即实际数字靠右
- 货币类型的表示需要把金额向下舍入2位到分,以分为单位,作为数字类型同样进行左填充
- 参数做MD5 操作作为签名
1.2 初步代码实现
public class BankService {
//创建用户方法
public static String createUser(String name, String identity, String mobile, int age) throws IOException {
StringBuilder stringBuilder = new StringBuilder();
//字符串靠左,多余的地方填充_
stringBuilder.append(String.format("%-10s", name).replace(' ', '_'));
//字符串靠左,多余的地方填充_
stringBuilder.append(String.format("%-18s", identity).replace(' ', '_'));
//数字靠右,多余的地方用0填充
stringBuilder.append(String.format("%05d", age));
//字符串靠左,多余的地方用_填充
stringBuilder.append(String.format("%-11s", mobile).replace(' ', '_'));
//最后加上MD5作为签名
stringBuilder.append(DigestUtils.md2Hex(stringBuilder.toString()));
r