java中String类学习
java中String类的相关操作如下:
(1)初始化:例如,String s = “abc”;
(2)length:返回字符串的长度。
(3)charAT:字符操作,按照索引值获得字符串中的指定字符
如,下面例子把字符c赋值为'e'
String str="abcdef";
char c=str.charAt(4);
(4)字符串连接
1)concat
2)+
注意:当使用+时不仅可以连接字符串,也可以连接其他类型(原因参加博客中另一篇文章java中的toString方法),但至少有一个参与连接的内容是字符串类型,而且“+”匹配的顺序是从左向右,如果两边连接的内容都是基本数字类型则按照加法运算,如果参与连接的内容有一个是字符串才按照字符串进行连接。
举例如下:
int a = 10;
int b=1;
String s1 = "123"+a+b;
String s2=a+b+"123";
System.out.println(s1);
System.out.println(s2);
上述程序的输出结果为:
而像这样String s3=a+b;的语句是无法通过编译的,原因是参与连接的内容没有字符串类型
(5)字符串是否相等
1)equals判断两个字符串对象的内容是否相同
2)== 比较的是两个对象在内存中存储的地址是否一样
具体区别参加另一篇博客(java中的==和equals)
另外还有一个方法equalsIgnoreCase,该方法的作用是忽略大小写比较两个字符串的内容是否相同
(6)compareTo字符串比较
(7)split方法以特定的字符串作为间隔,拆分当前字符串的内容,一般拆分以后会获得一个字符串数组。
String s = "12,3,4,567";
String []c=s.split(",");
注意split中是以字符串进行分割的(里面是双引号)而不是字符
如果字符串中在内部存在和间隔字符串相同的内容时将拆除空字符串,尾部的空字符串会被忽略掉,拆分出的中间的空字符串的数量等于中间间隔字符串的数量减一个。
例如:
String s = “abbcbtbb”;
String s1[] = s.split(“b”);
则拆分出的结果字符串数组s1的内容为:{“a”,””,”c”,”t”}。:
String s = “abbbcbtbbb”;
String s1[] = s.split(“b”);
则拆分出的结果是:{“a”,””,””,”c”,”t”}。
最后的空字符串不论有多少个,都会被忽略。
如果需要限定拆分以后的字符串数量,则可以使用另外一个split方法,例如:
String s = “abcbtb1”;
String s1[] = s.split(“b”,2);
该代码的作用是将字符串s最多拆分成包含2个字符串数组。则结果为:{“a”,”cbtb1”}。
如果第二个参数为负数,则拆分出尽可能多的字符串,包括尾部的空字符串也将被保留。
(8)substring:该方法的作用是取字符串中的“子串”。
注意取字串的区间为前闭后开,如下面的输出结果为23:
String s = "12345";
String s_sub=s.substring(1,3);
System.out.println(s_sub);
substring中也可以只指定一个参数,则取从该参数(包括该参数)以后所有字符作为字串。
如下面程序的输出结果为2345
String s = "12345";
String s_sub=s.substring(1);
System.out.println(s_sub);
(9)valueOf:该方法的作用是将其它类型的数据转换为字符串类型。
由于该方法是static方法,所以不用创建String类型的对象即可。例如:
int n = 10;
String s = String.valueOf(n);
(10)getBytes方法,将字符串转换为对应的byte数组,从而便于数据的存储和传输。
(11)toCharArray方法该方法的作用和getBytes方法类似,即将字符串转换为对应的char数组。
(12)startsWith判断是否以某个字符作为字符串的开始。
(13)endsWith判断是否以某个字符作为字符串的结尾
(14)indexOf方法,该方法的作用是查找特定字符或字符串在当前字符串中的起始位置,如果不存在则返回-1。
(15)trim:该方法的作用是去掉字符串开始和结尾的所有空格,然后形成一个新的字符串。该方法不去掉字符串中间的空格。
(16)大小写转换toLowerCase方法和toUpperCase方法,其他字符保持不变。
(17)replace方法:替换字符串中所有指定的字符或字符串,然后生成一个新的字符串。:
String s = “abcat”;
String s1 = s.replace(‘a’,’1’);
该代码的作用是将字符串s中所有的字符a替换成字符1,生成的新字符串s1的值是”1bc1t”,而字符串s的内容不发生改变。
如果需要将字符串中某个指定的字符串替换为其它字符串,则可以使用replaceAll方法,例如:
String s = “abatbac”;
String s1 = s.replaceAll(“ba”,”12”);
该代码的作用是将字符串s中所有的字符串”ab”替换为”12”,生成新的字符串”a12t12c”,而字符串s的内容也不发生改变。
如果只需要替换第一个出现的指定字符串时,可以使用replaceFirst方法,例如:
String s = “abatbac”;
String s1 = s. replaceFirst (“ba”,”12”);
该代码的作用是只将字符串s中第一次出现的字符串”ab”替换为字符串”12”,则字符串s1的值是”a12tbac”,字符串s的内容也不发生改变。
java中String类学习的更多相关文章
- java中String类学习笔记
1.String的两种实例化方式 String str="hello";//直接赋值的方式: String str=new String("hello");// ...
- Java中String类的方法及说明
String : 字符串类型 一. String sc_sub = new String(c,3,2); // String sb_copy = new String(sb) ...
- 在java中String类为什么要设计成final
在java中String类为什么要设计成final? - 胖胖的回答 - 知乎 https://www.zhihu.com/question/31345592/answer/114126087
- 【转载】Java中String类的方法及说明
转载自:http://www.cnblogs.com/YSO1983/archive/2009/12/07/1618564.html String : 字符串类型 一. String sc_ ...
- 在java中String类为什么要设计成final?
大神链接:在java中String类为什么要设计成final? - 程序员 - 知乎 我进行了重新排版,并且更换了其中的一个例子,让我们更好理解. String很多实用的特性,比如说“不可变性”,是工 ...
- Java中String类为什么被设计为final?
Java中String类为什么被设计为final 首先,String是引用类型,也就是每个字符串都是一个String实例.通过源码可以看到String底层维护了一个byte数组:private f ...
- java中String类、StringBuilder类和StringBuffer类详解
本位转载自http://www.cnblogs.com/dolphin0520/p/3778589.html 版权声明如下: 作者:海子 出处:http://www.cnblogs.com/dolp ...
- java 中String类的常用方法总结,带你玩转String类。
String类: String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.String类对象创建后不能修改,StringBuffer & St ...
- java中String类为什么不可变?
在面试中经常遇到这样的问题:1.什么是不可变对象.不可变对象有什么好处.在什么情景下使用它,或者更具体一点,java的String类为什么要设置成不可变类型? 1.不可变对象,顾名思义就是创建后的对象 ...
随机推荐
- Segment Tree 扫描线 分类: ACM TYPE 2014-08-29 13:08 89人阅读 评论(0) 收藏
#include<iostream> #include<cstdio> #include<algorithm> #define Max 1005 using nam ...
- [noip2005提高]过河 dp
由于L的范围到了109,用普通dp做肯定是不成了: 可以观察到M的数量很小,dp在转移的过程中有大量的无用转移: 可以想到压缩范围,问题是如何压缩,观察若S=9,T=10时,能到达的点,9,10,18 ...
- Spring.net Could not load type from string value
最近有点懒了啊,都没有按时上来博客园更新下,个人觉得遇到难题的时候在这里留下脚印也亦造福他人,进来 晓镜水月 被项目围的团团转,asp.net MVC项目来的,但是我还是不务正业啊,在弄网络爬虫,这个 ...
- 一道题DP
Problem Description 小明明又被大威鱼抓住了,大威鱼把小明明关在地牢里,地牢由n * n 个房间组成,小明被困在地牢的最左上角的房间中,出口在最右下角,他想逃出这个诡异的地牢,但是他 ...
- HDOJ 1085 Holding Bin-Laden Captive! (母函数)
Holding Bin-Laden Captive! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Ja ...
- D3D depth buffer的预览
在使用D3D开发游戏的过程中,很多情况下都会用到depth buffer来完成特定的效果,比如DOF,Shadows,SSAO等等.在这些情况下我们就可能需要预览depth buffer来确定它是正确 ...
- Fbric、Ansible、Docker、Chaos Monkey:DevOps工具的年中回顾
Fbric.Ansible.Docker.Chaos Monkey:DevOps工具的年中回顾 [编者按]近日,Cyber Engineering Solutions Group 技术经理 Hasan ...
- 九个衡量 Rails 应用性能的小方法
你有个绝佳的商业创意,日复一日地将它完善丰满起来.后来,你雇了一群天赋异禀的开发者.Web 设计师和用户体验专家,他们用一种非常棒的框架--Ruby on Rails 帮你实现长久以来的梦想. 你的网 ...
- MVC中 ViewBag、ViewData和TempData区别
MVC3中 ViewBag.ViewData和TempData的使用和区别 public dynamic ViewBag { get; } public ViewDataDictionary View ...
- HDU5002 Tree(LCT)
今天做了一道LCT模板题之后忽然间好像记起来LCT的模板怎么用了,于是就把上次网络赛的一道LCT补一下.典型的删边,加边操作,还有路径加和路径set为一个数.维护的是路径第二大以及它有多少个,后来想想 ...