Java基础之字符串

目录

1.API

1.1输入案例

2.String

2.1字符串概述

2.2字符串的特点

2.3String构造方法

2.4String对象的特点

2.5字符串的比较

2.6案例:用户登录

2.7案例:字符串的遍历

2.8案例:统计字符次数

2.9案例:字符串拼接

2.10案例:字符串反转

2.11通过帮助文档查看String中的方法

3.StringBuilder

3.1StringBuilder概述

3.2StringBuilder构造方法

3.3StringBuilder添加和反转方法​编辑

3.4StringBuilder和String之间的相互转换

3.5案例:字符串拼接升级版

3.6案例:字符串反转升级版

3.7通过帮助文档查看StringBuilder中的方法


1.API

  • API (Applic ation ProgrammingInterface):应用程序编程接口
  • Java API:指的就是JDK中提供的各种功能的Java类
    • 这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用。

1.1输入案例

需求:按照帮助文档的使用步骤学习Scanner类的使用,并实现键盘录入一个字符串,最后输出在控制台。

1.阅读API:

 

 2.编写案例:

ScannerDemo.java

package com.ydh_01;
import java.util.Scanner;

/*
    Scanner:
        用于获取键盘录入的数据。(基本数据类型,字符串数据)
    public String nextLine():
        获取键盘录入字符串数据
 */
public class ScannerDemo {
    public static void main(String[] args) {
        //创建对象
        Scanner in = new Scanner(System.in);

        //接受数据
        System.out.println("请输入一个字符串数据:");
        //Ctrl+Alt+V
        String line = in.nextLine();

        //输出结果
        System.out.println("你输入的数据是:"+line);
    }
}

2.String

2.1字符串概述

String类在java.lang包下,所以使用的时候不需要导包。

String类代表字符串,Java 程序中的所有字符串文字(例如"abc" )都被实现为此类的实例。也就是说,Java 程序中所有的双引号字符串,都是String类的对象。

2.2字符串的特点

  • 字符串不可变,它们的值在创建后不能被更改。
  • 虽然String的值是不可变的,但是它们可以被共享。
  • 字符串效果上相当于字符数组( char[]),但是底层原理是字节数组( byte[] )。(JDK8及以前是字符数组,JDK9及以后是字节数组)

2.3String构造方法

推荐使用直接赋值的方式得到字符串对象。

package com.ydh_02;

public class StringDemo01 {
    public static void main(String[] args) {
        //public String():创建一个空白字符串对象,不含任何内容
        String s1=new String();
        System.out.println("s1:"+s1);//s1:


        //public String(char[] chs):根据字符数组内容,来创建字符串对象
        char[] chs={'a','b','c'};
        String s2=new String(chs);
        System.out.println("s2:"+s2);//s2:abc

        //public String(byte[] bys):根据字节数组内容,来创建字符串对象
        byte[] bys={97,98,99};
        String s3 = new String(bys);
        System.out.println("s3:"+s3);//s3:abc

        //public s="abc";直接赋值的方式创建字符串对象,内容就是abc(推荐使用)
        String s4="abc";
        System.out.println("s4:"+s4);//s4:abc
    }
}

2.4String对象的特点


2.5字符串的比较

package com.ydh_02;

public class StringDemo02 {
    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);//false
        System.out.println(s1==s3);//false
        System.out.println(s3==s4);//true
        System.out.println("-------");

        //比较字符串内容是否相同
        System.out.println(s1.equals(s2));//true
        System.out.println(s1.equals(s3));//true
        System.out.println(s3.equals(s4));//true
    }
}

2.6案例:用户登录

package com.ydh_03;
import java.util.Scanner;

public class StringTest01 {
    public static void main(String[] args) {
        String username="ydh";
        String password="123456";
        Scanner in = new Scanner(System.in);
        for(int i=0;i<3;i++){
            System.out.println("请输入用户名:");
            String name = in.nextLine();

            System.out.println("请输入密码:");
            String pwd = in.nextLine();
            if(username.equals(name)&&password.equals(pwd)){//登录成功
                System.out.println("登录成功!");
                break;
            }else{//登录失败
                if (2-i==0){
                    System.out.println("你的账户被锁定,请与管理员联系!");
                }else{
                    System.out.println("登录失败,你还有"+(2-i)+"次机会!");
                }
            }
        }
    }
}

2.7案例:字符串的遍历

package com.ydh_03;
/*
    public char charAt(int index):返回指定索引处的char值,字符串的索引也是从0开始的
    public int length():返回此字符串的长度
* */

import java.util.Scanner;

public class StringTest02 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String s = in.nextLine();
        for (int i=0;i<s.length();i++){
            System.out.println(s.charAt(i));
        }
    }
}

2.8案例:统计字符次数

package com.ydh_03;

import java.util.Scanner;

public class StringTest03 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String s=in.nextLine();

        //三个统计变量,初始值都为0
        int bigCount=0;
        int smallCount=0;
        int numberCount=0;
        
        //遍历字符串,得到每一个字符
        for(int i=0;i<s.length();i++){
            char ch=s.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+"个");
    }
}

