API
(Application Programming Interface) 应用程序编程接口
Java api 指的是JDK中提供的各种功能的Java类
API的使用
1.打开帮助文档
2.点击显示,找到索引,看到输入框
3.你要学习什么内容,在输入框输入即可
4.看包
java.lang包下的类在使用的时候是不需要导包
5.看类的描述
6.看构造方法
7.看成员方法
public String nextLine():获取键盘录入的字符串数据
String类
字符串类:由多个字符组成的一串数据
字符串其本质是一个字符数组
构造方法:String(String original):把字符串数据封装成字符串对象
String(char[] value):把字符串数组的数据封装成字符串对象
String (char[] value, int index,int count):把字符数组中的一部分数据封装成字符串对象
注意:字符串是一种比较特殊的引用数据类型,直接输出字符串对象输出的是该对象中的数据
String s1=new String("love you");
System.out.println("s1:"+s1);
char[]chs= {'l','o','v','e','y','o','u'};
String s2=new String(chs);
System.out.println("s2:"+s2);
char[]chs1= {'l','o','v','e','y','o','u'};
String s3=new String(chs1,0,chs1.length);
System.out.println("s3:"+s3);
String s4="love you";
System.out.println("s4:"+s4);
通过构造方法创建的字符串对象和直接赋值方式创建的字符串对象有什么区别呢?
直接赋值的创建对象在方法区(常量池)
构造方法创建的字符串对象在堆内存
==:
基本数据类型:比较的是基本数据类型的值是否相同
引用数据类型:比较的是引用数据类型的地址值是否相同
String类的判断功能
Object:是类层次结构中的根类,所有的类都直接或间接的继承自该类
如果一个方法的形式参数是object,那么这里我们就可以传递它的任意的子类对象
boolean equals(Object anObject) 将此字符串与指定的对象比较
boolean equalsIgnoreCase(String anotherString) 将此 String 与另一个 String 比较,不考虑大小写
boolean startsWith(String prefix)
测试此字符串是否以指定的前缀开始
boolean endsWith(String suffix)
测试此字符串是否以指定的后缀结束
String s1="hello";
String s2="hello";
String s3="Hello";
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
System.out.println("-------------------------------");
System.out.println(s1.equalsIgnoreCase(s2));
System.out.println(s1.equalsIgnoreCase(s3));
System.out.println("-------------------------------");
System.out.println(s1.startsWith("he"));
System.out.println(s2.startsWith("ll"));
System.out.println("-------------------------------");
System.out.println(s1.endsWith("lo"));
System.out.println(s3.endsWith("oo"));
}
练习:模拟登录,给三次机会,并提示还有几次
给三次机会用for循环实现
1.定义两个字符串对象,用于存储已经存在的用户名和密码
2.键盘录入用户名和密码
3.拿键盘录入的用户名和密码已经存在的用户名和密码进行比较
如果内容相同,提示登录成功
如果内容不同,提示登录失败,并提示还有几次机会
for(int x=0;x<3;x++) {
String username="admin";
String password="admin";
Scanner sc=new Scanner(System.in);
System.out.println("请输入用户名:");
String name=sc.nextLine();
System.out.println("请输入密码:");
String pwd=sc.nextLine();
if(username.equals(name)&&password.equals(pwd)) {
System.out.println("登录成功");
break;
}
else {
if((2-x)==0) {
System.out.println("你本次登录机会已用完,账户已被锁定,请与工作人员联系");
}else {
System.out.println("登录失败,还有"+(2-x)+"次机会");
}}
}
String类的获取功能
int length() 返回此字符串的长度
char charAt(int index) 返回指定索引处的 char 值
int indexOf(String str) 返回指定子字符串在此字符串中第一次出现处的索引。
String substring(int beginIndex)
返回一个新的字符串,它是此字符串的一个子字符串。 String substring(int beginIndex, int endIndex) 包括左边不包括右边
返回一个新字符串,它是此字符串的一个子字符串。
String s1="hello world";
System.out.println(s1.length());
System.out.println(s1.charAt(0));
System.out.println(s1.charAt(1));
System.out.println("---------------------------------------");
System.out.println(s1.indexOf("or"));
System.out.println(s1.indexOf("ll"));
System.out.println("---------------------------------------");
System.out.println(s1.substring(4));
System.out.println(s1.substring(8));
System.out.println("---------------------------------------");
System.out.println(s1.substring(2, 9));
System.out.println(s1.substring(0, s1.length()));
String trim():去除字符串两端空格
String[] split(String str)按照指定符号分隔字符串
String s1="helloworld";
String s2=" helloworld ";
String s3=" hello world ";
System.out.println("---"+s1+"------");
System.out.println("---"+s1.trim()+"------");
System.out.println("---"+s2+"------");
System.out.println("---"+s2.trim()+"------");
System.out.println("---"+s3+"------");
System.out.println("---"+s3.trim()+"------");
String s4="aa,bb,cc";
String[]str1=s4.split(",");
for(int i=0;i<str1.length;i++) {
System.out.println(str1[i]);
}
String类练习:把数组中的数据按指定格式拼接成一个字符串
int []arr= {1,2,3};
String s1=NumtoString(arr);
System.out.println(s1);
}
public static String NumtoString(int[] arr) {
String s="";
s+="[";
for(int i=0;i<arr.length;i++) {
if(i<arr.length-1) {
s+=arr[i];
s+=",";
}
else {
s+=arr[i];
s+="]";}
}
return s;
}
字符串反转
例键盘录入“abc” 输出结果“cba”
System.out.println("请输入一串字符串:");
Scanner sc=new Scanner(System.in);
String s1=sc.nextLine();
System.out.println(reverse(s1));
}
public static String reverse(String s1) {
char[]chs=s1.toCharArray();
for(int start=0, end=chs.length-1;start<=end;start++,end--) {
char temp=chs[start];
chs[start]=chs[end];
chs[end]=temp;
}
String s2=new String(chs);//把字符数组转换为字符串
return s2;
}
StringBuilder类(可变的字符序列)字符缓冲区类
String和StringBulider的区别:
String的内容是固定的
StringBuilder的内容是可变的
构造方法:
StringBuilder()
成员方法:
public int capacity(): 返回当前容量(容量是理论值)
public int length() :返回长度
public StringBuilder append(任意类型) 添加功能:添加数据,并返回自身对象
public StringBuilder reverse() 反转功能
链式编程sb.append("hello ").append("world");
StringBuilder和String的相互转换
public String toString():通过toString()就可以吧StringBuilder转成String
String —StringBuilder
StringBuilder(String str):通过构造方法就可以实现把String转换成StringBuilder
练习把数组拼接成字符串(采用StringBuilder)int[] arr={1,2,3}; [1,2,3]
i
nt[]arr= {1,2,3};
System.out.println(arraytoString(arr));
}
public static String arraytoString(int []arr) {
StringBuilder s=new StringBuilder();
s.append("[");
for(int i=0;i<arr.length;i++) {
if(i<arr.length-1) {
s.append(arr[i]);
s.append(",");}
else {
s.append(arr[i]);
}
}
s.append("]");
String s1=s.toString();
return s1;
}
练习2 字符串反转
System.out.println("请输入一串字符串:");
Scanner sc=new Scanner(System.in);
String s=sc.nextLine();
System.out.println(reverse(s));
}
public static String reverse(String s) {
StringBuilder s1=new StringBuilder(s);
s1.reverse();
String s2=s1.toString();
return s2;}
}
练习3:判断一个字符串是否是对称字符串
System.out.println("请输入一串字符串:");
Scanner sc=new Scanner(System.in);
String s1=sc.nextLine();
System.out.println(isSymmerty(s1));
}
public static boolean isSymmerty(String s1) {
StringBuilder s2=new StringBuilder(s1);
s2.reverse();
String s3=s2.toString();
return s3.equals(s1);
}