String类型概述
又爱又恨!!!
爱:
字符串基本上就是数据的保存,传输,处理非常重要的一种手段。
恨:
解析过程非常烦人,需要掌握熟记很多方法,同时需要有一定的技巧和灵性
String字符串类型是Java中引用数据类型,并且String类型是使用final修饰,没有自己的子类。
字符串的存储也是非常个性的一件事情,分两种情况,
一种是在内存的数据区
一种是在内存的堆区
字符串是一个常量!!!
字符串确定之后无法修改!!!
一些常用方法
public class Judge {
public static void main(String[] args) {
// String类的一些判断方法...
String str = "年年岁岁花相似,岁岁年年人不同";
String str2 = "abcdef";
/*
* 调用了String类的endsWith方法并通过sout展示
* 判断当前字符串是不是以指定字符串结尾,如果是返回为true
*/
System.out.println(str.endsWith("不同"));
/*
* 调用了String类的startsWith方法,该方法需要的参数是字符串类型
*
* startsWith方法判断当前字符串开头是不是指定字符串开始。
* 如果是则返回true,不是返回false
*/
System.out.println(str.startsWith("年年"));
/*
* 调用了String类的isEmpty方法,判断调用者是否为空
* ""中间没有内容就是空,如果为空返回true,不是返回false
*/
System.out.println(str.isEmpty());
/*
* 调用String类的contains方法,需要参数为字符串类型
* 判断参数内字符串是否为调用者的子字符串,【调用者内有岁岁】,所以结果为true
*/
System.out.println(str.contains("岁岁"));
/*
* 调用String类的equalsIgnireCase方法,需要字符串类型参数
* 判断参数和调用者的【字母】是否一致。不考虑大小写
*/
System.out.println(str2.equalsIgnoreCase("AbcDef"));
}
}
获取方法
public class GetMethod {
public static void main(String[] args) {
/*
* String类型的获取字符串某些东西的方法,后期用的更多
*/
// 定义一个字符串
String str = "我今天好帅,明天更帅";
// 获取字符串长度
System.out.println(str.length());
// 获取字符串对应下标位置的字符
System.out.println(str.charAt(str.length() - 1));
// 获取该字符在字符串内的下标位置,【如果没找到,下标位置为负数】
System.out.println(str.indexOf('?'));
/* 找出指定字符串在当前字符串的下标位置例如要找的字符串是【帅,】下标位置就是4,
* 如果未找到,同样也是负数
*/
System.out.println(str.indexOf("帅,"));
// 找出字符最后一次出现的位置,结果是下标为9的位置
System.out.println(str.lastIndexOf('帅'));
// 找出字符串最后一次出现的位置,结果是下标为6的位置,如果未找到也是返回负数
System.out.println(str.lastIndexOf("明天"));
}
}
转换方法
public class Change {
public static void main(String[] args) {
String str = "工欲善其事,必先利其器";
char[] ch = {'a', 'b', 'c', 'd', 'e', 'f'};
/*
* 创建一个String类对象,调用了有参构造方法
* 该构造方法将一个char类型数组转换为字符串类型
*/
String str2 = new String(ch);
// Str2保存的内容为abcdef
System.out.println(str2);
/*
* 创建一个String类对象,调用了有参构造方法
* 该构造方法的参数为一个字符型数组,两个int类型参数
*
* 写法: String 对象名 = new String(字符类型数组, i, j);
*
* 作用是将字符数组保存的内容从下标为i的元素开始,一共需要j个
*/
String str3 = new String(ch, 2, 3);
// str3保存的内容为cde
System.out.println(str3);
// 这里所用的方法和无参构造方法类似
String str4 = String.valueOf(ch);
// 运行结果为abcdef
System.out.println(str4);
// 该方法和【str3】所用的构造方法类似
String str5 = String.valueOf(ch, 1, 3);
// 运行结果为bcd
System.out.println(str5);
/*
* toCharArray方法作用将一个字符串拆分成一个一个字符,保存到字符数组中
*/
char[] charArray = "你好,世界".toCharArray();
// 展示charArray内容
for (int i = 0; i < charArray.length; i++) {
System.out.println(charArray[i]);
}
}
}
一些其他方法
public class Else {
public static void main(String[] args) {
String str1 = " 年年岁岁花相似,岁岁年年人不同 ";
String str2 = "1 abcd 234";
/*
*
* 切割,将当前字符串按照指定字符串切割成String类型数组
*
* 运行效果:
*
* 岁岁花相似,岁岁
人不同
*/
String[] split = str1.split("年年");
for (int i = 0; i < split.length; i++) {
System.out.println(split[i]);
}
/*
* 将字符串从指定下标位置截取到结尾
* 该代码运行结果为:
*
* 岁岁年年人不同
*/
System.out.println(str1.substring(8));
/*
* 调用对象.substring(beginIndex, endIndex);
* 从指定位置beginIndex开始截取,到endIndex结束
*
* 运行效果:
* 年年岁岁花相似,
*
*/
System.out.println(str1.substring(0, 8));
// 字符串中所有的英文字母转大写,返回新字符串
System.out.println(str2.toUpperCase());
// 字符串中所有的英文字母转小写,返回新字符串
System.out.println(str2.toLowerCase());
// 去除字符串两边的空格
System.out.println(str1.trim());
}
}