java小白训练营2109-day05-API:API+字符串工具类+身份证解析

API手册

下载jdk1.5手册

注意:chm文件从网络下载后,菜单能展现点击后内容不能展现,按下面图修改下即可
在这里插入图片描述

api

在这里插入图片描述

java是否老了?

java91诞生,已经老了,它很多内容已经被第三方所淘汰,很多内容就被spring替代。
.net 闭源(微软专家在维护)不思进取,傲慢,
java开源(全球开发者)一直在改进 Spring。Apache 。Eclipse
java 自身老了,但它开创java体系,由于第三方这些开源企业和开发者支持,它无敌,其他语言没有这么多支持这
php 网站(新浪微博)倒了,鹿晗事件 i++。高并发!
京东 早期.net aspx 倒了,账。高并发!
淘宝 java
Spring+Nginx 负载均衡+Redis分布式内存缓存+MyCat+Docker+k8+Hadoop+Spark+Flink
java自身老了,但是java生态链体系非常完善,是任何一个语言所不能抗衡!

字符串工具类

在这里插入图片描述

常见的字符串的api

package test;

import org.junit.Test;

public class TestString {
	@Test 
	public void api() {
		//concat 字符串连接符,拼串
		System.out.println("abc"+123);
		System.out.println("abc".concat("123"));

		String s = "今天是个好日子";
		System.out.println("字符串长度:" + s.length());
		
		//charAt 获取字符串中某个字符 charAt(index) 下标
		System.out.println("第一个字符:"+ s.charAt(0));
		System.out.println("第八个字符:"+ s.charAt(7));
		
		//把字符串的每个字获取到,并且打印
		for(int i=0; i<s.length(); i++) {
			System.out.println( s.charAt(i) );
		}
	}
	
	@Test //去掉字符串两边的空格
	public void trim() {
		String s = " 陈晨  上 it 课非常开心   ";
		System.out.println( s.trim() );
	}
	
	@Test	//截取字符串(子串)
	public void substring() {
		String name = "陈晨";
		//截取姓氏和名字
		System.out.println("姓氏:"+ name.substring(0, 1));
		//从当前位置开始截取到最后
		System.out.println("名字:"+ name.substring(1));
		
		String songName = "周杰伦-双节棍.mp3";
		//歌曲名称
		System.out.println("歌曲名称:"+songName.substring(4,7));
		
		//扩展名 .mp3
		System.out.println("扩展名:" + songName.substring(7));
		
		//indexOf 找到某个字符的位置,返回位置的索引的值(下标)
		System.out.println(".的位置:" + songName.indexOf("."));
		int pos = songName.indexOf("."); //把位置信息记录下来
		
		System.out.println("歌曲名称:"+songName.substring(0, pos));
		System.out.println("扩展名:"+songName.substring(pos));
	}
	
	@Test //获取某个字符从右向左首次出现的位置
	public void lastIndexOf() {
		String song = "周杰伦.双节棍.mp3";
		int pos1 = song.indexOf("."); //从左向右算第一个
		System.out.println(pos1);
		
		int pos2 = song.lastIndexOf("."); //从右向左算第一个
		System.out.println(pos2);
		
		System.out.println("歌曲名称:" + song.substring(0, pos2));
		
		String email = "chenzs@tedu.cn";
		int pos3 = email.lastIndexOf("@");
		//邮箱名字
		System.out.println("邮箱名字:" + email.substring(0,pos3));
		//域名
		System.out.println("域名:" + email.substring(pos3+1));
	}
	
	@Test //转换大小写,针对英文
	public void toCase() {
		String name = "WangGeiBi";
		System.out.println("大写:" + name.toUpperCase());
		System.out.println("小写:" + name.toLowerCase());
	}
	
	@Test //前缀prefix 和后缀suffix
	public void toWith() {
		String s = "刘若英.后天.mp3";
		//判断它是mp3歌曲
		if(s.startsWith("刘若英") && s.endsWith(".mp3")) {
			System.out.println("这是mp3的音频");
		}else {
			System.out.println("这不是一个音频文件");
		}
	}
	
