黑马程序员——java中字符串的常见操作

-------  android培训 java培训 、期待与您交流! ----------
 
字符串概述:
 字符串是一个特殊的对象,一旦被初始化就不可以被改变。
String类中提供了对字符串操作的方法:
1  获取
1.1  获取字符串中包含的字符数,也就是字符串的长度
                        int   length()  :  获取长度
1.2  根据位置获取某个位置上的字符
char  charAt(int index):
1.3  根据字符获取该字符在字符串中的位置
int  indexOf(int ch) : 返回ch在字符串中第一次出现的位置
int  indexOf(int ch,int fromIndex) : 从fromIndex指定的位置开始,获取ch在字符串中第一次出现的位置
int  lastIndexOf(int ch) : 返回ch在字符串中最后一次出现的位置
public static void get(){
		String str = "abcdefghcdecfh";
		//获取长度 
		int len = str.length();
		sop(len);
		//获取角标为3的字符,字符串角标从0开始
		//当访问到不存在的角标时出现IndexOutOfBoundsException异常
		char ch = str.charAt(3);
		sop(ch);
		//获取字符c在字符串中第一次出现的位置
		//没有找到返回-1
		int index = str.indexOf('c');
		sop(index);
		//从5开始,获取c第一次出现的位置
		index = str.indexOf('c',5);
		sop(index);
		//c最后一次出现的位置
		index = str.lastIndexOf('c');
		sop(index);
	}
2 判断
2.1 字符串中是否包含某一个子串
boolean contains(str) :
特殊之处:
indexOf(str) :可以索引str第一次出现的位置,如果返回-1,表示str不在字符串中存在。
所以,也可以用于对指定字符判断是否包含
2.2 字符串中对否有内容
boolean isEmpty(): 原理就是判断长度是否为0
2.3 字符串对否是以指定内容开头
boolean startsWith(str)
2.4 字符串是否是以指定的内容结尾
boolean endsWith(str)
2.5 判断字符串内容是否相同,复写了Object类中的equals方法。
boolean equals(str);
2.6  判断内容是否相同,并忽略大小写
boolean equalsIgnoreCase()
public static void is(){
		String str = "StringDemo.java";
		String str1 = "StringDemo.java";
		String str2 = "stringdemo.java";
		//str中是否包含“Demo”子串
		boolean b = str.contains("Demo");
		//判断字符串是否为空
		b = str.isEmpty();
		//是否是以“String”开头的
		b = str.startsWith("String");
		//是否是以“.java”结尾的  用于判断文件类型
		b = str.endsWith(".java");
		//判断str跟str1的内容是否相同,复写Object的equals方法
		b = str.equals(str1);
		//判断str跟str2的内容是否相同,忽略大小写。  邮箱登陆是忽略大小写
		b = str.equalsIgnoreCase(str2);	
	}

3  转换
3.1  将字符数组转换成字符串
构造函数: String(char[] c)
     String(char[] c,offset,count): 将数组中的一部分转换成字符串
静态方法: static String copyValueOf(char[] c)
     static String copyValueOf(char[] c,int offset,int count)
     static String valueOf(char[] c):
3.2  将字符串转换成字符数组
char[] toCharArray() 
3.3  将字节数组转换成字符串
构造函数:String(byte[] b)
    String(byte[] b,int offset,int count):将字节数组的一部分转换成字符串
3.4  将字符串转换成字节数组
byte[] getBytes() : 在IO流操作中比较常用
3.5  将基本数据类型转换成字符串
static String valueOf(int i)
static String valueOf(double i)
...
简单的转换就是 3+“”结果就是一个字符串
特殊: 字符串和字节数组在转换的过程中,可以指定编码表。
public static void trans(){
		char[] c = {'a','b','c','d','e','f'};
		//字符数组变成字符串
		String s = new String(c);
		sop(s);
		String s1 = new String(c,2,4);
		sop(s1);
		String s2 = String.copyValueOf(c);
		sop(s2);
		//字符串变成字符数组
		char[] c1 = s1.toCharArray();
		byte[] b = {'a','b','c','d','e'};
		//字节数组变成字符串
		String bs = new String(b);
		String bs1 = new String(b,2,2);
		//字符串变成字节数组
		byte[] b1 = bs.getBytes();
	}

4  替换
String replace(oldchar,newchar)
5  切割
String[]  spilt(String regex)
6  子串,获取字符串中的一部分
String subString(int begin)
String subString(int begin,int end)
public static void method(){
		String str = "hello java";
		//将str中的a替换成c
		String s1 = str.replace('a', 'c');
		sop(s1);
		String name = "zhangsan,lisi,wangwu";
		//将name字符串,以逗号切割成长度为3的字符串数组
		String[] s2 = name.split(",");
		for(int i=0;i<s2.length;i++){
			sop(s2[i]);
		}
		//获取str的子字符串,从第2个开始,到第四个,包含头不包含尾,不含第五个。
		String sub = str.substring(2,5);
		sop(sub);
	}

7  转换,去除空格,比较
7.1  将字符串转换成大写或者小写
String   toUpperCase():转换成大写
String   toLowerCase():转换成小写
7.2   将字符串两端的多个空格去掉
String trim();
7.3  对两个字符串进行自然顺序的比较
int  compareTo(String str)
public static void method_7(){
		String str = "  Hello Java  ";
		String str1 = "aaa";
		String str2 = "abc";
		//转换成小写
		sop(str.toLowerCase());
		//转换成大写
		sop(str.toUpperCase());
		//去掉两端的空格
		sop(str.trim());
		//比较两个字符串的自认顺序,返回的值是两个不相同字符的在ASCII中的差值
		int i = str1.compareTo(str2);
		sop(i);	
	}
常用于操作字符串的容器:
StringBuffer ,StringBuilder
特点:是一个容器,也就是String的缓冲器,
    可以对字符串的内容进行增删,
    长度是可以变化的
    可以操作多种数据类型
    StringBuffer是线程同步的,可以应用在多线程中。
    StringBuilder是线程不同步的,建议在单线程中使用,比StringBuffer高效
主要的方法:
1  存储
StringBuffer  append():将指定数据作为参数添加到已有的数据结尾处
StringBuffer  insert(int index, 数据):将数据插入到指定的index位置
2  删除
StringBuffer delete(int start,int end):删除缓冲区中的数据,包含start,不包含end
StrinfBuffer  deleteCharAt(int index):删除指定位置的字符
3  获取
char charAt(int  index)
int  indexOf(String str)
int  lastIndexOf(String str)
int  length()
String substring(int start,int end)
这个跟String类中的方法基本一样
4  修改
StringBuffer replace(int start,int end,String str)
void  setCharAt(int index,char ch)
修改指定位置字符,没有返回值
5  反转
StringBuffer  reverse()
public static void StringBufferDemo(){
		StringBuilder sb = new StringBuilder();
		//添加
		sb.append("adsabc");
		sop(sb.toString());
		sb.insert(2, "java");
		sop(sb.toString());
		//删除
		sb.delete(1,3);
		sop(sb.toString());
		//修改
		sb.setCharAt(1, 'x');
		sop(sb.toString());
		//反转
		sb.reverse();
		sop(sb.toString());
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值