文档章节

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

Almon
 Almon
发布于 2016/08/17 16:14
字数 1718
阅读 3
收藏 0
点赞 0
评论 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是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互...

Java小辰 ⋅ 05/22 ⋅ 0

从 Java 到 Kotlin,再从 Kotlin 回归 Java

由于此博客文章引起高度关注和争议,我们认为值得在Allegro上增加一些关于我们如何工作和做出决策的背景。Allegro拥有超过50个开发团队可以自由选择被我们PaaS所支持的技术。我们主要使用Jav...

oschina ⋅ 05/31 ⋅ 0

Java编程基础知识点和技术点归纳

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

Java小辰 ⋅ 05/23 ⋅ 0

面试中关于Java虚拟机(jvm)的问题看这篇就够了

最近看书的过程中整理了一些面试题,面试题以及答案都在我的文章中有所提到,希望你能在以问题为导向的过程中掌握虚拟机的核心知识。面试毕竟是面试,核心知识我们还是要掌握的,加油~~~ 下面...

snailclimb ⋅ 05/12 ⋅ 0

java编程语言知识要点学习java基础英语单词表

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

Java小辰 ⋅ 05/19 ⋅ 0

从Java到Kotlin,然后又回到Java!

最近Java与kotlin语言之争又有点小热,大概是因为某位当初吹捧Java的大神来华兜售其kotlin新书有关,但是与此同时相反观点也是不断涌现,Allegro团队就在他们的博客发表这篇文章,从Java到K...

欧阳海阳 ⋅ 05/28 ⋅ 0

2018年Java编程学习面试最全知识点总结

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

Java小辰 ⋅ 05/14 ⋅ 0

用Java为Hyperledger Fabric(超级账本)开发区块链链代码智能合约之编写链代码程序

编写第一个 Java 链代码程序 在上一节中,您已经熟悉了如何构建、运行、部署和调用链代码,但尚未编写任何 Java 代码。 在本节中,将会使用 Eclipse IDE、一个用于 Eclipse 的 Gradle 插件,...

笔阁 ⋅ 05/24 ⋅ 0

做几道基础的Java测试题,看看最近有进步吗?欢迎来学习

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

启示录是真的 ⋅ 05/24 ⋅ 0

关于Java编程基础学习输入输出IO的问题

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

Java小辰 ⋅ 05/23 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

RabbitMQ学习以及与Spring的集成(三)

本文介绍RabbitMQ与Spring的简单集成以及消息的发送和接收。 在RabbitMQ的Spring配置文件中,首先需要增加命名空间。 xmlns:rabbit="http://www.springframework.org/schema/rabbit" 其次是模...

onedotdot ⋅ 29分钟前 ⋅ 0

JAVA实现仿微信红包分配规则

最近过年发红包拜年成为一种新的潮流,作为程序猿对算法的好奇远远要大于对红包的好奇,这里介绍一种自己想到的一种随机红包分配策略,还请大家多多指教。 算法介绍 一、红包金额限制 对于微...

小致dad ⋅ 41分钟前 ⋅ 0

Python 数电表格格式化 xlutils xlwt xlrd的使用

需要安装 xlutils xlwt xlrd 格式化前 格式化后 代码 先copy读取的表格,然后按照一定的规则修改,将昵称中的学号提取出来替换昵称即可 from xlrd import open_workbookfrom xlutils.copy ...

阿豪boy ⋅ 今天 ⋅ 0

面试题:使用rand5()生成rand7()

前言 读研究生这3 年,思维与本科相比变化挺大的,这几年除了看论文、设计方案,更重要的是学会注重先思考、再实现,感觉更加成熟吧,不再像个小P孩,人年轻时总会心高气傲。有1 道面试题:给...

初雪之音 ⋅ 今天 ⋅ 0

Docker Toolbox Looks like something went wrong

Docker Toolbox 重新安装后提示错误:Looks like something went wrong in step ´Checking if machine default exists´ 控制面板-->程序与应用-->启用或关闭windows功能:找到Hyper-V,如果处......

随你疯 ⋅ 今天 ⋅ 0

Guacamole 远程桌面

本文将Apache的guacamole服务的部署和应用,http://guacamole.apache.org/doc/gug/ 该链接下有全部相关知识的英文文档,如果水平ok,可以去这里仔细查看。 一、简介 Apache Guacamole 是无客...

千里明月 ⋅ 今天 ⋅ 0

nagios 安装

Nagios简介:监控网络并排除网络故障的工具:nagios,Ntop,OpenVAS,OCS,OSSIM等开源监控工具。 可以实现对网络上的服务器进行全面的监控,包括服务(apache、mysql、ntp、ftp、disk、qmail和h...

寰宇01 ⋅ 今天 ⋅ 0

AngularDart注意事项

默认情况下创建Dart项目应出现以下列表: 有时会因为不知明的原因导致列表项缺失: 此时可以通过以下步骤解决: 1.创建项目涉及到的包:stagehand 2.执行pub global activate stagehand或pub...

scooplol ⋅ 今天 ⋅ 0

Java Web如何操作Cookie的添加修改和删除

创建Cookie对象 Cookie cookie = new Cookie("id", "1"); 修改Cookie值 cookie.setValue("2"); 设置Cookie有效期和删除Cookie cookie.setMaxAge(24*60*60); // Cookie有效时间 co......

二营长意大利炮 ⋅ 今天 ⋅ 0

【每天一个JQuery特效】淡入淡出显示或隐藏窗口

我是JQuery新手爱好者,有时间就练练代码,防止手生,争取每天一个JQuery练习,在这个博客记录下学习的笔记。 本特效主要采用fadeIn()和fadeOut()方法显示淡入淡出的显示效果显示或隐藏元...

Rhymo-Wu ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部