String类

本文详细介绍Java中String类的构造方法及成员方法,包括字符串的创建、判断、获取、转换等功能,并提供多个实用案例,如模拟登录验证、遍历字符串、统计字符等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

String类:

由多个字符组成的一串数据。

底层是一个字符数组。

 

构造方法:

A:String();//空字符串构造方法

B:String(byte[] bys) ;//把一个字节数组转换成字符串

C:String(byte[] bys,int index,int count);//把一个字节数组的一部分转成字符串。count:表示计数,个数的意思。

D:String(char[] chs);//把一个字符数组转成字符串。   

E:String(char[] chs,int index,int count);//把一个字符数组的一部分转成字符串。

F:String(String str);//有参构造方法

G:String s = "hello";//给一个字符串赋值

 

(3)成员方法:

A:判断功能

boolean equals(Object obj);//比较字符串的内容是否相同

boolean equalsIgnoreCase(String str);//比较字符串的内容是否相同,忽略大小写 boolean contains(String str);//字符串对象中是否包含给定的字符串。

boolean startsWith(String str);//是否以指定的字符串开头。

boolean endsWith(String str);//是否以指定的字符串结束。

boolean isEmpty()//是否为空。""还是null。

B:获取功能

int length();// 返回字符串的字符个数。也就是长度。

char charAt(int index);// 返回指定索引处的字符。

int indexOf(int ch);//返回指定字符在字符串中的第一次出现的索引。

int indexOf(String str);//返回指定字符串在字符串中的第一次出现的索引。

int indexOf(int ch,int formIndex);// 返回从指定位置开始的指定字符在字符串中的第一次出现的索引。

int indexOf(String str,int formIndex);//返回从指定位置开始的指定字符串在字符串中的第一次出现的索引。

String substring(int start);//截取字符串。从start开始到末尾。

String substring(int start,int end);// 截取字符串。从start到end。(包左不包右。)

C:转换功能

byte[] getBytes();//把字符串转换成字节数组。

char[] toCharArray();//把字符串转换成字符数组。

static String copyValueOf(char[] chs);//把字符数组转换成字符串。

static String valueOf(char[] chs);//把字符数组转换成字符串。

static String valueOf(int i);// 把一个int类型的数据转换成字符串。

String toLowerCase();//把字符串转成小写

String toUpper();//把字符串转成大写

String concat(String str);//字符串的拼接。

D:其他功能

a:替换功能

String replace(char old,char nrw);//用给定的new字符把字符串中的old字符替换。

String replace(String old,String new);//用给定的new字符串把字符串中的old字符串替换。

b:去除前后空格

String trim();//去除字符串前后的空格。

c:按照字典顺序比较

int compareTo(String str);//按字典顺序比较两个字符串。

 

案例:

A:模拟用户登录

分析:

a:有已知的用户名和密码。

String username = "wangzhiyong";

String password = "wangzhiyong";

b:键盘录入用户名和密码。

   用Scanner实现。

c:比较用if语句实现。

d:给三次机会,如果三次不成功。则吞卡。(退出)

 代码实现:

   public class StringTest { 

          public static void main(String[] args) {

                   // 已知的用户名和密码。

                  String username = "wangzhiyong";

                  String password = "wangzhiyong";

 

                   for (int x = 0; x < 3; x++) {

                    // x=0,1,2

                  // 键盘录入用户名和密码。

                  Scanner sc = new Scanner(System.in);

                               System.out.println("请输入用户名:");

                               String name = sc.nextLine();

                              System.out.println("请输入密码:");

                    String pwd = sc.nextLine();

 

                            // 比较用if语句实现。

                            if (username.equals(name) && password.equals(pwd)) {

                                     System.out.println("登录成功");

                                        break;

                            } else {

                                // 2,1,0

                               if ((2 - x) == 0) {

                                    System.out.println("没有机会了,请和有关方面联系");

                              } else {

                                    System.out.println("登录失败,你还有" + (2 - x) + "次机会");

                                        }

                                                 }

                            }

               }

     }

 

            

B:遍历字符串

分析:

 a:定义一个字符串:“hallowolld”

 b:依次获取每一个字符

代码体现: 

   public class StringTest{

          public static void main(String[] args){

          //定义一个字符串

          String s = "hellowold";

          //依次获取每一个字符

          int length = s.length();

          for (int x = 0; x<length;x++){

          system.out.println(s.charAt(x));

            }

        } 

     }

    

C:统计字符串中大写字母,小写字母以及数字字符出现的次数

分析:

a:定义一个字符串对象。(可以改进为键盘录入)

b:定义三个统计变量  

    bigCount=0

    smallCount=0

    numberCount=0

c:遍历字符串,获取得到每一个字符。

d:判断该字符在哪个范围。

  char ch = '?';

  如果在大写:bigCount++ ch>='A' &&ch<='Z'

  如果在小写:smallCount++ ch>='a' &&ch<='z'

  如果在数字:numberCount++ ch>='0' &&ch<='9'

e:输出统计变量即可。

代码体现:

     public class StringTest2 {

                public static void main(String[] args) {

                             // 定义一个字符串对象。(可以改进为键盘录入)

                             String s = "hello1234567WORLDJava";

 

                             // 定义三个统计变量。

                             int bigCount = 0; 

                             int smallCount = 0;

                             int numberCount = 0;

 

                            // 遍历字符串,获取得到每一个字符。

                            for (int x = 0; x < s.length(); x++) {

                                 char ch = s.charAt(x);

 

                                 // 判断该字符在哪个范围。

                                 if (ch >= 'A' && ch <= 'Z') {

                                         bigCount++;

                                 } else if (ch >= 'a' && ch <= 'z') {

                                        smallCount++;

                                } else {

                                        numberCount++;

                               }

                            }

 

 

                            //输出统计变量即可。

                            System.out.println("大写字母:"+bigCount);

                            System.out.println("小写字母:"+smallCount);

                           System.out.println("数字字符:"+numberCount);

                }

      }

 

