文档章节

Java学习日志(13-1-String类常见操作)

Almon
 Almon
发布于 2016/08/17 16:14
字数 1718
阅读 3
收藏 0

String类

    被final修饰,不可以被覆盖

class StringDemo{
	public static void main(String[] args){
		String s1="abc";	//s1是一个类类型变量,"abc"是一个对象
						//字符串最大的特点:一旦被初始化就不可以被改变
        String s2=new String("abc");
        System.out.println(s1==s2);//false
        System.out.println(s1.equals(s2));//true
        //String类覆写了Object类中equals方法,用于判断字符是否相同
	}
}
//s1代表一个对象,s2有2个对象

String类适用于描述字符串事物,因此提供了多个方法对字符串进行操作

获取

    字符串中包含的字符数——字符串的长度

int length();

    根据位置获取位置上的某个字符

char charAt(int index);

    根据字符获取该字符的位置

int indexOf(int ch);//返回的是ch在字符串中第一次出现的位置
int indexOf(int ch,int fromIndex);//从fromIndex指定位置开始,获取ch在字符串中出现的位置

int indexOf(String str);//返回str在字符串中第一次出现的位置
int indexOf(String str,int fromIndex);//从fromIndex指定位置开始,获取str再付串中出现的位置
前面方法加上last——lastIndexOf(int ch)即反向索引

练习

class StringMethodDemo{
	public static void method_get(){
		String str="abcdefadfg";
		//长度
		sop(str.length());
		//根据索引获取字符
		sop(str.charAt(4));//当访问到字符串中不存在的角标时,会发生越界异常
		//根据字符获取索引
		sop(str.indexOf('a',3));//如果没有找到,返回-1
		
	}
	public static void sop(Object obj){
		System.out.println(obj);
	}
	public static void main(String[] args){
		method_get();
	}
}

判断

    字符串中是否包含某一个子串

boolean contains(str);
//indexOf(str)返回值为-1时表示字符串中不存在str,因此也可用于判断
//该方法既可以返回位置,又可以用于判断

    字符串中自否有内容

boolean isEmpty();//即判断长度是否为0

    字符串是否是以指定内容开头

boolean stratsWith(str);

    字符串是否是以指定内容结尾

boolean endsWith(str);

    字符串内容是否相同

boolean equals(str);//覆写Object类的equals方法
boolean equalsIgnoreCase();//忽略大小写

练习

class StringMethodDemo{
	public static void method_is(){
		String str="ArrayDemo.java";
		sop(str.startsWith("Array"));
		sop(str.endsWith("java"));
		sop(str.contains("Demo"));
	}
	public static void sop(Object obj){
		System.out.println(obj);
	}
	public static void main(String[] args){
		method_is();
	}
}

转换

    将字符数组转换为字符串

构造函数:String(char[])
        String(char[],offset,count)//将字符数组中的一部分转成字符串
静态方法:static String copyValueOf(char[]);
        static String copyValueOf(char[],int offset,int count)
        static String valueOf(char[]);

    将字符串转换成字符数组**

char[] toCharArray();

    将字节数组转换成字符串

String(byte[]);
String(byte[],offset,count);

    将字符串转换成字节数组

byte[] getBytes();

    将基本数据类型转换成字符串

String valueOf(int);
String valueOf(double);

**字符串和字节数组在转换过程中,可以指定编码表

练习

	public static void method_trans(){
		char[] arr={'a','b','c','d','e','f'};
		String s=new String(arr,1,3);
		sop("s="+s);
		String s1="zxcvbnm";
		char[] chs=s1.toCharArray();
		for(int x=0;x<chs.length;x++){
			sop("ch="+chs[x]);
		}
	}

切割和替换

    替换

String replace(oldchar,newchar);//如果返回的字符不存在,则返回原串

    切割

String[] split(regex)

    子串:获取字符串中的一部分

String substring(begin);//从指定位置开始到结尾
String substring(begin,end);//包含头,不包含尾

