博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java学习日志(13-1-String类常见操作)
阅读量:6408 次
发布时间:2019-06-23

本文共 5409 字,大约阅读时间需要 18 分钟。

  hot3.png

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

切割和替换

    替换

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

转换,去空格,比较

    经字符串转成大/小写

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

    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

    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

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

 

转载于:https://my.oschina.net/Almon/blog/734096

你可能感兴趣的文章
VTK三维点集轮廓凸包提取
查看>>
【概率论与数理统计】小结9-3 - 区间估计
查看>>
Golang性能调优入门
查看>>
sqlloader外部表
查看>>
golang笔记——数组与切片
查看>>
屏蔽可忽略的js脚本错误
查看>>
散文分享
查看>>
【Vue】vue.js常用指令
查看>>
NFS学习
查看>>
MySql常用命令总结
查看>>
又一年...
查看>>
文件上传框的美化+预览+ajax
查看>>
Linux VFS
查看>>
ext不能选中复制属性_如何实现Extjs的grid单元格只让选择(即可以复制单元格内容)但是不让修改?...
查看>>
python中print的作用*8、不能+8_在 Python 3.x 中语句 print(*[1,2,3]) 不能正确执行。 (1.0分)_学小易找答案...
查看>>
python 生成html代码_使用Python Markdown 生成 html
查看>>
axure如何导出原件_Axure 教程:轻松导出图标字体所有图标
查看>>
laravel input值必须不等于0_框架不提供,动手造一个:Laravel表单验证自定义用法...
查看>>
cad填充图案乱理石_太快了吧!原来大神是这样用CAD图案填充的
查看>>
activator.createinstance 需要垃圾回收么_在垃圾回收器中有哪几种判断是否需要被回收的方法...
查看>>