javaSE--基础八(API简介,字符串常见方法)

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);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值