API手册
注意: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. 好的学习方法,把日常遇到的新的知识写到文件中,忘了,搜索