练习

	//获取子串
	public static void method_sub(){
		String s="asdfghj";
		sop(s.substring(2));
		sop(s.substring(2,4));
	}
	//切割和替换
	public static void method_split(){
		String s="zhangsan,lisi,wangwu";
		String[] arr=s.split(",");
		for(int x=0;x<arr.length;x++){
			sop(arr[x]);
		}
	}
	public static void method_replace(){
		String s="hellow java";
		//String s1=s.replace('a','n');
		String s1=s.replace("java","world");
		sop("s="+s);
		sop("s1="+s1);
	}

转换,去空格,比较

    经字符串转成大/小写

String toUpperCase();
String tolowerCase();

    去除字符串两段多余空格

String trim();

    对两个字符串进行自然顺序的比较

int compareTo(string);//相等返回0,小于返回负数,大于返回正数

练习

	public static void method7(){
		String s="    Hellow Java    ";
		sop(s.toUpperCase());
		sop(s.toLowerCase());
		sop(s.trim());
		String s1="abc";
		String s2="aaa";
		sop(s1.compareTo(s2));
	}

字符串总练习

1.模拟一个trim方法,去除字符串两端的空格

/* 思路:
1.判断字符串第一个位置是否是空格,如果是继续向下判断,知道不是空格为止
2.当开始和结尾都判断到不是空格时,就是要获取的字符串 */
class StringTest{
	public static void sop(String str){
		System.out.println(str);
	}
	public static String myTrim(String str){
		int start=0,end=str.length()-1;
		while(start<=end&&str.charAt(start)==' '){
			start++;
		}
		while(start<=end&&str.charAt(end)==' '){
			end--;
		}
		return str.substring(start,end+1);
	}
	public static void main(String[] args){
		String s="    ab cd     ";
		sop("("+s+")");
		s=myTrim(s);
		sop("("+s+")");
	}
}

2.将一个字符串进行反转,将字符串中指定部分进行反转,“abcdefg”;abfedcg

    Ver1.0 全部反转

	/*思路:
	1.类似对数组的元素进行反转
	2.将字符串变成数据,对数组反转
	3.将反转后的数组变成字符串
	4,只要将未反转的部分的开始和结束位置作为参数传递即可 
	*/
	public static String reverseString(String s){
		//字符串变为数组
		char[] chs=s.toCharArray();
		//反转数组
		reverse(chs);
		//将数组变成字符串
		return new String(chs);
	}
	private static void reverse(char[] arr){
		for(int start=0,end=arr.length-1;start<end;start++,end--){
			swap(arr,start,end);
		}
	}
	private static void swap(char[] arr,int x,int y){
		char temp=arr[x];
		arr[x]=arr[y];
		arr[y]=temp;
	}

    Ver2.0 部分反转

	public static String reverseString(String s,int start,int end){
		char [] chs=s.toCharArray();
		reverse(chs,start,end);
		return new String(chs);
	}
	public static String reverseString(String s){

		return "";
	}
	private static void reverse(char[] arr,int x,int y){
		for(int start=x,end=y-1;start<end;start++,end--){
			swap(arr,start,end);
		}
	}
	private static void swap(char[] arr,int x,int y){
		char temp=arr[x];
		arr[x]=arr[y];
		arr[y]=temp;
	}

    Ver3.0 整合代码

	public static String reverseString(String s,int start,int end){
		char [] chs=s.toCharArray();
		reverse(chs,start,end);
		return new String(chs);
	}
	public static String reverseString(String s){
		return reverseString(s,0,s.length());
	}
	private static void reverse(char[] arr,int x,int y){
		for(int start=x,end=y-1;start<end;start++,end--){
			swap(arr,start,end);
		}
	}
	private static void swap(char[] arr,int x,int y){
		char temp=arr[x];
		arr[x]=arr[y];
		arr[y]=temp;
	}

3.获取一个字符串在另一个字符串中出现的次数

    方法一

	/* 思路:
	1.定义个计数器
	2.获取kk第一次出现的位置
	3.从第一次出现位置后剩余字符串中继续获取
	4.当不再获取时,定义完成
	*/
	public static int getSubCount(String str,String key){
		int count=0;
		int index=0;
		while((index=str.indexOf(key))!=-1){
			sop("str="+str);
			str=str.substring(index+key.length());
			count++;
		}
		return count;
	}

    方法二

	public static int getSubCount2(String str,String key){
		int count=0;
		int index=0;
		while((index=str.indexOf(key,index))!=-1){
			sop("index="+index);
			index=index+key.length();
			count++;
		}
		return count;
	}

