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

API手册

下载jdk1.5手册

注意:chm文件从网络下载后,菜单能展现点击后内容不能展现,按下面图修改下即可
java小白训练营day05-API:API+字符串工具类+身份证解析_第1张图片

api

了解即可,用到具体的api会用 System.in,System.out.println
日常常用的不到20%
java小白训练营day05-API:API+字符串工具类+身份证解析_第2张图片

字符串工具类

java小白训练营day05-API:API+字符串工具类+身份证解析_第3张图片

package test;

import java.util.Arrays;

import org.junit.Test;

//字符串api方法
public class TestString {
	@Test //concat 字符串拼接
	public void concat() {
		System.out.println("hello" + " world." + " hi");
		System.out.println("hello".concat(" world.").concat(" hi"));
		
		String str = "hello world.";
		System.out.println("字符串长度:" + str.length());
	}
	
	@Test	//trim 去掉字符串两边空格
	public void trim() {
		String s = "  达内 CGB java大数据方向       ";
		System.out.println( s.trim() );
	}
	
	@Test	//charAt 得到某个位置字符,下标,字符串底层字符数组
	public void charAt() {
		String s = "达内CGB方向";
		//第一个字符
		System.out.println(s.charAt(0));
		System.out.println(s.charAt(2));
		//最后一个字符
		System.out.println(s.charAt(s.length()-1));
	}
	
	@Test	//substring 截取子串(截串)
	public void substring() {
		String s = "达内CGB Java大数据方向很棒";
		//获取“达内”
		System.out.println( s.substring(0,2) );
		
		//获取“Java大数据”
		System.out.println( s.substring(6, 13));
		
		//获取“方向”,一个参数时,默认截取到字符串最尾巴
		System.out.println( s.substring(13) );
	}
	
	@Test //转换大小写 toUpperCase、toLowerCase
	public void toCase() {
		String name = "Chen ZiShu";
		System.out.println(name.toUpperCase());
		System.out.println(name.toLowerCase());
		
		//需求:已知类名,利用api生成它的对象实例名称
		//规则:小驼峰,首字母小写
		//PersonMan personMan = new PersonMan();
		//思路:获取字符串首字母charAt(0),变小写toLowerCase()
		//	截取字符串substring(),拼接字符串concat();
		String className = "PersonMan";
		String s1 = className.charAt(0)+"";	//获取首字母
		s1 = s1.toLowerCase();
		System.out.println(s1);
		
		String s2 = className.substring(1);
		System.out.println(s2);
		System.out.println(s1.concat(s2));
	}
	
	@Test	//indexOf和lastIndexOf 获取某个字符、子串它的位置(索引值、下标)
	public void indexOf() {
		String s = "周杰伦.双.节.棍.mp3";  //有格式.
		//1.获取歌手名称:周杰伦,思路找到名字后面.,然后截串
		int pos1 = s.indexOf("."); //从左向右找,找到返回第一个就结束
		System.out.println("位置:"+pos1);
		System.out.println( s.substring(0, pos1) );
		
		//2.获取歌曲的名称:周杰伦.双节棍
		int pos2 = s.lastIndexOf("."); //从右向左找
		System.out.println( s.substring(0, pos2) );
		
		//3.获取歌曲文件后缀:mp3
		System.out.println( s.substring(pos2+1) );
	}
	
	@Test //startsWith什么前缀prefix开头,endsWith什么后缀suffix结尾
	public void with() {
		String name = "http://www.baidu.com"; //url地址
		//1.判断是否是http协议
		if( name.startsWith("http://")) {
			System.out.println("这是一个HTTP网站");
		}else {
			System.out.println("这是其他类型的网站");
		}
		
		//2.判断是否是com公司,.cn中国,.com全球公司,.net网络提供
		if( name.endsWith(".cn")) {
			System.out.println("cn中国公司");
		}else if( name.endsWith(".com") ) {
			System.out.println("com全球公司");
		}else if( name.endsWith(".net") ) {
			System.out.println("net网络提供商");
		}
	}
	
	@Test //正则表达式 regex
	public void regex() {
		//java中默认采用UTF16
		String s = "王180a,李133b,陈139c,张130d";
		//需求:把数字替换成*
		//思路:获取每个字符charAt(i),判断是否是一个数字
		//怎么判断是数字,ASCII表,0(48)~9(57) ASCII值
		//如果是数字就改成*,如果不是继续for循环
		
		String r = "";	//空串
		for(int i=0; i<s.length(); i++) {
			char c = s.charAt(i);	//for循环变量刚好和下标匹配
			if(c>=48 && c<=57) {	//0(48)~9(57)
				c = '*';			//如果是数字就被改为*
			}
			r += c;
		}
		System.out.println(r);
		
		//采用正则表达式方式,正则代码量少,不好理解
		System.out.println(
			s.replaceAll("\\d", "*").replaceAll("[a-z]", "+")
		);
	}
	
	@Test //replace、replaceAll 替换
	public void replace() {
		String s = "刘若英.后天.mp3";
		//需求:把.替换成*
		System.out.println( s.replace(".", "*") );
		// \\.代表不是正则中的规则点,而是字符的点,转义
		System.out.println( s.replaceAll("\\.", "*") );
	}
	
	@Test	//split 转换字符串为数组,必须有一个分隔符
	public void split() {
		String s = "刘若英.后天.mp3"; //分隔符是不出现结果中
		String[] arr = s.split("\\.");
		System.out.println( Arrays.toString(arr));
		
		String type = "手机,电视,冰箱,烧水壶,空调";
		System.out.println( Arrays.toString(type.split(",")));
		
		String grade = "100;90;88;120;80";
		System.out.println( Arrays.toString(grade.split(";")));
	}
	
	@Test //需求:学生姓名,只留下姓,其他的字替换*
	public void star() {
		String s = "刘德华,张曼玉,齐秦,周星驰";
		//思路:获取每个姓名,for循环把第一个字后面的都用*替代
		String[] names = s.split(",");
		//遍历数组
		for(int i=0; i<names.length; i++) {
			String name = names[i];
			System.out.println( name );
			
			//再次for循环,把姓之后字变成*
			String r = name.substring(0,1); //姓
			for(int j=1; j<name.length(); j++) {
				r += "*";
			}
			System.out.println(r);
		}
	}
}






身号解析

package test;

import org.junit.Test;

/*
 * 身号
 * 1)总共18位
 * 2)前6地址码
 * 3)8位出生年月日
 * 3)3位顺序码,最后一位性别,奇数:男,偶数:女
 * 4)最后一位校验位
 */
public class TestCardNo {
	@Test
	public void cardNo() {
		String cardNo = "610113198009102113";
		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(14,17);
			System.out.println("顺序号:" + sno);
			
			String x = sno.substring(2);
			System.out.println(x);
			//字符串转换为整数类型
			int i = Integer.parseInt(x);
			if(i%2==0) {
				System.out.println("性别:女");
			}else {
				System.out.println("性别:男");
			}
			System.out.println("校验码:" + cardNo.substring(17));
		}else {
			System.out.println("身号不正确");
		}
	}
}




小结

1)API,java提供应用程序接口(插线板)就可以按规则来写程序,
写程序有了java(JDK)就像搭积木,事半功倍,开发效率就高。
这才是java核心,主要就是学习这些api的用法。(多练习,api的组合去完成需求)
API需要一定背
java小白训练营day05-API:API+字符串工具类+身份证解析_第4张图片

你可能感兴趣的:(java基础,java)