API
概述:(Application Programming Interface):应用程序编程接口
例子解释:
编写一个机器人程序去控制机器人踢足球,程序需要向机器人发出向前跑、向后跑、射门抢球等各种命令。
机器人厂商- -定会提供一些用于 控制机器人的接口类,这些类中定义好了操作机器人各种动作的方法。其实,
这些接口类就是机器人厂商提供给应用程序编程的接口,大家把这些类称为API
Java API:指的就是JDK中提供的各种功能的java类,这些类将底层的实现类封装起来。
接受变量的快捷键:ctrl+alt+V
String构造方法
``
package com.itheima_01;
public class StringDemo01 {
public static void main(String[] args) {
String s1=new String();
System.out.println("s1"+s1);
//根据字符数组的内容,来创建字符串对象
char [] chs={'a','c','j'};
String s2=new String(chs);
System.out.println("s2:"+s2);
//根据字节数组的内容,来创建字符串对象
byte[] bys={100,97,110};
String s3=new String(bys);
System.out.println("s3:"+s3);
//推荐使用
String s4="1234";
System.out.println("s4:"+s4);
}
}
String对象的特点
字符串的比较
使用 == 做比较
- 基本类型:比较的是数据值是否相同
- 引用类型:比较的是地址值是否相同
字符串是对象,它比较内容是否相同,是通过一个方法来实现的,叫equals()
- public boolean equals(Object an Object):将此字符串与指定对象进行比较。由于我们比较的是字符串对象,所以参数直接传递一个字符串
案例:用户登录
需求:已知用户名和密码,请用程序实现模拟用户登录。总共给三次机会,登录之后,给出相应的提示
``
package com.itheima_01;
import java.util.Scanner;
public class StringDemo02 {
public static void main(String[] args) {
String name="aaa";
String pwd="111";
//输入账户密码
for (int i = 0; i < 3; i++) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入用户名:");
String n = sc.nextLine();
System.out.println("请输入密码:");
String p = sc.nextLine();
//判断内容是否相同
if (name.equals(n) && pwd.equals(p)){
System.out.println("登陆成功");
break;
}else{
if((2-i)==0){
System.out.println("你的账户被锁定,请与管理员联系");
}else {
System.out.println("登陆失败,你还有"+(2-i) +"次机会");
}
}
}
}
}
遍历字符串
- public char charAt(int index): 返回指定索引处的char值,字符串的索引也是从0开始
- public int length(): 返回此字符串的长度
遍历字符串的通用格式
for(int i=0;i<s.length();i++){
s.charAt(i); //就是指定索引处的字符值
}
package com.itheima_01;
import java.util.Scanner;
public class StringDemo03 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入字符:");
String s=sc.next();
for (int i = 0; i <s.length() ; i++) {
System.out.println(s.charAt(i));
}
}
}
案例:统计字符次数
需求:键盘录入-一个字符串,统计该字符串中大写字母字符,小写字母字符,数字字符出现的次数(不考虑其他字符)
``
package com.itheima_01;
import java.util.Scanner;
/*
* 需求:键盘录入-一个字符串,统计该字符串中大写字母字符,小写字母字符,数字字符出现的次数(不考虑其他字符)
*/
public class StringDemo04 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入字符:");
String s=sc.next();
int c1=0,c2=0,c3=0;
for (int i = 0; i <s.length() ; i++) {
if(s.charAt(i)>='A' && s.charAt(i)<='Z'){
c1++;
}else if(s.charAt(i)>='a' && s.charAt(i)<='z'){
c2++;
}else if(s.charAt(i)>='0' && s.charAt(i)<='9'){
c3++;
}
}
System.out.println("大写字母有"+c1+",小写字母有"+c2+",数字有"+c3);
}
}
案例:拼接字符串
需求:定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,
并在控制台输出结果。例如,数组为int[] arr= {1,2,3};,执行方法后的输出结果为: [1,2, 3]
package com.itheima_01;
/*需求:定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,
并在控制台输出结果。例如,数组为int[] arr= {1,2,3};,执行方法后的输出结果为: [1,2, 3]
*/
public class StringDemo05 {
public static void main(String[] args) {
int[] arr = {11, 22, 33, 123,333,434};
String s= pinJie( arr);
System.out.println(s);
}
public static String pinJie(int[] arr) {
String ss="";
ss+="[";
//字符串拼接直接加号
for (int i = 0; i <arr.length ; i++) {
if(i==arr.length-1){//如果他是最后一个,不加逗号
ss+=arr[i];
}else{
ss+=arr[i];
ss+=","; //如果它不是最后一个,需要加上逗号
}
}
ss+="]";
return ss;
}
}
案例:字符串反转
需求:定义一个方法,实现字符串反转。键盘录入-个字符串,调用该方法后,在控制台输出结果
例如,键盘录入abc,输出结果cba
package com.itheima_01;
import java.util.Scanner;
/*
* 需求:定义一个方法,实现字符串反转。键盘录入-个字符串,调用该方法后,在控制台输出结果
例如,键盘录入abc,输出结果cba
*/
public class StringDemo06 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入字符串:");
String s = sc.next();
String ss=fanzhuan(s);
System.out.println(ss);
}
public static String fanzhuan(String s) {
String t="";
for (int i=s.length()-1; i >0; i--) {
t+=s.charAt(i);
}
return t;
}
}
方法名 | 说明 |
---|---|
public boolean equals(Object anObject) | 比较字符串的内容,严格区分大小写 |
public char charAt(int index) | 返回指定索引处的char值 |
public int length() | 返回此字符串的长度 |
StringBuilder概述
StringBuilder是一个可变的字符串类(即StringBuilder对象中的内容是可变的),我们可以把它看成是一个容器
String和StringBuilder的区别:
- String:内容是不可变的
- StringBuilder:内容是可变的
StringBuilder构造方法
方法名 | 说明 |
---|---|
public StringBuilder() | 创建一个空白可变字符串对象,不含有任何内容 |
public StringBuilder(String str) | 根据字符串内容,来创建可变字符串对象 |
package com.itheima_01;
public class StringBuilderDemo01 {
public static void main(String[] args) {
StringBuilder s1=new StringBuilder();
System.out.println("s1:"+s1);
System.out.println("s1.length():"+s1.length());
StringBuilder s2=new StringBuilder("hello");
System.out.println("s2:"+s2);
System.out.println("s2.length():"+s2.length());
}
}
方法名 | 说明 |
---|---|
public StringBuilder append(任意类型) | 添加数据,并返回对象本身 |
public StringBuilder reverse() | 返回相反的字符串序列 |
package com.itheima_01;
public class StringBuilderDemo02 {
public static void main(String[] args) {
//1.创建对象
StringBuilder s=new StringBuilder();
//public StringBuilder append(任意类型) 添加数据,并返回对象本身
s.append(12);
s.append("qwer");
s.append(89);
System.out.println("s"+s);
//也可以用链式添加,(因为返回的是对象,可以直接调用方法)
s.append(123).append("asd").append(567).append("cvb");
System.out.println("s"+s);
//public StringBuilder reverse() 返回相反的字符串序列
System.out.println(s.reverse());
}
}
StringBuilder和String的相互转换
1、StringBuilder转为String
public String toString(): 通过toString()就可以实现把StringBuilder转为String
2、String转换为StringBuilder
public StringBuilder(String s):通过构造方法将String转换为StringBuilder
package com.itheima_01;
public class StringBuilderDemo03 {
public static void main(String[] args) {
//public String toString(): 通过toString()就可以实现把StringBuilder转为String
StringBuilder s=new StringBuilder();
s.append("qwert");
String ss="";
ss=s.toString();
System.out.println(ss);
//public StringBuilder(String s):通过构造方法将String转换为StringBuilder
String s1="zxcv";
StringBuilder stringBuilder=new StringBuilder(s1);
System.out.println(stringBuilder);
}
}
案例:拼接字符串
需求:定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,并在控制台输出结果。例如,数组为int[] arr= {1,2,3};, 执行方法后的输出结果为: [1,2, 3]
package com.itheima_01;
public class StringBuilderDemo04 {
public static void main(String[] args) {
int[] arr= {1,2,3};
String jieguo=pinJie(arr);
System.out.println(jieguo);
}
public static String pinJie(int[] arr){
StringBuilder stringBuilder=new StringBuilder();
stringBuilder.append("[");
for (int i = 0; i < arr.length; i++) {
if (i == arr.length) {
stringBuilder.append(arr[i]);
}else{
stringBuilder.append(arr[i]).append(",");
}
}
stringBuilder.append("]");
String ss=stringBuilder.toString();
return ss;
}
}
案例:字符串反转
需求:定义一个方法,实现字符串反转。键盘录入-个字符串,调用该方法后,在控制台输出结果。例如,键盘录入abc,输出结果cba
思路:
①键盘录入-个字符串,用Scanner实现
②定义一个方法,实现字符串反转。返回值类型String,参数String s
③在方法中用StringBuilder实现字符串的反转,并把结果转成String返回
④调用方法,用一个变量接收结果
⑤输出结果
package com.itheima_01;
import java.util.Scanner;
public class StringBuilderDemo05 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入字符串:");
String m=sc.next();
String n=fanZhuan(m);
System.out.println(n);
}
public static String fanZhuan(String s){
StringBuilder stringBuilder=new StringBuilder(s);
stringBuilder.reverse();
String s1=stringBuilder.toString();
return s1;
}
}