Java--String类

String类

  1. String是什么,可以做什么?
  • 字符串类型,可以定义字符串变量指向字符串对象。
  1. String是不可变字符串的原因?
  • String变量每次的修改其实都是产生并指向了新的字符串对象。
  • 原来的字符串对象都是没有改变的,所以称不可变字符串
  • 以""方式给出的字符串对象,在字符串常量池中存储

String类创建对象的两种方式

两种方式
  1. 直接使用""定义
String name = "zhangsan"
  1. 通过String类的构造器创建对象
//构造器
public String()//创建一个空白字符串对象,不含有任何内容
public String(String original)//根据传入的字符串内容,来创建字符串对象
public String(char[] chs)//根据传入的字符数组内容,来创建字符串对象
public String(byte[] chs)//根据传入的字节数组内容,来创建字符串对象
两种方式区别
  • 以“”方式给出的字符串对象,在字符串常量池中存储,而且相同内容只会在其中存储一份。
  • 通过构造器new对象,每new一次都会产生一个新对象,放在堆内存中。
常见问题
public class StringTest{
	public static void main(String[] args){
		String s1 = "abc";
		String s2 = new String("abc");
		String s3 = "ab";
		String s4 = s3 + "c";
		String s5 = "a"+"b"+"c";
		System.out.println(s1==s2);//False
		System.out.println(s1==s4);//False
		System.out.println(s1==s5);//True
		//Java存在编译优化机制,程序在编译时: “a” + “b” + “c” 会直接转成 "abc"
	}
}

String类常用API

字符串内容比较
  • 字符串的内容比较不适合用"=="比较
  • 字符串的内容比较一般用String类提供的“equals”比较
  • 在基本数据类型比较时使用"=="
public boolean equals(Object object)//将此字符串与指定对象进行比较,只关心字符串内容是否一致
public boolean equalsIgnoreCase(String anotherString)//将此字符串与指定对象进行比较,忽略大小写比较字符串,只关心字符串内容是否一致
遍历、替换、截取、分割操作
public int length()//返回此字符串的长度
public char charAt(int index)//获取某个索引位置处的字符
public char[] toCharArray()//将当前字符串转换成字符数组返回
public String subString(int beginIndex,int endIndex)//根据开始和结束索引截取,得到新字符串(包前不包后)
public String subString(int beginIndex)//从传入的索引截取,截取到末尾,得到新的字符串
public String replace(CharSequence target,CharSequence replacement)//使用新值,将字符串中的旧值替换,得到新的字符串
public String[] split(String regex)//根据传入的规则切割字符串,得到字符串数组返回

案例

  • 随机产生一个5位的验证码,每位可能时数字、大写字母、小写字母。
/**
     * 随机产生n位验证码,由数字、大写字母、小写字母组成
     * @param n 
     * @return
     */
    public static String createCode(int n) {
        String result = "";
        Random random = new Random();
        for (int i = 0; i < n; i++) {
            int type = random.nextInt(3);//0 小写   1 大写   2 数字
            switch (type) {
                case 0:
                    result += (char) ('a'+random.nextInt(26));
                    break;
                case 1:
                    result += (char) ('A'+random.nextInt(26));
                    break;
                case 2:
                    result += random.nextInt(10);
                    break;
            }
        }
        return result;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值