String

String类在java.lang包下,所以在使用时不需要导包;String类代表的是字符串,java程序中的所有字符串文字(例如:“abc”,“你好!”)都被实现为此类的实例。也就是,java程序中所有的双引号字符串,都是String类的对象。

String类的特点:

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

String构造方法:

public String()    创建一个空白字符串,不含有任何内容

public String(char[ ] chs)    根据字符数组的内容,创建字符串对象

public String(byte[ ] bys)    根据字节数组的内容,创建字符串对象

String s = "abc";    直接赋值的方式创建字符串对象,内容就是双引号内的内容

public class String_test {
    public static void main(String[] args) {
        String s1 = new String();
        System.out.println("s1:"+s1);
        char[] chs = {'a','b','c'};
        String s2 = new String(chs);
        System.out.println("s2:"+s2);
        byte[] bys = {97,98,99};
        String s3 = new String(bys);
        System.out.println("s3:"+s3);
        String s4 = "abc";
        System.out.println("s4:"+s4);
    }
}

输出结果:
 

String对象的特点:

(1)通过new创建的字符串对象,每一次new都会申请一个内存空间,虽然内容相同,但是地址值不同;

char[ ]  chs = {'a','b','c'};

String s1 = new String(chs);

String s2 = new String(chs);

(2)以“”方式给出的字符串,只要字符序列相同(顺序和大小写都相同),无论在程序代码中出现几次,JVM都只会建立一个String对象,并在字符串池中维护;

String s3 = "abc";

String s4 = "abc"; 

字符串的比较:

(1)使用 == 作比较

基本类型:比较的是数据值是否相同;

引用类型:比较的是地址值是否相同;

(2)使用 equals 方法作比较

public boolean equals(Object anObject):将字符串与指定对象进行比较。

public class String_test {
    public static void main(String[] args) {
        String s1 = new String();
        char[] chs = {'a','b','c'};
        String s2 = new String(chs);
        System.out.println("s2:"+s2);
        byte[] bys = {97,98,99};
        String s3 = new String(bys);
        System.out.println("s3:"+s3);
        String s4 = "abc";
        System.out.println("s4:"+s4);
        System.out.println(s1==s2);
        System.out.println(s3.equals(s4));
    }
}
输出结果:

String用户登录实例:

import java.util.Scanner;
public class String_practice1 {
    public static void main(String[] args) {
        String name = "xiaotan";
        String password = "tanjinsen";
        Scanner input = new Scanner(System.in);
        System.out.println("请输入用户名:");
        while (true) {
            String name_input = input.nextLine();
            if (name.equals(name_input)) {
                for (int i = 0; i < 3; i++) {
                    System.out.println("请输入密码:");
                    String pass_input = input.nextLine();
                    if (password.equals(pass_input)) {
                        System.out.println("登陆成功!");
                        break;
                    } else {
                        System.out.println("密码错误,还有" + (2 - i) + "次机会!");
                        if (i == 2) {
                            System.out.println("该账号已被锁定!请重新输入账号!");
                        }
                    }
                }
            } else {
                System.out.println("账户不存在,请重新输入!");
            }
        }
    }

}

遍历字符串:

public char charAt(int index):返回指定索引处的char值,字符串的索引也是从0开始的;

public int length():返回字符串的长度,字符串对象.length()

遍历字符串通用格式:

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

System.out.println(s.charAt(i));

}

遍历字符串实例:

import java.util.Scanner;
public class String_practice2 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入字符串:");
        String s = input.nextLine();
        for (int i = 0; i < s.length(); i++) {
            System.out.println(s.charAt(i));
        }
    }
}
遍历字符串统计字符次数:
import java.util.Scanner;
public class String_practice2 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int count_daxie = 0;
        int count_xiaoxie = 0;
        int count_shuzi = 0;
        System.out.println("请输入字符串:");
        String s = input.nextLine();
        for (int i = 0; i < s.length(); i++) {
             if (s.charAt(i)>='A'&&'Z'>=s.charAt(i))
                count_daxie++;
            else if(s.charAt(i)>='a'&&'z'>=s.charAt(i))
                count_xiaoxie++;
            else if (s.charAt(i)>='0'&&'9'>=s.charAt(i))
                count_shuzi++;
        }
        System.out.println("大写字母出现次数:"+count_daxie);
        System.out.println("小写字母出现次数:"+count_xiaoxie);
        System.out.println("数字出现次数:"+count_shuzi);
    }
}
字符串拼接:
public class String_practice3 {
    public static String arrayToString(char[] arr){
        String s = new String();
        s += "[";
        for (int i = 0; i < arr.length; i++) {
            if (i == arr.length-1){
                s += arr[i];
            }
            else {
                s += arr[i];
                s += ",";
            }
        }
        s += "]";
        return  s;
    }
    public static void main(String[] args) {
        char[] arr = {'1','3','a','b','A','B'};
        String s = "";
        s = arrayToString(arr);
        System.out.println(s);
    }
}
字符串反转:
public class String_reverse {
    public static String reverse(String s){
        String s1 = "";
        for (int i = 0; i <s.length() ; i++) {
           s1 += s.charAt(s.length()-1-i);
        }
        return s1;
    }
    public static void main(String[] args) {
        String s = "abcdefghjki";
        s = reverse(s);
        System.out.println(s);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值