- String
String类在Java.lang包下,使用时不需要导包;String类代表字符串,
Java程序中,所有的双引号字符串,都是string这个类的对象;
字符串是常量,它们的值在创建之后就不能更改了;
2、String常见构造方法
方法名 | 说明 |
Public String() | 创建一个空白字符串对象,不含有任何内容 |
Public String(char[ ] chs) | 根据字符数组的内容,来创建字符串对象 |
Public String(String original) | 根据传入的字符串内容,来创建字符串对象 |
String s=”abc” | 直接赋值的方式创建字符串对象,内容是abc |
注意:String这个类比较特殊,打印其对象名时,不会出现内存地址;而是该对象所记录的真实内容;面向对象-继承,object类;
3、创建字符串对象的区别对比
注意:==号作比较;
基本数据类型:比较的是具体的值;
引用数据类型:比较地址值;
A.以“”方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM都只会建立一个string对象,并在字符串常量池中维护;
例如:String s1=”abc”;
String s2=”abc”;
字符串常量池:当使用双引号创建字符串对象时,系统会检查该字符串是否在字符串常量池中存在;如果不存在:创建;如果存在:不会重复创建,而是直接复用;
注意:字符串常量池在JDK7版本开始从方法区中挪到了堆内存;
B.通过new创建的字符串对象,每一次new都会申请一个内存空间,虽然内容相同,但是地址值不同。
例如:
4、String字符串特点
Java程序中所有的双引号字符串,都是String类的对象;
字符串不可变,它们的值在创建后不能被更改;
虽然String的值是不可变的,但它们可以被共享;这里的共享说的是字符串常量池:当使用双引号创建字符串对象时,系统会检查该字符串是否在字符串常量池中存在;如果不存在:创建;如果存在:不会重复创建,而是直接复用;
情况1:
情况2:
情况3:
情况4:
5、字符串的比较
使用==作比较
基本类型:比较的是数据值是否相同;
引用类型:比较的是地址值是否相同;
字符串是对象,它比较内容是否相同,是通过一个方法来实现的,这种方法叫equals();
Public Boolean equals(Object anObject):将此字符串与指定对象进行比较,由于我们比较的是字符串对象,所以参数直接传递一个字符串;
还有一个比较内容的方法,不考虑大小写:
案例1:用户登录
已知用户名和密码,用程序实现模拟用户登录,总共给三次机会,登录之后,给出相应的提示;
案例2:遍历字符串
第一种方法:
第二种方法:
案例3:键盘录入字符串,统计字符串中大写、小写,数字字符串出现的次数;
案例4:以字符串的形式从键盘接收一个手机号,中间四位屏蔽;
截取字符串:
String substring(int beginIndex):
从传入的索引位置处,向后截取,已知截取到末尾,得到新的字符串并返回;
String substring(int beginIndex,int endIndex):
从beginIndex索引位置开始截取到endIndex索引位置结束,得到新字符串并返回(包含头,不包含尾部);
案例5:键盘录入字符串,替换敏感词
替换敏感词:String replace(CharSequence target,CharSequencereplacement)
将当前字符串中的target(被替换的旧值)内容,使用replacement(替换的新值)进行替换返回新的字符串;
案例6:切割字符串
字符串录入学生信息,切割出有效信息;
String[] split(String regex):根据传入的字符串作为规则进行切割,将切割后的内容存入字符串数组中,并将字符串数组返回;
一般封装数据需要创建要给包:domain;(书写规范)
String方法小结:
方法名 | 说明 |
public Boolean equals(ObjectanObject) | 比较字符串的内容,严格区分大小写 |
public Boolean equalsIgnoreCase(String anotherString) | 比较字符串的内容,忽略大小写 |
public int length() | 返回此字符串的长度 |
public char charAt(int index) | 返回指定索引处的char值 |
public char[ ]toCharArray() | 将字符串拆分为字符数组后返回 |
public String substring(int beginIndex,int endIndex) | 根据开始和结束索引进行截取,得到新的字符串(包含头,不包含尾) |
public String substring(int beginIndex) | 从传入的索引处截取,截取到末尾,得到新的字符串 |
public String replace(CharSequence target,CharSequencereplacement) | 使用新值,将字符串中的旧值替换,得到新的字符串 |
public String[] split(String regex) | 根据传入的规则切割字符串,得到字符串数组
|