1 API
1.1 API概述
- API(Application Programming Interface)
- 应用程序编程接口
- 编写一个机器人程序去控制机器人踢足球,程序就需要向机器人发出向前跑、向后跑、射门、抢球等各种命令,没有编过程序的人很难想象这样的程序如何编写。但是对于有经验的开发人员来说,知道机器人厂商一定会提供一些用于控制机器人的Java类,这些类中定义好了操作机器人各种动作的方法。其实,这些Java类就是机器人厂商提供给应用程序编程的接口,大家把这些类称为API。
- Java API就是JDK中提供给我们使用的类,这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可。
- 在JDK安装目录下有个src.zip文件,这个文件解压缩后里面的内容是所有Java类的源文件。可以在其中查看相对应的类的源码。
- 我们在每次查看类中的方法时,都打开源代码进行查看,这种方式过于麻烦。其实,我们可以通过查帮助文档的方式,来了解Java提供的API如何使用。
1.2 API中类的使用
1:如果知道类名,可以直接输入类名,查询;
2:如果知道方法,可以直接输入方法名查询;
3:如果只知道包名,可以根据包名查询;
Java提供的java.lang包下的类,可以直接使用,不用导包;
2 String类
2.1 String类概述
String是java编写的一个类,用于表示所有的字符串数据,字符串数据,如果直接使用双引号写出来,就是常量(本身还算做是引用数据类型),如果按照普通的类创建对象的方式,使用字符串,那么字符串也可以创建对象,而且创建出来的对象也会在堆内存中有一片空间;
2.2 String类的构造方法创建对象
String类创建对象有两种方式:
1:String 变量名 = “字符串的值”;
这一种方式创建的字符串对象都在常量池(方法区)中;
2:String 变量名 = new String(根据api中的构造方法填写实际参数);
这一种方式创建的字符串对象都在堆内存中;
String类的常用构造方法:
String() 初始化一个新创建的 String 对象,使其表示一个空字符序列。 |
---|
String(String original) 初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列;换句话说,新创建的字符串是该参数字符串的副本。 |
String(char[] value) 分配一个新的 String,使其表示字符数组参数中当前包含的字符序列。 |
---|
String(char[] value, int offset, int count) 分配一个新的 String,它包含取自字符数组参数一个子数组的字符。offset参数是子数组第一个字符索引,count蚕食指定子数组的长度。 |
2.3 字符串的两种创建方式的区别
为了让程序员比较两个字符串的字面值,因此需要使用String类中的比较字符串的方法:
boolean | equals(Object anObject) 将此字符串与指定的对象比较。 |
---|---|
boolean | equalsIgnoreCase(String anotherString) 将此 String 与另一个 String 比较,不考虑大小写。 |
2.4 模拟用户登录的功能
需求:
当用户输入用户名和密码之后,比较用户名和密码是否正确,对了,就提示登录成功,否则就提示登录失败;
思路分析:
1:在程序中固定两个字符串变量,分别用于表示用户名和密码;
2:让用户通过Scanner输入用户名和密码
3:使用字符串的equals方法比较用户名和密码是否正确;
4:根据比较的结果,进行相应的提示;
2.5 字符串中获取信息的方法
char | charAt(int index) 返回指定索引处的 char 值。 |
---|---|
int | length() 返回此字符串的长度。 |
char[] | toCharArray() 将此字符串转换为一个新的字符数组。 |
2.6 统计字符串中大写字母小写字母和数字的个数
需求:
从字符串中统计字符串中大写字母小写字母和数字的个数;
思路分析:
1:先总字符串中获取每一个字符;
2:通过比较运算符,比较当前获取的这个字符属于那个范围,并统计数量;
范围:
大写:‘Z’ ‘A’
小写 ‘z’ ‘a’
数字 ‘9’ ‘0’
2.7 字符串大小写转换的方法
String | toLowerCase() 使用默认语言环境的规则将此 String 中的所有字符都转换为小写。 |
|
---|---|---|
String | toUpperCase() 使用默认语言环境的规则将此 String 中的所有字符都转换为大写。 |
注意事项:
字符串中所有的方法,都不会改变原字符串的内容,都会得到一个新的字符串;
2.8 字符串切分与去除两端空格
String | trim() 返回字符串的副本,忽略前导空白和尾部空白。 |
|
---|---|---|
String[] | split(String regex) 根据给定正则表达式的匹配拆分此字符串。 |
注意:
Split方法,切分字符串的时候,含头不含尾!
package test;
public class test {
public static void main(String[] args) {// 1:定义一个带空格的字符串
String s = " abc bdc ";
System.out.println(s.length()); //11
// 2:去两端空格
String s2 = s.trim();//此行执行后s2="abc bdc"
System.out.println(s2.length());//7
System.out.println(s2);//abc bdc
// 3:使用空格切分s2
String[] split = s2.split(" ");//此行执行后split=[abc, bdc]
for (int i = 0; i < split.length; i++) {
System.out.println(split[i]);
}
System.out.println("==============");
String s4 = "javaabcjavasdfsdfjavasdfjhjava";
// 使用java,对s4切分
String[] sp = s4.split("java"); //此行执行后sp=[, abc, sdfsdf, sdfjh]
System.out.println(sp.length);
for (int i = 0; i < sp.length; i++) {
System.out.println(sp[i]);
}
}
}
2.9 获取字符串的索引位置
int | indexOf(String str) 返回指定子字符串在此字符串中第一次出现处的索引。 |
---|---|
boolean | startsWith(String prefix) 测试此字符串是否以指定的前缀开始。 |
boolean | endsWith(String suffix) 测试此字符串是否以指定的后缀结束。 |
String | substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串。子字符串从指定索引处的字符和延伸到这个字符串的末尾。 |
String | substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串。子字符串从指定的 beginIndex延伸在指数 endIndex 含头不含尾! |
3 自定义数据类型作为参数和返回值
方法:
Public 返回值类型 方法名(数据类型 参数名,。。。。){
}
数据类型及返回值类型两个位置上,可以写我们自定义的数据类型:
例如:Phone,Person
public class PhoneTest {
public static void main(String[] args) {
//1:面向对象的人,我们发现,m2方法可以帮我们创建一个对象,因此main方法可以面向m2方法获取一个对象
Phone p = m2();
//2:面向对象的人,我想打电话,我们发现,m1方法,可以帮我们打电话,因此main方法可以面向m1方法,让m1帮我们打电话
m1(p);
}
//使用Phone类型作为参数类型
public static void m1(Phone p){
//如果别人想调用这个m1方法,就需要提前准备一个Phone对象,。并传递给这个m1方法
p.call(“欢欢姐”);
}
//使用Phone类型作为返回值类型
public static Phone m2(){
//如果别人想调用这个m2方法,不需要传递任何参数,但是可以得到一个Phone类型的对象
Phone p = new Phone();
return p;
}
}
public class Phone {
//手机的特征,使用成员变量描述
String name;//手机的品牌
String color;//手机的颜色
double price;//手机的价格
//手机的功能,使用成员方法描述
public void call(String name){
//这个方法是在描述手机可以给指定的人打电话
//此处省略一万行。。。
System.out.println(“手机给”+name+”打电话了。。。”);
}
}
4 StringBuilder
4.1 StringBuilder概述
StringBuilder是一个字符串缓冲区;专门用于字符串的拼接运算,且在运算的过程中,不会产生常量,因此,就是在其他任意地方,对StringBuilder对象的内容进行修改,原始的对象,会受到影响;
StringBuffer是StringBuilder的好兄弟,性能低于StringBuilder,但是可以保证多线程中操作的安全性;
简单理解为:
StringBuilder就是一个大池子,可以向池子中添加任意数据类型的数据,最终都会拼接起来,形成一个字符串对象!
4.2 StringBuilder的方法
构造方法:
StringBuilder() 构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符。 |
---|
StringBuilder(String str) 构造一个字符串生成器,并初始化为指定的字符串内容。 |
常用方法:
StringBuilder | append(传啥都行) 将 boolean 参数的字符串表示形式追加到序列。 |
---|---|
StringBuilder | reverse() 将此字符序列用其反转形式取代。 |
String | toString() 返回此序列中数据的字符串表示形式。 |
int | length() 返回长度(字符数)。 |
int | capacity() 返回当前容量。容量会随着内容的添加而自动增长; |
4.3 String与StringBuilder的区别
相同点:
都是java编写的类,都是引用数据类型;
不同点:
1:String是特殊的引用数据类型,String类型的对象,都是字符串常量;
2:StringBuilder是一个普通的引用数据类型,仅仅是用于字符串与其他数据类型的拼接,转换,截取,替换,反转。。。
3:String是常量,内容是固定不变的;而StringBuilder是引用数据类型的对象,内容是可变的!