Java基础之String类

String类详解

1-1 字符串创建方式

                作为一名程序员,在开发中,字符串对我们来说,尤为重要,首先说一下,怎样创建一个字符串,字符创建大概由以下几种方式:

1、利用常量初始化一个字符串

//1.利用常量直接初始化
	String str = "hello";
2、通过new一个字符串对象

//2.空字符串
	String str1 = new String();
//2.利用已存在的字符串
	String str2 = new String("hello1");
3、通过一个char数组(字符数组)创建字符串

//3.利用一个字符数组创建一个字符串
	char[] charArray = new char[]{'a','b','c'};
	String str3 = new String(charArray);//构造方法传入参数char数组
	System.out.println(str3);//控制台打印:abc       注:猜想该构造方法实现:遍历char数组,依次拿到‘a’ ‘b’ ‘c’,再去拼接得到abc
4、截取一个字符数组创建一个非空字符串

//4.截取字符数组创建一个非空字符串
	char[] charArray1 = new char[]{'h','e','l','l','o','w','o','r','l','d'};//字符数组
	String str4 = new String(charArray1, 5, 5);//构造方法依次传入参数  第一个参数:char数组   第二个:起始的索引 第三个:长度
	System.out.println(str4);//控制台输出:world  
5、 利用StringBuffer对象创建字符串

//5.利用StringBuffer对象创建字符串
	StringBuffer strBuff = new StringBuffer("hello");
	String str5 = new String(strBuff);//构造方法传入strBuff
	System.out.println(str5);//控制台打印:hello
小结:字符串的创建方式就列举这么多,其实就是构造方法的重载,传入参数的不同,让创建字符串的方式多元化

2-1 字符串常用方法

1、获取字符串的长度
//1.获取字符串制度长度
	String str6 = "hello";
	int lenght = str6.length();
	System.out.println(lenght);//控制台输出:5
2、比较字符串是否相等
//2.比较字符串是否相等
	String str7 = "hello";
	String str8 = "hello";
	System.out.println(str7.equals(str8));//控制台输出:true
3、indexOf(参数) 在字符串检索参数,并返回第一次出现的位置
//3.indexOf(args) 从字符串开始检索args,并返回第一次出现的位置
	String str8 = new String("facdefg");
	System.out.println(str8.indexOf("c"));//控制台输出:2
4、 lastIndexOf 查找最后一次出现的位置
//4.lastIndexOf 查找最后一次出现的位置
	String str9 = new String("qtttwerty");
	System.out.println(str9.lastIndexOf('t'));//控制台输出:7
5、由 indexOf与lastIndexOf判断邮箱号码是否只含有一个@
//需求:判断一个邮箱中只出现了一次@
	String str10 = new String("623247505@qq.com");
	if(str10.indexOf('@')==str10.lastIndexOf('@'))
	{
	      System.out.println(str10+"邮箱合格");
	}
	else{
	      System.out.println(str10+"邮箱不合格,@只能允许出现一次");
	}
6、将字符串转成 字符数组toCharArray()
//将字符串转成字符数组
	String str11 = "abcdefg";
	char[] charArray3 = str11.toCharArray();//转成了字符数组[a,b,c,d,e,f,g]

7、 将字符串转成字符串数组split()
//将字符串转成字符串数组
	String str11 = "abcdefg";
	String[] strArray = str11.split("c");//转成了字符串数组[ab,defg]
8、valueOf()将其他数据类型转成字符串型 调用方式:String类点语法直接调用,类名. valueOf()-->String.valueOf()
//将一些数据类型转成字符串类型
	String  string1 = String.valueOf(10);  //转成了字符串:10
	String  string2 = String.valueOf(true);//转成了字符串:true
	String  string3 = String.valueOf('a');//转成了字符串:a
	String  string4 = String.valueOf(20.1f);//转成了字符串:20.1
9、去掉字符串首尾空格
//去除字符串首尾空格
        String Str13 = " adef r ";
	String Str14 = Str13.trim();
	System.out.println(Str14);//控制输出adef r

10、判断是否以指定的字符串开头或者结尾

        String testStr = "asdf";
	System.out.println(testStr.startsWith("a"));//是否以字符串a开头,返回boolean类型  控制台打印:true
	System.out.println(testStr.endsWith("f"));//是否以字符串f结尾,返回boolean类型 控制台打印:true

11、求字符串某一位置字符charAt()

	String testStr = "asdf";
	System.out.println(testStr.charAt(2));//返回值为char类型   控制台打印:d 
1 2、用String类的substring方法可以提取字符串中的子串,该方法有两种常用参数:
	String testStr = "asdferrrw";
	System.out.println(testStr.substring(1));//从索引为1开始,截取剩下字符串    控制台打印:sdferrrw
	System.out.println(testStr.substring(1,3));//从索引为1开始,截取至所有为3剩下字符串 前包后不包 控制台打印:sd
13、字符串大小写转换

	String testStr1 = "aBcDeFg";
	System.out.println(testStr1.toUpperCase());//全部转换成大写   控制台打印:ABCDEFG
	System.out.println(testStr1.toLowerCase());//全部转换成小写   控制台打印:abcdefg

2-2 拓展之equals()方法

   大家都知道String类与StringBuffer类都能调用equals方法,那么请看下面代码,控制台会打印什么呢?
		String  testStr1 = "123";
		String  testStr2 = testStr1;
		String  testStr3 = "123";
		System.out.println(testStr1.equals(testStr2));//ture
		System.out.println(testStr1.equals(testStr3));//true
		StringBuffer strBuff1 = new StringBuffer("123");
		StringBuffer strBuff2 = strBuff1;
		StringBuffer strBuff3 = new StringBuffer("123");
		System.out.println(strBuff1.equals(strBuff2));//true
		System.out.println(strBuff1.equals(strBuff3));//false
相信有人会觉得应该全是true,但是运行起来发现结果为true true true false,为什么会这样呢?因为大家都知道String类与StringBuffer类都有着共同的父类Object类,Object类里面有着equals()方法,String类继承了Object,并且它将equals()方法重写了,写成了只比较字符串的内容,不比较字符串的地址。而StringBuffer类继承自Object类,但是它没有重写equals()方法,既比较两个字符串的内容也比较地址。所以上述代码打印的内容就很好理解了。如下图




 






















  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值