【Java高级特性】java学习之旅28-String类

字符串的常量:底层使用一个被final修饰的char类型数组存储字符,初始化赋值之后,不可改变(每次改变String类型的值,都会在内存中新建一个对象)。

常用的方法:

1 构造方法:
//根据底层的实现原理来创建
String str =  new String(new char[] {'1','2','3'});
//常用方式
String str = "123";

String str = new String("123")
2 获取字符串的长度.length()
String str = "123";

System.out.println(str.length());//3
3 获取指定索引位置的字符.charAt(int index)
String str = "hello world 你好 世界";

System.out.println(str.chatAt(4));//o
4 返回字符串对应的字符数组.toCharArray()
String str = "123";

char[] charArray = str.toCharArray();
5 比较字符串是否相同.equals(Object obj)\equalsIgnoreCase(String str)
String str = "hello world";

System.out.println(str.equals("Hello World"));//false

System.out.println(str.equalsIgnoreCase("Hello World"));//true
6 将字符串转为大写或者小写.toLowerCase()\toUpperCase()
String str = "Hello";

System.out.println(str.toLowerCase);//hello

System.out.println(str.toUpperCase);//HELLO
7 字符串拼接(通过创建新的字符数组,拼接数组内容).concat(String str)
String str = "hello";

String newStr = str.concat(" java");

System.out.println(newStr);//hello java
8 查找指定字符或者字符串第一次出现的位置的索引.indexOf(…)\lastIndexOf(…)
String str = "hello";

//正序查找
int index1 = str.indexOf('l');
//倒叙查找,也是按照正序的索引来标记的
int index2 = str.lastIndexOf('l');
//查找字符串
int index3 = str.indexOf("lo");
//从指定的索引处开始查找
int index4 = str.indexOf('l',3);

System.out.println(index1);//2
System.out.println(index2);//3
System.out.println(index3);//3
System.out.println(index4);//3
9 将基本数据类型转化为字符串.valueOf()
String str = String.valueOf(1234);
10 判断是否包含指定的字符串.contains(String str)
String str = "hello world";

boolean result = str.contains("hello");
System.out.println(result);//true
11 去除首位空格.trim()
String str = "      hello  java     ";

String newStr = str.trim();
System.out.println(newStr);//hello java
12 按照正则表达式拆分字符串.split()
String str = "hello,java";

String[] strArray = str.split(",");
System.out.println(Arrays.toString(strArray));//[hello,java]
13 切割字符串.substring(int beginIndex)\substring(int beginIndex, int endIndex)
String str = "hello java";

String newStr1 = str.substring(5);//包含索引为5的字符
System.out.println(newStr1);// java

String newStr2 = str.substring(0,5);//包前不包后
System.out.println(newStr2);//hello
14 替换字符.replace/.replaceAll(String regex, String replacement)
String str = "hello";

String newStr = str.replace('l' , 'L');
System.out.println(newStr);//heLLo

replaceAll(String regex, String replacement)//利用正则表达式去替换
15 判断字符串是否包含指定的前缀或者后缀.startsWith(String prefix)\endsWith(String suffix)
String str = "hello world";

System.out.println(str.startsWith("he"));//true
System.out.println(str.endsWith("ld"));//true

练习:

利用String类解析json字符串去创建3个Student对象

/**
 * Student类
 */
public class Student {

	private String name;
	
	private int age;
	
	private String sex;
	
	//省去getter/setter,构造方法
}
/**
 *拆分json字符串
 */
 public static void main(String[] args) {
	
		String str = "[{name:junki,age:18,sex:male},{name:lucy,age:16,sex:female},{name:tom,age:20,sex:male}]";
		
		str = str.substring(str.indexOf("[") + 1, str.indexOf("]"));
		str = str.replace("{", "");
		
		String[] newStr = str.split("},");
		Student[] stu = new Student[newStr.length];
		
		for (int i = 0; i < newStr.length; i++) {
			String name = newStr[i].substring(newStr[i].indexOf("name:")+5,newStr[i].indexOf(",age"));
			int age = Integer.parseInt(newStr[i].substring(newStr[i].indexOf("age:")+4,newStr[i].indexOf(",sex")));
			String sex = newStr[i].substring(newStr[i].indexOf("sex:")+4,newStr[i].length());
			stu[i] = new Student(name,age,sex);
		}
		
		System.out.println(Arrays.toString(stu));
	}

在解析json字符串时,我们可以利用alibaba的Fastjson.jar

	public void test2() {
		String jsonStr = "[{name:'junki',age:18,sex:'male'},{name:'lucy',age:16,sex:'female'},{name:'tom',age:20,sex:'male'}]";
		//在后面利用反射填写实体类可以自动创建对象
		List<Student> stuList = JSON.parseArray(jsonStr, Student.class);
		
		System.out.println(stuList);
		//加上true可以帮我们打印处可视化的json格式数据
		String jsonString = JSON.toJSONString(stuList, true);
		
		System.out.println(jsonString);
		
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JeffHan^_^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值