J2SE学习笔记——第三章java面向对象(第八节String类)
第八节:String 类
1. 实例化String对象
方法一:String name1=“张三”;
方法二:String name2=new String(“李四”);
public class Demo1 {
public static void main(String[] args) {
String name1="张三";
System.out.println("name1="+name1);
String name2=new String("李四");
System.out.println("name2="+name2);
}
}
name1=张三
name2=李四
2,"=="VS“equals方法”
“==”,比较的是引用,“equals 方法”比较的是具体内容
public class Demo2 {
public static void main(String[] args) {
String name1="张三";//直接赋值
String name2=new String("张三");//new的方式
String name3=name2;//传递引用
//==比较的是引用
System.out.println("name1==name2:"+(name1==name2));
System.out.println("name1==name3:"+(name1==name3));
System.out.println("name2==name3:"+(name2==name3));
//equals比较的是内容
System.out.println("name1.equals(name2):"+(name1.equals(name2)));
System.out.println("name1.equals(name3):"+(name1.equals(name3)));
System.out.println("name2.equals(name3):"+(name2.equals(name3)));
}
}
name1==name2:false
name1==name3:false
name2==name3:true
name1.equals(name2):true
name1.equals(name3):true
name2.equals(name3):true
3,String 两种实例化方式的区别
1,直接赋值方式,创建的对象存放到字符串对象池里,假如存在的,就不会再创建;
2,new 对象方式,每次都创建一个新的对象;
public class Demo3 {
public static void main(String[] args) {
String name1="张三";
String name2="张三";
String name3=new String("张三");
String name4=new String("张三");
System.out.println("name1==name2:"+(name1==name2));
System.out.println("name1==name3:"+(name1==name3));
System.out.println("name2==name3:"+(name2==name3));
}
}
name1==name2:true
name1==name3:false
name2==name3:false
4,字符串的内容不可变性
字符串的特性:不能改变字符串的内容;只能通过指向一个新的内存地址;
public class Demo4 {
public static void main(String[] args) {
//String内容的不可变性
String name="张";
name+="三";
System.out.println(name);
}
}
5,String 类常用方法及基本使用
1,char charAt(int index) 返回指定索引处的char 值。
1、public class Demo5 {
public static void main(String[] args) {
String name="张三";
char ming=name.charAt(0);
System.out.println(ming);
String str="我是中国人";
for(int i=0;i<str.length();i++) {
System.out.println(str.charAt(i));
}
}
}
张
我
是
中
国
人
2,int length() 返回此字符串的长度。
3,int indexOf() 返回指定字符在此字符串中第一次出现处的索引。
3、public class Demo6 {
public static void main(String[] args) {
//indexof方法使用实例
String str="abcdefghdijklmnopqistuvwxyz";
System.out.println("d在字符串str中第一次出现的索引位置:"+str.indexOf("d"));
System.out.println("d在字符串str中第一次出现的索引位置,从索引4开始:"+str.indexOf("d",4));
//System.out.println("w在字符串str中第一次出现的索引位置,从后开始: "+str.lastindexOf("w",8).ToString());
}
}
d在字符串str中第一次出现的索引位置:3
d在字符串str中第一次出现的索引位置,从索引4开始:8
4,String substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串。该子字符串从指定索引处的字符开始,直到此字符串末尾。
4、
public class Demo7 {
public static void main(String[] args) {
//subString方式使用
String str="不开心每一天,不可能";
String newstr=str.substring(1);
String newstr2=str.substring(1,6);
System.out.println(str);
System.out.println(newstr);
System.out.println(newstr2);
}
}
不开心每一天,不可能
开心每一天,不可能
开心每一天
5,String toUpperCase() 使用默认语言环境的规则将此String 中的所有字符都转换为大写。
5、
public class Demo8 {
public static void main(String[] args) {
String str="I'm a handsome boy!";
String upStr=str.toUpperCase();//转换成大写
System.out.println("str="+str);
System.out.println("upStr="+upStr);
String lowerStr=upStr.toLowerCase();
System.out.println("lowerStr="+lowerStr);
}
}
综合实例:
编程输入一个字符串,要求去掉前后的空格,然后分别统计其中英文字母,空格,数字和其他字符的个数。
public class Demo9 {
public static void main(String[] args) {
String str=" abhjfklrCYJ @ jdb 7 672 ";
//去掉前面和后面的空白
String newStr=str.trim();
System.out.println("str="+str);
System.out.println("newstr="+newStr);
int yingWen=0;
int shuZi=0;
int kongGe=0;
int qiTa=0;
for(int i=0;i<newStr.length();i++) {
char c=newStr.charAt(i);
if((c>='a'&&c<='z')||(c>='A'&&c<='Z')){//判断英文字符
yingWen++;
System.out.println("英文字符:"+c);
}else if(c>='0'&&c<='9') {//判断数字字符
shuZi++;
System.out.println("数字字符:"+c);
}else if(c==' ') {//判断空格
kongGe++;
System.out.println("空格字符:"+c);
}else {
qiTa++;
System.out.println("其他字符:"+c);
}
}
System.out.println("英文字符总数:"+yingWen);
System.out.println("空格字符总数:"+kongGe);
System.out.println("数字字符总数:"+shuZi);
System.out.println("其他字符总数:"+qiTa);
}
}
作业:
1, 字符串反转,“abcdefg”,通过编程得到一个新的字符串“gfedcba”;
思路:我们定义一个新字符串,然后遍历原先字符串,从后往前遍历,每次遍历获取元素然后追加到新字符串。
public class Demo10 {
public static void main(String[] args) {
String str="abcdefg";
String newStr="";
for(int i=str.length()-1;i>=0;i--) {
newStr+=str.charAt(i);
}
System.out.println(newStr);
}
}
2, 将字符串“1,3,5,7,9”,转换成数组,数组元素是整数元素1,3,5,7,9
public class Demo4 {
public static void main(String[] args) {
String str="1,3,5,7,9";
int shuZi=0;
for(int i=0;i<str.length();i++) {
if(str.charAt(i)!=',') {
shuZi++;
}
}
int []arr=new int[shuZi];
int j=0;
for(int i=0;i<str.length();i++) {
if(str.charAt(i)!=',') {
arr[j]=Integer.parseInt(str.charAt(i)+"");
j++;
}
}
for(int a:arr) {
System.out.print(a+" ");
}
}
}