String类型及其简单运用

String类型及其简单运用

String及其常用方法

构造String

常见String的构造方式

//方式一 
String str1 = "hello";
//方式2
String str2 = new String("hello");
//方式三
char[] arr = {'a','b','c'};
String str3 = new String(arr);

== 、 equals 、equalsIgnoreCase、 compareTo

==
在Java中,== 表示比较的是表面身份,也就是直接赋予的值。在String类中,大部分的值都是引用的值, 比较的就是其表面的引用地址,而不是应用地址所指向的值。

//方式一
String str1 = "hello";
string str2 = "hello";
System.out.println(str1 == str2);//true
//方式一中的str1和str2是直接赋值,可以存储在在字符串常量池中。对于字符串常量池中存在的字符串,再次赋值就不需要在开辟内存来存储,直接引用已存在的字符串的值就好。因此str1与str2都引用同一个hello,即str1的引用地址与str2的引用地址相同。
String str3 = new String("hello");
System.out.println(str1 == str3);//false
String str4 = new String("hello");
System.out.println(str3 == str4);//false

equals()
因此要比较两个String类型的数据是否相等就要使用equals函数。equals函数比较的是引用类型所引用的对象。

String str1 = "hello";
String str2 = new String("hello");
System.out.println(str1.equals( str2));//true
//方式一
System.out.println("hello".equals(str2));//true
//方式二
System.out.println(str2.equals("hello"));//true
//方式一和方式二是一样的,但是在方式二中,一旦str2的值为null就会报错。而str1就不会。

equalsIgnoreCase()
equalsIgnoreCase() 是不区分大小写的比较方式,即只要字符串的字母顺序和长度相同比较结果就是true。

System.out.println("aBcDeFg".equalsIgnoreCase("AbCdEfG"));//true
System.out.println("aBcDeFg".equalsIgnoreCase("AbCd"));//false

compareTo()
compareTo也是可以比较大小的,但是它是以ASCLL码的方式进行比较,所以最后比较的结果为数字,数字为正则前者大于后者,数字为0则两者相等,数字为负则后者大于前者。

System.out.println("AC".compareTo("AB"))//1
System.out.println("AC".compareTo("AC"))//0
System.out.println("AB".compareTo("AC"))//-1

字符串与数组的相互转化

**toCharArray() 和 spilt() **
使用 toCharArray() 方法可以将字符串转化为char类型的单个字符的数组。使用 spilt() 按照正则表达式的方式拆分字符串。

String str = "abcdbcdacdac";
char [] arr = str.toCharArray();//a,b,c,d,b,c,d,a,c,d,a,c
String [] array = str.spilt("d");//abc,bc,ac,ac
//数组极限长度为3,按照正则表达式拆分字符串
String [] array = str.spilt("d" , 3);//abc,bc,acdac

字符串的数据查找

contains() 、indexOf() 、charAT() 、lastIndexOf() 、startsWith() 、 endsWith()

String str = "abcdefghd";
//判断str中是否存在de元素,存在为true,不存在为false
System.out.println(str.contains("de"));//true;
//查找第一个d所在的位置,从0开始找,没找到返回-1
System.out.println(str.indexOf("d"));//3
//从指定位置开始查找d所在的位置
System.out.println(str.indexOf("d"4));//8
System.out.println(str.indexOf("l"));//-1
//将str中的3号位置的元素打印出来,从0开始找
System.out.println(str.charAt(3));//d
//查找最后一个d所在的位置,从0开始找,没找到返回-1
System.out.println(str.lastIndexOf("d"));//8
//从指定位置向前查找最后一个d所在的位置,从0开始找,没找到返回-1
System.out.println(str.lastIndexOf("d"6));//3
//判断str是否是ab开头,是则返回true,不是则返回false
System.out.println(str.startsWith("ab"));
//从指定位置判断str是否是ab开头,是则返回true,不是则返回false
System.out.println(str.startsWith("de" , 3));//true
//判断str是否以hd结尾,是则返回true,不是则返回false
System.out.println(str.endsWith("hd"));//false

字符串替换

replace() 、replaceAll() 、replaceFirst()

String str = “asdfghjgkl";
//replace()和replaceAll() 是一样的,将所有的g替换成xy
system.out.println(str.replaceAll("g", "xy"));//asdfxyhjxykl
//将第一个出现的g替换成xy
system.out.println(str.replaceFirst("g", "xy"));//asdfxyhjgkl

字符串截取

substring()

String str = “asdfghjkl";
//将str从3位置截取到结尾,从0开始计算
system.out.println(str.substring(3));//fghjkl
//将str从3位置截取6位置(左闭右开),从0开始计算
system.out.println(str.substring(3,6));//fgh

字符串其他常见函数

** trim() 、 toUpperCase() 、 toLowerCase() 、 length() 、 isEmpty() **
trim() 函数去掉字符串两边的空白,toUpperCase() 函数是将字符串转化为大写(只针对字母),toLowerCase() 函数是将字符串转化为小写(只针对字母),length() 获得字符串的长度(从1开始计算),isEmpty() 判断字符串是否为空。空返回true。

StringBulider和StringBuffer

StringBulider和StringBuffer大部分功能都是相同的。他们是一个字符串构造器,用于修改字符串。这里使用StringBuffer示例。

//StringBuffer使用实例化。
StringBuffer sb1 = new StringBuffer();
StringBuffer sb2 = new StringBuffer("hello");
//拼接字符串
System.out.println(sb2.append("Word"));//helloWord
//反转字符串
System.out.println(sb2.reverse());//droWolleh;
//删除字符串,从0开始(左闭右开)。
System.out.println(sb2.delete(3,7));//droeh
//插入字符串,
System.out.println(sb2.insert(3,"ab"));//droabeh

String 、StringBuffer 、 StringBudder的区别

1、String的拼接会产生新的对象,但是StringBuilder和StringBuffer使用append方法来拼接返回自己的当前对象。
2.String的拼接会优化为StringBuilder。
3.String和StringBuilder只用于单线程,而StringBuffer可以作用于多线程(使用synchronized保证线程安全)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值