Day09
一、java的API学习
1、API的意思就是应用编程接口,也称之为编程接口。在java中我们将java帮助文档统称为API,java中的API其实是有java中的注释通过javadoc命令生成的东西,所以我们要写好注释。
二、API中的String类
1、String类是引用数据类型,存在java.lang包下面,是java非常常用的类。String类相比与其他的引用数据类型有一点特殊,我们在给string创建对象的时候,会给它创建两个对象,一个和普通的java类一样存储在堆中,还有一个是string类特有的内存空间,这个内存空间称之为“String类的常量池”。
2、string类的常量池
因为我们在使用string类的时候,经常会对字符串进行大量的拼接操作,这样就会大量产生新的对象,官方为了提高String类的性能,在使用直接量给字符串进行赋值的时候,会优先在常量池中寻找,如果常量池寻找不到,那么就会在堆和常量池中重新创建一个对象。
注意:只有在使用直接量赋值的时候,他才会引用常量池中的对象。
3、String方法
a、int indexOf(String str)
返回指定字符串在此字符串中第一次出现的索引(就是这个字符串第一次出现的下标是多少)
public void test00() {
String str="China";
System.out.println(str.indexOf("a"));
}
b、int indexOf(String str,int fromIndex)
返回指定字符串在此字符串中第一次出现的索引,从指定的索引开始。
public void test00() {
String str="Chinese";
System.out.println(str.indexOf("e",3));
}
c、char charAt(int index)
返回指定索引处的char的值
public void test00() {
String str="Chinese";
System.out.println(str.charAt(2));
}
d、int lastIndexOf(String str)
返回指定字符在此字符串中最后一次出现的索引
public void test00() {
String str="Chinese";
System.out.println(str.lastIndexOf("e"));
}
e、int lastIndexOf(String str,int fromIndex)
返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。
public void test00() {
String str="Chinese";
System.out.println(str.lastIndexOf("e",6));
}
f、subString(int beginIndex)
返回一个新的字符串,它是此字符串的一个子字符串。从beginIndex下标开始截取,一直截取到字符串的末尾。
public void test00() {
String str="Chinese";
System.out.println(str.substring(2));
}
g、subString(int beginIndex,int endIndex)
返回一个新的字符串,它是此字符串的一个子字符串。从beginIndex下标开始截取,一直截取到字符串的endIndex下标结束,其中截取的字符串包括beginIndex但不包括endIndex(前包括后不包括)。
public void test00() {
String str="Chinese";
System.out.println(str.substring(2,4));
}
h、toUpperCase()
使用默认语言环境的规则将此 String 中的所有字符都转换为大写。
public void test00() {
String str="Chinese";
System.out.println(str.toUpperCase());
}
i、toLowerCase()
使用默认语言环境的规则将此String 中的所有字符都转换为小写。
public void test00() {
String str="Chinese";
System.out.println(str.toLowerCase());
}
j、boolean startsWith(String prefix)
测试此字符串是否以指定的前缀开始
public void test00() {
String str="Chinese";
System.out.println(str.startsWith("C"));
}
注意:这个方法区分大小写。
k、boolean endsWith(String suffix)
测试此字符串是否以指定的后缀结束
public void test00() {
String str="Chinese";
System.out.println(str.endsWith("e"));
}
l、int length()
返回此字符串的长度。
public void test00() {
String str="Chinese";
System.out.println(str.length());
}
注意:有时候会把求字符串的长度和数组的长度进行混淆,数组是length属性,字符串是length()方法。
m、char[] toCharArray()
将此字符串转换为一个新的字符数组。
public void test00() {
String str="Chinese";
char[] str1=str.toCharArray();
System.out.println(str1);
System.out.println(str1.length);//这个可以验证str1是新的字符数组,
} //可以用length来求数组长度,不是length()方法了
n、String trim()
返回一个新的字符串,并且这个新的字符串会除掉旧字符串的首尾空格,不能去除字符串中间的空格
public void test00() {
String str=" Chi nese ";
String str1=str.trim();
System.out.println(str1);
}
o、boolean equalsIgnoreCase(String anotherString)
将此String与另一个String比较,不考虑大小写。
public void test00() {
String str="Chinese";
String str1="china";
System.out.println(str.equalsIgnoreCase(str1));
}
p、byte[ ] getByte();
使用平台默认的字符集将次String编码为byte序列,并将结果存储到新的byte数组中
public void test00() {
String str="Chinese";
byte[] str1=str.getBytes();
System.out.println(str1);
}
r、byte[ ] getByte(Charset charset);
使用给定的 charset 将此 String 编码到 byte 序列,并将结果存储到新的byte 数组。
s、static String valueOf(boolean b)
将其他的数据类型装换成字符串数据
三、JUNIT单元测试框架
我们只需要写一个方法,然后在方法上添加一个@Test注释标签,然后这个方法就可以和main函数一样,直接运行。
四、字节
1、Windows默认的字符集是GBK,中文一个汉字字节占2个字节,英文一个字母占1个字节。
2、Linux默认是UTF-8,中文一个汉字占3个字节,英文字母占一个字节,
3、java中默认的字符集是Unicode,没有指定字符集的情况下,中英文都是占2个字节,会单独留出2个字节来排序。
五、正则表达式
1、由一些有特殊含义的特殊字符串来进行规则描述所形成的一种字符串,我们把形成的这种字符串称之为正则表达式。
例如:手机号码的正则表达式(\+86|0086)+?\s?\d{11}
其中数量符号(重要)*代表0-N个,+代表1-N个,{a,}代表a-N个,{a,b}代表a-b个,?代表0-1个,{a}代表a个。
2、javaAPI String对正则的支持
a、mathches(String reg)验证字符串
-通过验证 true
-未通过验证false
public void test02() {
String str="10.1";
String reg="\\d+\\.\\d+";
System.out.println(str.matches(reg));
if(str.matches(reg)) {
System.out.println(Double.parseDouble(str));//这里的包装类方法,为引用数据类型
} //提供了操作基本数据类型的方法。
}
b、split(String reg)按照正则表达式进行字符串匹配切割
public void test03() {
String str="adhd1234ahdh433wibde456";
String reg="\\d+";//0-9的数字可以出现一次或者一次以上
String result[]=str.split(reg);
for(int i=0;i<result.length;i++) {
System.out.println(result[i]);
}
}
c、replace(String regex,String replacement)将满足正则的替换成replacement
public void test03() {
String str="adhd1234ahdh433wibde456";
String reg="\\d+";//0-9的数字可以出现一次或者一次以上
String str1=str.replaceAll(reg, "520");
System.out.println(str1);
}
六、包装类
就是java把每个基本数据类型都做一个与之相对应的引用数据类型,然后将这些引用数据类型称之为包装类。除了char和int类型,其他类型所对应的包装类基本上都是基本数据类型的首字母大写。
例如:float--》Float;double--》Double,而int--》Integer;char--》Character
使用包装类的好处:1.引用数据类型,提供了大量的操作数据的方法。2.除了char和Boolean类型数据的父类是Object,其他的父类都是Number。3.都在lang包里。
主要方法:
parse+基本数据类型
注意:从Jdk1,5之后 java从语法上开始支持自动装箱和拆箱了,我们直接将包装类型赋值给基本数据类型他们自己在底层会执行相应的方法完成。