API
1.1 API概述
API(Application Progamming Interface):应用程序编程接口
例如:编写一个机器人程序去控制机器人踢足球,程序需要向机器人发出指令(前后左右移动,射门等)。
同时机器人厂商会提供一些用于控制机器人的程序接口类,这些类中定义好了操作机器人指令的方法,这些程序接口类就是机器人厂商提供给应用程序编程的接口,统称为API
Java API:值的是JDK中提供的各种功能的Java类
这些类将底层是实现方法封装起来,不需要关心这些类是如何实现的,只需要学习和使用就好,我们可以通过帮助文档学习使用这些API的使用
1.2 帮助文档使用
① 打开帮助文档
② 点击索引选项卡的输入框
③ 输入框输入你需要搜索的内容。例如:random
④ 查看类在哪个包下。例如:属于java util 需要导包;如果属于java.lang包下不需要导入
⑤ 查看类的功能。例如:该类的实例用于随机生成一个数字
⑥ 查看该类的构造方法。
例如:Random() 无参方法
Random(long seed)有参方法,使用单个long种种子创建一个新的随机数生成器
⑦ 查看成员方法,重点查看:
例如:int 返回值(int 类型,使用同类型接收) ;
nextInt(int number)方法名 参数;(传递的参数类型是int,参数是一个可以是多个)
以及描述
⑧ 实例:导入Scanner包,键盘录入字符串
public class _ScannerDemo {
_public static void _main(String[] args) {
// 导包创建对象Scanner _Scanner scanner = _new _Scanner(System._in);
// 接收数据 System._out.println(“请输入一个字符串数据: “);
// 使用Scanner中的对应接收字符串的方法nextLine()
// 使用快捷键ctrl +Alt +v自动补全引入包的方法 String line =scanner.nextLine();
// 输出结果 _System._out.println(“你输入的是: “+ line); } }
注意: 1、调用方法的时候,如果方法有明确的返回值,我们用变量接收 例如:_ _String line
2、可以手动完成变量,也可以快捷键(Ctrl+Alt+V)补全
String
2.1 String概述
查看Java API 文档:
1、String类型 是属于java.lang包下不需要导入
2、String类代表字符串,例如(“abc”)都为此类的实例,意思是,Java程序中所有的双引号字符串,都是String类的对象。
3、字符串不变,它们的值被创建后不能被更改
4、虽然String的值不可改变,但是它们可以被共享
5、字符串的底层是字节数组
2.2 String构造方法
public String() : 创建一个空白字符串对象,不含有任何内容
public String(char[] chs): 根据字符数组的内容,来创建字符串对象
public String(byte[] bys): 根据字节数组的内容,来创建字符串对象
String s = “abc”; 直接赋值的方式创建字符串对象,内容就是abc。推荐使用该方法
public static void _main(String[] args) {
// public String() :创建一个空白字符串对象,不含有任何内容
String s1 = _new _String();
// 输出:s1: + 空 _System._out.println(“s1:”+s1);
// public String(char[] chs): 根据字符数组的内容,来创建字符串对象 char[] chs ={‘a’,’b’,’c’};
String s2 = _new _String(chs);
// 输出:s2:abc _System._out.println(“s2:” + s2);
// public String(char[] chs): 根据字符数组的内容,来创建字符串对象 char[] bys ={97,98,99};
String s3 = _new _String(bys);
// 输出:s3:abc 因为97,98,99对应的字节就是a,b,c _System._out.println(“s3:” + s3);
// String s = “abc”; 直接赋值的方式创建字符串对象,内容就是abc String s4 = “abc”;
// 输出:s4:abc _System._out.println(“s4: “ + s4); }
2.3 String 对象的特点
① 通过new创建的字符串对象,每一次new都会申请一个内存空间,虽然内容相同,但是地址不同
② 以”” 方式给出的字符串,只要字符串序列相同(顺序和大小写)不变,它们的值被创建后不能被更改,属于相同的String对象
例如:String s3 = “abc”; String s4 = “abc”; 这两个字符串的对象本质都是一个
2.4 字符串的比较
使用 == 做比较
1、基本类型:比较的是数据值是否相同
2、引用类型:比较的是地址值是否相同
字符串是对象,它比较内容是否相同是通过一个方法来实现的:equals()
public boolean equals(Object anObject):将字符串与指定对象进行比较。由于我们比较的是字符串对象,所以参数直接传递一个字符串
public static void _main(String[] args) {
// 构造方法的方式得到对象 char[] chs ={‘a’,’b’,’c’};
String s1 = new _String(chs);
String s2 = _new _String(chs);
// 直接赋值的方式得到对象 _String s3 = “abc”;
String s4 = “abc”;
// 比较字符串对象地址是否相同 _System._out.println(s1 == s2);
System.out.println(s1 == s3);
System.out.println(s3 == s4);
System.out.println(“—————“);
输出 false;false;true;
// 比较字符串内容是否相同 System._out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
System.out.println(s3.equals(s4)); }
输出 true;true;true
String案例:用户登录
需求:已知用户名和密码,请用程序实现模拟用户登录。总共三次机会,登陆之后,给出相应的提示
思路:
① 已知用户名和密码,定义两个字符串标表示即可
② 键盘录入登录的用户名和密码,用Scanner实现
③ 拿键盘录入的用户名、密码和已知的用户名、密码进行比较,给出相应的提示。
④ 字符串的内容比较,用equals()方法实现
⑤ 使用循环实现多次机会,这里的次数明确,采用for循环实现,如果次数不明确使用while循环。一旦登录成功后,使用break结束循环
public class _ScannerDemo {
_public static void _main(String[] args) {
// 已知用户名和密码,定义两个字符串 _String username = “user”;
String password = “123456”;
// 使用循环实现多次机会,这里的次数明确,采用for循环实现,如果次数不明确使用while循环。 for (int _i = 2;i>=0;i—){
// for (int i = 0; i< 3;i++),这两种循环都可以实现
// 键盘录入登录的用户名和密码,用Scanner实现 _Scanner scanner= _new _Scanner(System._in);
System.out.println(“请输入账户: “);
// 使用Scanner中的字符串输入的方法nextLine() String name = scanner.nextLine();
System._out.println(“请输入密码: “);
String pwd = scanner.nextLine();
// 字符串的内容比较,用equals()方法实现 if (username.equals(name) && pwd.equals(password)){
System._out.println(“登录成功”);
// 一旦登录成功后,使用break结束循环 break;
}_else {
if (i == 0){
System.out.println(“你的账户超出输入次数,被锁定”);
}else {
// 输出登录失败有几次机会
// i的值是(0,1,2)需要(2,1,0)
// System.out.println(“登录失败,你还有”+ (2-i) +”次机会”); System._out.println(“登录失败,你还有” + i + “次机会”);} } } } }
String案例:遍历字符串
需求:键盘录入一个字符串,使用程序实现在控制台遍历该字符串
思路:
① 键盘录入一个字符串,用Scanner实现
② 遍历字符串,首先要获取到字符串中的每一个字符
public char charAt(int index): 返回指定索引处的char值,字符串也是从0开始的
③ 遍历字符串,其次要能够获取到字符串的长度
public int length(): 返回字符串的长度
数组的长度:数组名.length()
字符串的长度: 字符串对象.length()
④ 遍历字符串的通用格式
for(int i = 0; i
// 键盘录入一个字符串,用Scanner实现 _Scanner scanner = _new _Scanner(System._in);
System.out.println(“请输入一个字符串: “);
String line = scanner.nextLine();
// 遍历字符串,首先要获取到字符串中的每一个字符
// public char charAt(int index): 返回指定索引处的char值,字符串也是从0开始的
// for循环 line.chartAt()
// for (int i=0;i<3;i++){
// System.out.println(line.charAt(i));
// }
// 遍历字符串,其次要能够获取到字符串的长度
// System.out.println(line.length()); for (_int _i=0;i<line.length();i++){ System._out.println(line.charAt(i)); } }
String案例:统计字符次数
需求:键盘录入一个字符串,统计该字符串中大写字母字符,小写字母字符以及数字字符出现的次数(不考虑其他字符)
思路:
① 键盘录入一个字符串,用Scanner实现
② 要统计三种类型的字符个数,需定义三个统计变量,初始值为0
③ 遍历字符串,得到每一个字符
④ 判断该字符属于哪种类型,然后对应类型的统计变了+1
解析:假如ch是一个字符,我们要判断它到底属于大写、小写字母还是数字,直接判断该字符是否在对应的范围即可
1)大写字母:ch>= ‘A’ && ch <=’Z’
2)小写字母:ch>= ‘a’ && ch <=’z’
3)数字:ch>= ‘0’ && ch <=’9’
⑤ 输出三种类型的字符个数
public static void _main(String[] args) {
// 键盘录入一个字符串,用Scanner实现 _Scanner scanner = _new _Scanner(System._in);
System.out.println(“请输入一个字符串: “);
String line = scanner.nextLine();
// 统计三种类型的字符个数,需定义三个统计变量,初始值为0 int bigCount = 0;
_int _smallCount = 0;
_int _numberCount = 0;
// 遍历字符串,得到每一个字符 for (int _i = 0 ; i < line.length();i++){
_char _ch = line.charAt(i);
// 判断该字符属于哪种类型,然后对应类型的统计变了+1 if (ch>= ‘A’ && ch <=’Z’){
bigCount ++;
}else if (ch>= ‘a’ && ch <=’z’) {
smallCount++;
}else if (ch>= ‘0’ && ch <=’9’){
numberCount++;
}
}
// 输出三种类型的字符个数 System._out.println(“大写字母:”+ bigCount + “个”);
System.out.println(“小写字母:”+ smallCount + “个”);
System.out.println(“数字:”+ numberCount + “个”); }
String案例:拼接字符串
需求:定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,并在控制台输出结果。例如:数组为int[] arr = {1,2,3}; 执行方法后的输出结果为:[1,2,3]
思路:
① 定义一个int类型的数组,用静态初始化完成数组元素的初始化
② 定义一个方法,用于把int数组中的数组中的数据按照指定格式拼接成一个字符串返回,返回值类型String,参数列表int[] arr
③ 在方法中遍历数组,按照要求进行拼接
④ 调用方法,用一个变量接收结果
⑤ 输出结果
public static void _main(String[] args) {
// 定义一个int类型的数组,用静态初始化完成数组元素的初始化 int[] arr = {11,22,33};
// 调用方法,用一个变量接收结果 String s = _arrayToString(arr);
// 输出结果 System._out.println(“s: “+s); }
// 定义一个方法,用于把int数组中的数组中的数据按照指定格式拼接成一个字符串返回,
// 定义方法需要有两个明确:
// 1、返回值类型:String
// 2、参数:列表int[] arr_public static _String arrayToString( _int[] arr ){
// 在方法中遍历数组,按照要求进行拼接
// 因为最终返回一个字符串,所以需要定义一个字符串类型为空进行对数组的接收 String s = “”;
s += “[“;
_for (int _i = 0; i < arr.length; i++){
// 判断i是不是最后一个元素 if (i == arr.length -1){
s += arr[i];
}else {
s += arr[i];
s += “,”;
}
}
s += “]”;
// 返回自定义的字符串 return s;}
String案例:字符串反转
需求:定义一个方法,实现字符串反转,键盘录入一个字符串,调用该方法后,在控制台输出结果
例如:键盘录入abc,实际输出结果cba
思路:
① 键盘录入一个字符串,用Scanner实现
② 定义一个方法,实现字符串反转。方法中的返回值类型:String,参数:String s
③ 在方法中把字符串倒着遍历,然后把每一个得到的字符拼接成一个字符串并返回
④ 调用方法,用一个变量接受结果
⑤ 输出结果
_public static void _main(String[] args) {
// 键盘录入一个字符串,用Scanner实现 _Scanner scanner = _new _Scanner(System._in);
System.out.println(“请输入一个字符串: “);
String line = scanner.nextLine();
// 调用方法,用一个变量接受结果 String reverse = _stringReverse(line);
System.out.println(reverse); }
// 定义一个方法,实现字符串反转。
// 定义方法需要有两个明确:
// 1、返回值类型:String (反转后的字符串)
// 2、参数:String s (反转前传来的字符串)
// 参数的传递是通过键盘录入的line的实参传给形参s的_public static _String stringReverse(String s){
// 定义一个字符串s1为空 _String s1 = “”;
// 在方法中把字符串倒着遍历,然后把每一个得到的字符拼接成一个字符串并返回 for (_int _i = s.length()-1; i>=0; i —){ s1 += s.charAt(i); }
_return _s1; }
2.5 帮助文档查看String中的方法
方法名 说明
public boolean equals(Object anObject) 比较字符串的内容,严格区分大小写(用户名和密码)
public char charAt(int index) 返回指定索引处的char值,意思是在该索引上的字符
public int length() 返回此字符串的长度
StringBuilder
3.1 StringBuilder 概述
StringBuilder 概述:StringBuilder是一个可变的字符串类,我们可以把它看成一个容器,这里的可变指的是StringBuilder对象中的内筒可变,在创建中不会出现新的对象
普通字符串拼接:
public static void _main(String[] args) {
String s = “hello”;
// s = s + “world”;
s += “world”;
System._out.println(s); }
输出:helloworld
TIPs:如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,耗时费力还浪费内存,但是这种操作不可避免,所有我们通过Java提供的StringBuilder类来解决这个问题
String和StringBuilder的区别:
1、String: 内容是不可改变的
2、StringBuilder:内容是可以改变的
3.2 StringBuilder 构造方法
方法名 说明
public StringBuilder() 创建一个空白可变字符串对象,不包含任何内容
public StringBuilder(String str) 根据字符串的内容,来创建可变字符串对象
构造方法:
public static void _main(String[] args) {
StringBuilder stringBuilder = _new _StringBuilder();
System._out.println(“stringBuilder: “ + stringBuilder); }
3.3 StringBuilder 添加和反转方法(不可使用)
方法名 说明
public StringBuilder append(任意类型) 添加数据,并返回对象本身内容
public StringBuilder reverse() 返回相反的字符序列
添加方法(不可使用):
public static void _main(String[] args) {
// 创建对象 _StringBuilder stringBuilder = _new _StringBuilder();
// public StringBuilder append(任意类型) :添加数据,并返回对象本身内容
// 使用链式编程(因为对象添加数据后返回对象本身,所以是原来的对象,可以接着调用方法) _stringBuilder.append(“hello”).append(“world”).append(“java”);
System._out.println(“stringBuilder:” + stringBuilder); }
反转方法(不可使用):
public static void _main(String[] args) {
// 创建对象 _StringBuilder stringBuilder = _new _StringBuilder();
// public StringBuilder reverse(): 返回相反的字符序列 _stringBuilder.reverse();
System._out.println(“stringBuilder:” + stringBuilder); }
3.4 String和StringBuilder的相互装换
1、StringBuilder 转换为 String
public String toString(): 通过toString()方法就可以实现StringBuilder转换为String
public static void _main(String[] args) {
// 创建对象 _StringBuilder stringBuilder = _new _StringBuilder();
// public StringBuilder reverse(): 返回相反的字符序列 _stringBuilder.append(“hello”);
// 通过toString()方法就可以实现StringBuilder转换为String _String s = stringBuilder.toString();
System._out.println(“stringBuilder:” + stringBuilder); }
2、String 转换为 StringBuilder
public StringBuilder(String s):通过构造方法就是可以实现String 转换为 StringBuilder
public static void _main(String[] args) {
String s = “hello”;
// 通过构造方法就是可以实现String 转换为 StringBuilde _StringBuilder stringBuilder = _new _StringBuilder(s);
System._out.println(stringBuilder); }
StringBuilder案例:拼接字符串
需求:定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,并在控制台输出结果。例如:数组为int[] arr = {1,2,3}; 执行方法后的输出结果为:[1,2,3]
public static _String arrayToString( _int[] arr ){
// 在方法中遍历数组,按照要求进行拼接
// 因为最终返回一个字符串,所以需要定义一个字符串类型为空进行对数组的接收 StringBuilder stringBuilder = _new _StringBuilder();
stringBuilder.append(“[“);
_for (int _i = 0; i < arr.length; i++){
// 判断i是不是最后一个元素 if (i == arr.length -1){
stringBuilder.append(arr[i];);
}else {
stringBuilder.append(arr[i];).append(“,”);;
}
}
stringBuilder.append(“]”);
String s = stringBuilder.toString();
// 返回自定义的字符串 return s;}
StringBuilder案例:字符串反转
需求:定义一个方法,实现字符串反转,键盘录入一个字符串,调用该方法后,在控制台输出结果
例如:键盘录入abc,实际输出结果cba
_public static void _main(String[] args) {
// 键盘录入一个字符串,用Scanner实现 _Scanner scanner = _new _Scanner(System._in);
System.out.println(“请输入一个字符串: “);
String line = scanner.nextLine();
// 调用方法,用一个变量接受结果 String reverse = _stringReverse(line);
System.out.println(reverse); }
// 定义一个方法,实现字符串反转。
// 定义方法需要有两个明确:
// 1、返回值类型:String (反转后的字符串)
// 2、参数:String s (反转前传来的实参)
// 参数的传递是通过键盘录入的line的实参传给形参s的_public static _String stringReverse(String s){
// 使用StringBuilder实现字符串反转,并转成String返回
// String —> StringBuilder —>reverse()—> String
// 创建一个匿名对象new StringBuilder(s)调用reverse()反转方法在调用toString()方法_
_return new _StringBuilder(s).reverse().toString(); }
3.5 帮助文档查看StringBuilder的方法
方法名 说明
public StringBuilder append(任意类型) 添加数据,并返回对象本身
public StringBuilder reverse() 返回相反的字符序列
public String toString() 通过toString()就可以实现把StringBuilder 转换为String