	@Test //替换 replace和replaceAll
	public void replace() {
		String name = "刘若英歌曲非常好听,歌曲:后天";
		//把“歌曲”换成英文song
		System.out.println( name.replace("歌曲", "song"));
		//只替换第一个 regex
		System.out.println( name.replaceFirst("歌曲", "song"));
		
		String name2 = "刘若英.后天.mp3";
		//把.替换-号
		System.out.println( name2.replace(".", "-"));
		System.out.println( name2.replaceFirst(".", "-"));
		//元字符,正则表现形式,元字符.就代表每个字符
		System.out.println( name2.replaceAll(".", "-"));
		
		//regex 正则表达式,
		//不是正则中的元字符点而要求是字母的点
		System.out.println( name2.replaceAll("\\.", "-"));
	}
	
	@Test
	public void regex() {
		//地址信息中屏幕电话号码,隐藏电话号码,*
		String address = "北京中关村110号楼 陈晨 135";
		//不用正则来实现
		//解决方法:for遍历每个字符,判断这个字符是否为0(48)~9(57),如果是替换*
		String s = "";	//空串
		for(int i=0; i<address.length(); i++) {
			char c = address.charAt(i); //获取当前的字符
			if(c>=48 && c<=57) {
				//System.out.println(c);
				s += "*";
			}else {
				s += c;
			}
			System.out.println(s);
		}
		
		System.out.println("----------------");
		
		//用正则来实现
		System.out.println(address);
		//正则:匹配每一个数字(\d)
		System.out.println( address.replaceAll("\\d", "*"));
	}
}





身号解析

package test;

import org.junit.Test;

/*
身号里隐含了很多的信息:
1.号码的结构 610113 19880910 214 3
身号是特征组合码,由十七位数字本体码和一位校验码组成,共计18位。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。
2.地址码
表示编码对象常住户口所在县(县级市、旗、区)的行政区划代码,按GB/T2260的规定执行。
3.出生日期码
表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。
4.顺序码
表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。
5.校验码
根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。

 */
public class TestCardNo {
	/*
	 * 分析
	 * 1、地址码 addres,substring
	 * 2、出生日期 birthday,substring
	 * 3、顺序码 sno,substring
	 * 4、性别,sex,上面顺序最后一位得到 substring,把字符串转换整型,取余2
	 * 	if判断,结果为0,输出女,结果为1,输出男
	 * 5、校验码,checkNo,substring
	 */
	@Test
	public void cardNo() {
		//字符串转换整数,需要api,Integer.parseInt("");
		String s = "126";
		int i = Integer.parseInt(s);
		System.out.println(i);
		
		//取余
		System.out.println( i%2 );  //i整数对2进行取余,余数
	}
	
	@Test
	public void cardNo2() {
		String cardNo = "610113198809102163";
		
		if(cardNo.length() == 18) {
			String address = cardNo.substring(0,6);
			System.out.println("地址码:" + address);
			
			String birthday = cardNo.substring(6, 14);
			System.out.println("出生年月:" + birthday);
			
			String sno = cardNo.substring(cardNo.length()-4, cardNo.length()-1);
			System.out.println("顺序号:" + sno);
			
			String s = sno.substring(sno.length()-1); //获取最后一位
			System.out.println("顺序号最后一位:" + s);
			
			int sex = Integer.parseInt(s); //转换字符串为整数
			if(sex%2 == 0) { //取余
				System.out.println("性别:女");
			}else {
				System.out.println("性别:男");
			}
			
			String checkNo = cardNo.substring(cardNo.length()-1);
			System.out.println("校验码:" + checkNo);
		}else {
			System.out.println("号码非法!");
		}
	}
}



小结

1)while循环,do循环
for和while形式不同,
迭代数组 for,遍历int i=0,s.length()-1,和数组形式匹配。
while(true){ … return … }
do和while的区别? do最少执行一次,while可能一次都不执行
2)api application interface java的api最丰富
java很多api过气,java自身已经老了,但是java构建生态链体系,这个生态链太强大,
京东、淘宝的双11(8亿),已经证明中国软件在应用的层面第一。(亚马逊 4亿)数量量,高并发
3)String 字符串开发中使用最多的api
a. 知道这些方法的存在(学习中积累,工作中长期,CSDN看看别人帖子,百度)
b. 好的学习方法,把日常遇到的新的知识写到文件中,忘了,搜索

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值