2.9案例:字符串拼接

package com.ydh_03;

public class StringTest04 {
    public static void main(String[] args) {
        int[] arr={1,2,3};
        String s=arrToString(arr);
        System.out.println("s="+s);//s=[1,2,3]

    }
    
    //定义一个方法,用于把int数组中的数据按照指定格式拼接成一个字符串返回
    public static String arrToString(int[] arr){
        //在方法中遍历数组,按照要求进行拼接
        String s="";
        s+='[';
        for(int i=0;i<arr.length;i++){
            s+=arr[i];
            if (i==arr.length-1){
                s+=']';
            }else{
                s+=',';
            }
        }
        return s;
    }
}

2.10案例:字符串反转

package com.ydh_03;
import java.util.Scanner;

public class StringTest05 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String s = in.nextLine();
        System.out.println(reverse(s));
    }
    
    //定义一个方法,实现字符串反转
    public static String reverse(String s){
        String ss="";
        //倒着遍历,字符拼接
        for(int i=s.length()-1;i>=0;i--){
            ss+=s.charAt(i);
        }
        return ss;
    }
}

2.11通过帮助文档查看String中的方法

这是常用的String方法

其他的String方法就需要我们自行查阅帮组文档。 

String s=null与String s=""的区别

  • null代表声明了一个空对象,是常量,根本就不是一个字符串。
  • ""代表声明了一个对象实例,这个对象实例的值是一个长度为0的空字符串。
  • null不可以调用方法,""可以调用方法。

3.StringBuilder

3.1StringBuilder概述

StringBuilder是一个可变的字符串类, 我们可以把它看成是一个容器,这里的可变指的是StringBuilder对象中的内容是可变的。

String和StringBuilder的区别:

  • String: 内容是不可变的
  • StringBuilder: 内容是可变的
     

3.2StringBuilder构造方法

package com.ydh_01;

public class StringBuilderDemo01 {
    public static void main(String[] args) {
        StringBuilder sb=new StringBuilder();//创建空白可变字符串对象
        System.out.println("sb:"+sb);//sb:
        System.out.println("sb.length():"+sb.length());//sb.length():0

        StringBuilder sb2 = new StringBuilder("hello");//创建非空白可变字符串对象
        System.out.println("sb2:"+sb2);//sb2:hello
        System.out.println("sb2.length():"+sb2.length());//sb2.length():5
    }
}

3.3StringBuilder添加和反转方法

package com.ydh_02;

public class StringBuilderDemo01 {
    public static void main(String[] args) {
        StringBuilder sb=new StringBuilder();
//        StringBuilder sb2=sb.append("hello");
//        System.out.println("sb:"+sb);//sb:hello
//        System.out.println("sb2:"+sb2);//sb2:hello
//        System.out.println(sb==sb2);//true

//        sb.append("hello");
//        sb.append("java");
//        sb.append(100);

        //链式编程
        sb.append("hello").append("java").append("100");
        System.out.println("sb:"+sb);//sb:hellojava100

        sb.reverse();
        System.out.println("sb:"+sb);//sb:001avajolleh
    }
}

3.4StringBuilder和String之间的相互转换

package com.ydh_02;

public class StringBuilderDemo02 {
    public static void main(String[] args) {
        StringBuilder sb=new StringBuilder();
        sb.append("hello");
//        String s=sb;//错误
        String s=sb.toString();//StringBuilder转换为String
        System.out.println(s);//hello

        String s2="world";
//        StringBuilder sb2=s2;//错误
        StringBuilder sb2=new StringBuilder(s2);//String转换为StringBuilder
        System.out.println(sb2);//world
    }
}

3.5案例:字符串拼接升级版

package com.ydh_03;

public class StringBuilderTest01 {
    public static void main(String[] args) {
        int[] arr={1,2,3};
        String s=arrToString(arr);
        System.out.println(s);//s=[1,2,3]
    }
    public static String arrToString(int []arr){
        StringBuilder sb=new StringBuilder();
        sb.append("[");
        for(int i=0;i<arr.length;i++){
            sb.append(arr[i]);
            if(i==arr.length-1){
                sb.append("]");
            }else{
                sb.append(",");
            }
        }
        String s=sb.toString();//StringBuilder转换为String
        return s;
    }
}

3.6案例:字符串反转升级版

package com.ydh_03;

import java.util.Scanner;

public class StringBuilderTest02 {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String line=in.nextLine();
        String s=myreverse(line);
        System.out.println("s="+s);
    }

    //在方法中用StringBuilder实现字符串的反转,并把结果转换成String返回
    public static String myreverse(String s){
//        String--StringBuilder--调用reverse方法--String
//        StringBuilder sb=new StringBuilder(s);
//        sb.reverse();
//        String ss=sb.toString();
//        return ss;
        return new StringBuilder(s).reverse().toString();
    }

}

3.7通过帮助文档查看StringBuilder中的方法

这是常用的StringBuilder方法

 其他的StringBuilder方法就需要我们自行查阅帮组文档。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值