D:把一个字符串的首字母变成大写,其他的全部小写

分析:

a:定义字符串。

b:截取出首字母。 

     截取出其他字母。

c:截取出首字母。 变大写

        截取出其他字母。变小写

d:拼接。

代码实现:

  public class StringTest {

        public static void main(String[] args){

               //定义一个字符串。

               String s = "iloveYOU";

               //截取出首字母,截取出其他字母。

               String s1 = s.substring(0,1);

               String s2 = s.substring(1);

               //拼接。

               String s3 = s1.toUpperCase().concat(s2.toLowerCase());

               system.out.println(s30;

         }

   }

 

E:统计大串中小串出现的次数

   获取一个字符串中指定子串出的次数。

   比如说"hanbasdnbafllgnbahjnbakqqqqlnbaxi"在这个字符串中,

   多有个nba?

分析:

a:定义两个字符串,一个大串,一个小串。

b:定义一个统计变量。

c:在大串中查找一次小串:

 返回-1,直接返回统计变量。

 返回不是-1,统计变量++。

 d:把大串查过的部分截取掉,把值赋值给大串,返回C继续。

     由于次数不知道多少次,所以,用while循环。条件是:不是-1.

代码实现:

       public class StringTest {

                 public static void main(String[] args) {

                         // 定义两个字符串,一个大串,一个小串。

                        String maxString = "hanbasdnbafllgnbahjnbakqqqqlnbaxi";

                         String minString = "nba";

 

                            int count = getCount(maxString, minString);

                                  System.out.println(count);

                    }

 

                 public static int getCount(String maxString, StringminString) { 

                             int count = 0;

                             int index = 0;

                           // 查找,赋值,和判断放到一条语句上了。

 

                          while ((index = maxString.indexOf(minString)) !=-1){

                                                                            

                                              count++;

                               // 重新赋值的动作

                             maxString = maxString.substring(index +minString.lengt());

                         }

 

                            return count;

                }

     }

 

 

F:对字符串中的数据按照自然排序:

   举例:给出:"bagecdf"

   要求结果:"abcdefg"

 分析:

 a:定义一个字符串。

 b:把字符串转换成字符数组。

 c:对字符数组排序。

 d:把排序后的数组中的数据拼接成一个字符串即可。

代码体现:

    public class StringTest2 {

                 public static void main(String[] args) {

                // 定义一个字符串。

                String s = "bagecdf";

 

              // 把字符串转换成字符数组。

             char[] chs = s.toCharArray();

 

             // 对字符数组排序

            sort(chs);

 

           // 把排序后的数组中的数据拼接成一个字符串即可。

             String result = "";

             for (int x = 0; x < chs.length; x++) {

                    result += chs[x];

              }

                   System.out.println(result);

           }

 

            private static void sort(char[] chs) {

                       for (int x = 0; x < chs.length - 1; x++) {

                               for (int y = 0; y < chs.length - 1 - x; y            ++) {

                                      if (chs[y] > chs[y + 1]) {

                                          char ch = chs[y];

                                         chs[y] = chs[y + 1];

                                         chs[y + 1] = ch;

                                     }

                              }

                       }

         }

   }

 

StringBuffer和StringBuilder(功能完全相同):

(1)字符缓冲区类。

StringBuffer:线程安全,效率低。

StringBuilder:线程不安全,效率高。

(2)构造方法:

A:StringBuffer sb = new StringBuffer();

B:StringBuffer sb = new StringBuffer(20);

C:StringBuffer sb = new StringBuffer("hello");

(3)成员方法:

A:添加功能:

      append();

      insert();

B:删除功能:

     delete();

    deleteCharAt();

C:截取功能:

    subString();

D:替换功能:

   replace();

E:反转功能:

   reverse();

代码体现:

import java.util.Scanner;

 

/*

 * 键盘录入一个字符串,控制台输出其反转后的数据:

 * 举例:abc

 * 结果:cba

 * 

 * 方式1:

 *  把字符串倒序输出。

 * 

 * 方式2:

 *  定义一个新的空字符串,把原始字符串变成字符数组,倒序遍历的时候拼接到新的字符串上。

 * 

 * 方式3:

 *  String -- StringBuffer -- String

 */

public class StringDemo {

           public static void main(String[] args) {

           Scanner sc = new Scanner(System.in);

                     System.out.println("请输入一个字符串:");

           String line = sc.nextLine();

 

           // 方式1: 把字符串倒序输出。

           for (int x = line.length() - 1; x >= 0; x--) {

                 System.out.print(line.charAt(x));

            }

                 System.out.println();

 

           // 方式2:定义一个新的空字符串,把原始字符串变成字符数组,倒序遍历的时候拼接到新的字符串上。

           String result = "";

           char[] chs = line.toCharArray();

          for (int x = chs.length - 1; x >= 0; x--) {

                result += line.charAt(x);

           }

                System.out.println(result);

 

         //方式3:String -- StringBuffer -- String

        StringBuffer sb = new StringBuffer(line);

                 sb.reverse();

                 String str = new String(sb);

                           System.out.println(str);

          }

}

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值