创建String
String特点
1.字符串内容是不可变的
2.因为字符串是不可变的,所以字符串可以共享
3、字符串效果上相当于char[],但是底层是byte[]
创建方式
String属于引用数据类型
创建方式如下
String str="abc";
String str1=new String();
char[]c={'1','a','s'}
String str2=new String(c);
- 字符串内容为什么是不可变的?
我们在用String str="abc";创建对象时,创建的字符串在字符串常量池中
- 我们在用String str1=new String();创建对象时,实在堆中创建
String s1 = new String("abc");
String s2 = new String("abc");
System.out.println(s1 == s2);//false
String的常见方法使用
int length();返回字符串的长度
boolean equals(Object obj):比较字符串值是否相同
boolean equalsIgnoreCase(String str):比较字符串值是否相同,忽略大小写
String concat(String str):连接字符串
char charAt(int index):获取指定索引的单个字符
int indexOf(String str):查找参数字符串在本字符串中首次出现的索引 ,没有返回-1
String subString(int index):截取字符串,从参数的位置一直到字符串的末尾,返回一个新的字符串
String subString(int beginindex,int endindex):截取字符串,从参数的beginindex开始,到endindex结束,返回一个新的字符串包含头,不包含尾
char[] toCharArray():将字符串拆分成字符数组
String replace(String str,String str1):替换字符串
==和equals区别
==比较的是两个对象的地址值
equals比较的是值是否相同
String s1 = new String("abc");
String s2 = new String("abc");
String s3="abc";
String s4="abc";
System.out.println(s1 == s2);//flase
System.out.println(s1.equals(s2));//true
System.out.println(s1==s3);//false
System.out.println(s3==s4);//true
System.out.println(s1.equals(s3));//true
例题
键盘输入一个字符串,统计各种字符出现的次数
大写字母,小写字母,数字,其他