API概述
Java官方给开发者已经写好了很多个类,类中有各种方法供开发者调用。我们学习Java语言更多的是学习官方给我们提供好的类和方法。 这些类和方法,我们就把它称之为API
Java API文档的使用步骤
1.搜索需要的类
【显示】-->【索引】-->输入框输入要搜索的类
2.看类在哪个包中
java.lang包,使用该包下的类不用导包
非java.lang包,就需要导包
3.看类的描述信息
告诉你该类是干什么用的。
4.看构造方法
用来创建对象的,如果有多个构造方法就是提供多种创建对象的方式。
5.看方法摘要
该类中有哪些方法,每一个方法是什么作用。
Scanner类
//1.创建Scanner对象
Scanner sc=new Scanner(System.in);
//2.键盘录入数据
int num=sc.nextInt(); //录入整数
String str=sc.nextLine(); //录入字符串,结束标记换行 录入"hello world“,结果"hello world“
String str2=sc.next(); //录入字符串,结束标记是空格/tab键 录入"hello world",结果“hello"
注意事项:
nextInt()和nextLine()不能同时使用。
String类
String是Java API 提供的一个类,它表示字符串的意思。
1.Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现.
"abc"就是一个字符串对象
2.Java的字符串是常量,一旦创建不能更改。
指的是字符串在内存中的值不能更改。
使用构造方法创建String对象
//创建一个空的字符串对象
String s1=new String();
System.out.println(s1); //什么也没有(看不见任何字符)
char[] chs={'a','b','c','e','f'};
//利用字符数组创建String对象
String s2=new String(chs);
System.out.println(s2); //abcdef
//利用字符数组的一部分创建一个新的字符串,从0索引开始,拿3个字符
String s3=new String(chs,0,3);
System.out.println(s3); //abc
System.out.println("-------------------");
//利用字节数组创建一个String对象
byte[] bs={97,98,99,100,101,102};
String s4=new String(bs);
System.out.println(s4); //abcdef
//利用字节数组的一部分创建string对象,从3索引开始,拿3个字节
String s5=new String(bs,3,3);
System.out.println(s5); //def
两种字符串对象的区别
String s1="abc";
String s2="abc";
System.out.println(s1==s2); //true,字符串常量存储在常量池中,s2会复用s1的地址
String s3=new String("abc");
String s4=new String("abc");
System.out.println(s3==s4); //false,每次new一个String对象,都会重新在堆内存开辟空间。
字符串的常见面试题
String s1="abc";
String s2="abc";
System.out.println(s1==s2); //true
String s3="abcdef";
String s4=s2+"def"; //字符串变量左拼接,会生成一个新的字符串
System.out.println(s3==s4); //false
String s5="abc";
String s6="a"+"b"+"c"; //在编译时 "a"+"b"+"c"转换为"abc"
System.out.println(s5==s6);//true
字符串的常见方法
比较相等的方法
public boolean equals(Object anObject)
用来比较两个字符串的内容是否相等
public boolean equalsIgnoreCase(String anotherString)
用来比较两个字符串的内容是否相等,不考虑大小写。
代码演示
String s1 = "helloworld";
String s2 = new String("helloworld");
//比较地址
System.out.println(s1 == s2); //false
//比较内容
boolean f1 = s1.equals(s2);
System.out.println(f1); //true
boolean f2 = s2.equals(s1);
System.out.println(f2); //true
System.out.println("---------");
String s3="abc";
String s4="ABC";
//忽略大小写,比较字符串内容是否相等
boolean f3 = s3.equalsIgnoreCase(s4);
System.out.println(f3); //true
用户登录案例
用户登录需要对用户录入的用户名、密码,和已有的用户名、密码进行比较。String类提供了比较字符串内容是否相等的方法。
public boolean equals(Object anObject)
用来比较两个字符串的内容是否相等
public boolean equalsIgnoreCase(String anotherString)
用来比较两个字符串的内容是否相等,不考虑大小写。
使用上面的方法完成登录案例。
public class LoginDemo {
public static void main(String[] args) {
//已有的用户名和密码
String username="amdin";
String password="123";
for (int i = 1; i <= 3; i++) {
//1.键盘录入用户名和密码字符串
Scanner sc=new Scanner(System.in);
System.out.println("请输入用户名:");
String myUsername=sc.nextLine();
System.out.println("请输入密码:");
String myPassword = sc.nextLine();
//2.和已有的用户名和密码进行比较 使用equals方法
if(myUsername.equals(username)&&myPassword.equals(password)){
System.out.println("登录成功");
break;
}else{
int n=3-i;
if(n==0){
System.out.println("登录失败,登录次数已用完....");
}else {
System.out.println("登录失败,还剩余"+n+"次机会");
}
}
}
}
}
字符串遍历
遍历字符串可以用到下面的几个方法。
public int length()
获取字符串的长度
public char charAt(int index)
获取字符串中指定索引位置的字符
public char[] toCharArray()
把字符串转换为字符数组
public class StringDemo3{
public static void main(String[] args){
String s="键盘敲烂,月薪过万";
//遍历方式1
//快捷键:s.length().fori
for(int i=0;i<s.length();i++){
char ch= s.charAt(i);
System.out.println(ch);
}
//遍历方式2
char[] chs=s.toCharArray();
for(int i=0;i<chs.length;i++){
System.out.println(chs[i]);
}
}
}
键盘录入一个字符串,统计大写字母、小写字母、数字字符的个数
//1.使用Scanner录入字符串
//2.定义三个计数器,count1 ,count2,count3
//3.遍历字符串,判断每一个字符串是大写字母、还是小写字母、以及数字字符
//如果是大写字母,count1++
//如果是小写字母,count2++
//如果是数字字符,count3++
public class StringDemo4{
public static void main(String[] args){
//1.使用Scanner录入字符串
Scanner sc=new Scanner(System.in);
System.out.println("键盘录入一个字符串:");
String str=sc.nextLine();
//2.定义三个计数器,count1 ,count2,count3
int count1=0;
int count2=0;
int count3=0;
//3.遍历字符串,判断每一个字符串是大写字母、还是小写字母、以及数字字符
char[] chs=str.toCharArray();
for(int i=0;i<chs.length;i++){
char ch=chs[i];
if(ch>='A' && ch<='Z'){
//如果是大写字母,count1++
count1++;
}else if(ch>='a' && ch<='z'){
//如果是小写字母,count2++
count2++;
}else if(ch>='0' && ch<='9'){
//如果是数字字符,count3++
count3++;
}
}
System.out.println("大写字母个数:"+count1);
System.out.println("小写字母个数:"+count2);
System.out.println("数字字符个数:"+count3);
}
}
手机号码的屏蔽
手机号码屏蔽,需要对号码进行截取。String类提供了对字符串进行截取的方法
public String substring(int index)
从指定的索引位置截取到字符串的末尾
public String substring(int start,int end)
从指定的开始索引位置截取到指定的结束索引位置。(包含头,不包含尾)
public class StringDemo5 {
public static void main(String[] args) {
//定义手机号码
String str="13838384838";
//调用方法,将指定的号码转换为屏蔽后的号码
String result = getString(str);
System.out.println(result);
}
public static String getString(String str) {
//截取字符串的前3位
String s1=str.substring(0,3);
//截取字符串的后4位
String s2=str.substring(7);
//把s1和s2拼接起来,中间加几个*号
return s1+"****"+s2;
}
}
替换字符串
String类提供了对字符串进行替换的方法。可以用字符串替换的方法做敏感词过滤。
public String replace(String oldStr,String newStr)
使用新的字符串替换旧的字符串
public class StringDemo6 {
public static void main(String[] args) {
String str="你大爷的";
//把"大爷"替换为"****"
String result=str.replace("大爷","****");
System.out.println(result); //你****的
}
}
字符串的切割
String类提供了对字符串进行切割的方法。一个字符串切割之后,可以变成多个字符串,使用数组来存储。
public String[] split(String regex)
根据指定的字符串来切割字符串
注意:不能使用"."进行切割,因为"."表示任意字符;
如果真的需要用点进行切割,使用"\\."
public class StringDemo5 {
public static void main(String[] args) {
String str="www,itheima,com";
//使用","对字符串进行切割
String[] arr = str.split(",");
//遍历字符串数组
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
StringBuilder类
StringBuilder是一个字符串缓冲区(理解成一个容器),它可以存储任意类型的数据,最终都会变成字符串。
public StringBuilder append(任意类型的数据)
往缓冲区中添加任意类型的数据。返回StringBuilder容器本身
public String toString()
把字符串缓冲区转换为字符串
public StringBuilder reverse()
对缓冲区的内容进行反转
按照指定格式拼接字符串
public class StringBuilderDemo3 {
public static void main(String[] args) {
int[] array={1,2,3,4,5};
//按照指定的格式,输出数组中的元素 [1, 2, 3, 4, 5]
StringBuilder sb=new StringBuilder();
//往StringBuilder中添加一个"["
sb.append("[");
//遍历数组中的元素
for (int i = 0; i < array.length; i++) {
if(i==array.length-1){
//如果是最后一个元素,添加一个元素,再添加一个"]"
sb.append(array[i]).append("]");
}else{
//如果不是最后一个元素,添加一个元素,再添加一个"逗号 空格"
sb.append(array[i]).append(", ");
}
}
//把StringBuilder转换为String
String s = sb.toString();
System.out.println(s);
}
}
判断字符串是否为对称字符串
public class StringBuilderDemo4 {
public static void main(String[] args) {
String str="abcba";
//对字符串进行反转,和原来的字符串进行比较,如果一样那就是对称的
StringBuilder sb=new StringBuilder(str);
sb.reverse(); //反转
String str2 = sb.toString(); //把StringBuilder转换为String
boolean b = str2.equals(str); //和原来的字符串进行比较
System.out.println(b);
System.out.println("-----------------");
boolean b1 = new StringBuilder(str).reverse().toString().equals(str);
System.out.println(b1);
}
}