Java面向对象-String类

String:字符串,不可变字符序列

1.String类的实例化方式
(1)直接赋值方式 ,如String str=“李四”;
(2)new对象方式,如String str=new String(“李四”);

public class test9 {
	public static void main(String[] args) {
		
		String name1="张三";//方式一
		String name2=new String("李四");//方式二
		
		System.out.println("name1="+name1);
		System.out.println("name2="+name2);
	}
}

运行结果
在这里插入图片描述
两种实例化方式的区别
直接赋值方式,创建的对象存放到字符串对象池里,假如存在的,就不会再创建
new对象方式,每次都创建一个新的对象
举个例子说明

public class test10 {
	public static void main(String[] args) {
		String name1="张三";
		String name2="张三";
		String name3=new String("张三");
		String name4=new String("张三");
	}
}

给出内存图:
在这里插入图片描述
2."=="与equals() 比较
“==” 比较的是引用(是否指向同一个内存块)
equals() 比较的是具体内容

public class test11 {
	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));
		
		System.out.println("##############################################");
		
		//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)));
	}
}

运行结果
在这里插入图片描述
给出内存图
在这里插入图片描述
3.字符串的内容不可变性
不能改变字符串的内容;要想改变,只能通过指向一个新的内存地址

public class test12 {
	public static void main(String[] args) {
		
		String name="张";
		name=name+"三";
		System.out.println(name);
	}
}

这里修改了name,本质是name指向了一个新的内存区域,我们给下内存示意图
在这里插入图片描述
4.String类常用的方法
String类中的方法可查询API文档
API文档1.6版下载链接:
https://pan.baidu.com/share/link?shareid=436255&uk=2619580351
下面简单介绍几个常用的方法

(1)chartAt(int index)
返回指定索引处的char值

public class test13 {
	public static void main(String[] args) {
		String str="开心每一天";
		char c=str.charAt(2);//索引从0开始,2指的是第三个字符
		System.out.println(c);
		
		System.out.println("##############################");
		
		//遍历输出每个字符
		for (int i = 0; i < str.length(); i++) {
			char a=str.charAt(i);
			System.out.print(a+" ");
		}
	}
}

运行结果
在这里插入图片描述
(2)length()
返回字符串的长度,上面已经演示了

(3)indexOf(int ch)
返回指定字符在此字符串中第一次出现处的索引

public class test14 {
	public static void main(String[] args) {
		String str="abcdefabcdef";
		System.out.println("d在字符串str中第一次出现的索引位置:"+str.indexOf('d'));
		System.out.println("d在字符串str中第一次出现的索引位置,从索引位置4开始:"+str.indexOf('d',4));
	}
}

运行结果
在这里插入图片描述
(4)substring(int beginIndex)
返回一个新的子字符串

public class test15 {
	public static void main(String[] args) {
		String str="不开心每一天";
		String str1="开心每一天,不可能";
		System.out.println(str.substring(1));
		System.out.println(str1.substring(0,5));
	}
}

运行结果
在这里插入图片描述
(5)toUpperCase() 和toLowerCase()
将所有字符都转换为大写(小写)

public class test16 {
	public static void main(String[] args) {
		String str="abcDEF";
		System.out.println(str.toUpperCase());// 转成大写
		System.out.println(str.toLowerCase());// 转成小写
	}
}

运行结果
在这里插入图片描述
(6)trim()
去掉收尾空格(中间的不能去掉)

public class test17 {
	public static void main(String[] args) {
		String str=" abc def ";
		System.out.println(str);
		System.out.println(str.trim());
	}
}

运行结果
在这里插入图片描述
(7)split()
切割字符串,返回一个字符串数组
split(" “):以单个空格切割
split(”\s+"):以一个或多个空格切割
split("|"):以|切割

public class test19 {
	public static void main(String[] args) {
		String str="I like china";
		String str1[]=str.split(" ");//以空格方式切割
		//遍历str1数组
		for (String string : str1) {
			System.out.println(string);
		}
	}
}

运行结果
在这里插入图片描述
6.String综合实例
指定字符串“ aB232 23 &*( s2 ”,要求去掉前后空格,然后分别统计其中英文字符,空格,数字和其他字符的个数

public class test20 {
	public static void main(String[] args) {
		String s=" aB232 23 &*( s2 ";
		String str=s.trim();
		int yingwen=0;//字母个数
		int shuzi=0;//数字个数
		int kongge=0;//空格个数
		int qita=0;//其它字符个数
		
		for (int i = 0; i <str.length(); i++) {
			char c=str.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("数字字符个数:"+shuzi);
		System.out.println("空格字符个数:"+kongge);
		System.out.println("其它字符个数:"+qita);
	}
}

运行结果
在这里插入图片描述
字符串反转

public class test21 {
	public static void main(String[] args) {
		String str="abcde";
		String str1="";
		for (int i = str.length()-1; i>=0; i--) {
			str1+=str.charAt(i);
		}
		System.out.println(str1);
	}
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值