4.获取两个字符串中最大相同子串

/*思路:
	1.讲短的串按照长度递减的方式获取到
	2.将每获取到的字串去长传中判断是否包含
		如果包含,已经找到
	*/
	public static String  getMaxSubString(String s1,String s2){
		String max="",min="";
		max=(s1.length()>s2.length())?s1:s2;
		min=max==s1?s2:s1;
		sop("max="+max+"...min="+min);
		for(int x=0;x<min.length();x++){
			for(int y=0,z=min.length()-x;z!=s2.length()+1;y++,z++){
				String temp=min.substring(y,z);
				// sop(temp);
				if(max.contains(temp)){
					return(temp);
				}
			}
		}
		return null;
	}

 

© 著作权归作者所有

共有 人打赏支持
Almon
粉丝 2
博文 64
码字总数 44346
作品 0
江北
Java语言学习(七):字符串的常见使用

Java中字符串的使用很是常见,也是不可避免的,比如:格式化、大小写转换等等,下面就这些常见的使用来说下字符串。 在使用前,必须要理解一点:字符串是不可变的对象,意味着每当调用字符串...

海岸线的曙光
07/16
0
0
java编程学习常见面试题及答案

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互...

Java小辰
05/22
0
0
淘宝Tprofiler工具实现分析

项目首页:https://github.com/alibaba/TProfiler 工具介绍 TProfiler是一个可以在生产环境长期使用的性能分析工具.它同时支持剖析和采样两种方式,记录方法执行的时间和次数,生成方法热点 对...

伍咖
2015/11/14
0
0
Groovy轻松入门-通过与Java的比较,迅速掌握Groovy

Groovy和Java的相同点有: 3+, 4+, 6+, 8+, 10+, 12+, 13, 14, 15, 18+, 20+, 21, 22, 23, 28+, 29+, 30+, 31+, 32+ +表示Groovy不但涵盖了Java的语法,而且还有增强部分。 Groovy和Java的不...

Sub
2013/03/08
0
1
Groovy轻松入门——通过与Java的比较,迅速掌握Groovy

Groovy和Java的相同点有: 3+, 4+, 6+, 8+, 10+, 12+, 13, 14, 15, 18+, 20+, 21, 22, 23, 28+, 29+, 30+, 31+, 32+ +表示Groovy不但涵盖了Java的语法,而且还有增强部分。 Groovy和Java的不...

DavidBao
2015/05/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

49.Nginx防盗链 访问控制 解析php相关 代理服务器

12.13 Nginx防盗链 12.14 Nginx访问控制 12.15 Nginx解析php相关配置(502的问题) 12.16 Nginx代理 扩展 502问题汇总 http://ask.apelearn.com/question/9109 location优先级 http://blog....

王鑫linux
51分钟前
0
0
Nginx防盗链、访问控制、解析php相关配置、Nginx代理

一、Nginx防盗链 1. 编辑虚拟主机配置文件 vim /usr/local/nginx/conf/vhost/test.com.conf 2. 在配置文件中添加如下的内容 { expires 7d; valid_referers none blocked server_names *.tes......

芬野de博客
今天
0
0
spring EL 和资源调用

资源调用 import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.PropertySource;import org.springframework.core.io.Resource;......

Canaan_
今天
1
0
memcached命令行、memcached数据导出和导入

一、memcached命令行 yum装telnet yum install telent 进入memcached telnet 127.0.0.1 11211 命令最后的2表示,两位字节,30表示过期时间(秒) 查看key1 get key1 删除:ctrl+删除键 二、m...

Zhouliang6
今天
0
0
Linux定时备份MySQL数据库

做项目有时候要备份数据库,手动备份太麻烦,所以找了一下定时备份数据库的方法 Linux里有一个 crontab 命令被用来提交和管理用户的需要周期性执行的任务,就像Windows里的定时任务一样,用这...

月夜中徘徊
今天
1
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部