java中String类小结
构建一个字符串
1、用字符串直接量:
String message = new String("Welcome to java");
2、用字符串直接量:
String message = "Welcome to java";
3、用字符数组
Char[] charArray = {'m', 'y'};
String message = new String(charArray);
不可变字符与限定字符串
String对象是不可变的,内容不能改变
java虚拟机为了提高效率并节约内存,对具有相同字符串序列的字符串直接量使用同一个实例:
public class Main
{
public static void main(String args[])
{
String s1 = "Welcome to java";
String s2 = new String("Welcome to java");
String s3 = "Welcome to java"; System.out.println("s1 == s2 is " + (s1 == s2));
System.out.println("s1 == s3 is " + (s1 == s3));
}
}
结果:
s1 == s2 is false
s1 == s3 is true
字符串的比较
字符串相等的比较:
1、使用equals方法
boolean equals(Object anObject) :当anObject不为空并且与当前String对象一样,返回true;否则,返回false。
2、使用compareTo方法
int compareTo(String anotherString) :当前String对象与anotherString比较。相等关系返回0;不相等时,从两个字符串第0个字符开始比较,返回第一个不相等的字符差,另一种情况,较长字符串的前面部分恰巧是较短的字符串,返回它们的长度差。
int compareTo(Object o) :如果o是String对象,和2的功能一样;否则抛出ClassCastException异常。
public static void main(String args[])
{
String s1 = "Welcome to java";
String s2 = new String("Welcome to java");
String s3 = "Welcome to C++";
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
System.out.println(s1.compareTo(s2));
System.out.println(s1.compareTo(s3));
}
运行结果:
true
false
0
39
字符串长度、字符以及组合字符串
String类提供获取字符串长度、获取单个字符和连接字符串的方法
public static void main(String args[])
{
String s1 = "Welcome to java";
System.out.println("s1's length is: " + s1.length());
System.out.println("s1[2] == " + s1.charAt(3));
String s2 = " bigjava";
String s3 = s1.concat(s2);
System.out.println(s3);
System.out.println(s1);
}
运行结果:
s1[2] == c
Welcome to java bigjava
Welcome to java
也可以使用(+)连接两个或更多的字符串:String s3 = s1 + s2;
获取子串
使用charAt获取单个字符
也可使用String类中的substring 方法从字符串中提取子串:
String substring(int beginIndex) :取从beginIndex位置开始到结束的子字符串。
String substring(int beginIndex, int endIndex) :取从beginIndex位置开始到endIndex位置的子字符串。
String s1 = "Welcome to java";
System.out.println(s1.substring(4));
System.out.println(s1.substring(2, 7));
运行结果:
ome to java
lcome
字符串的转换、替换和分隔
String toLowerCase() :将字符串转换成小写。
String toUpperCase() :将字符串转换成大写。
String s = "Welcome to java";
System.out.println("s.toUpperCase(): " + s.toUpperCase()); //s.toUpperCase(): WELCOME TO JAVA
System.out.println("s.toLowerCase(): " + s.toLowerCase()); //s.toLowerCase(): welcome to java
String replace(char oldChar, char newChar) :将字符号串中第一个oldChar替换成newChar
String replaceFirst(char oldString, char newString) :将字符号串中第一个oldString替换成newString
String replaceAll(char oldString, char newString) :将字符号串中所有匹配的oldString替换成newString
String s = "Welcome to java";
System.out.println(s.replace('e', 'm'));
System.out.println(s.replaceFirst("e", "AB"));
System.out.println("eleleledsafsdfhie".replaceAll("el", "wml"));
运行结果:
Wmlcomm to java
WABlcome to java
wmlwmlwmledsafsdfhie
public String[] split(String regex):将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组
public static void main(String args[])
{
String s = "2014/07/08";
String[] array = s.split("/");
for(int i = 0; i < array.length; ++i) {
System.out.print(array[i] + " ");
}
}
运行结果:
2014 07 08
public String trim():返回该字符串去掉开头和结尾空格后的字符串
String s = " weer ewre ";
System.out.println(s.trim()); // weer ewre
找出字符串中的某个字符或者某个子串
int indexOf(int ch) :只找第一个匹配字符位置。
int indexOf(int ch, int fromIndex) :从fromIndex开始找第一个匹配字符位置。
int indexOf(String str) :只找第一个匹配字符串位置。
int indexOf(String str, int fromIndex) :从fromIndex开始找第一个匹配字符串位置。
public class Main
{
public static void main(String args[])
{
String s = new String("talk is cheap, show me your code!");
String ss = new String("me");
System.out.println(s.indexOf('s'));
System.out.println(s.indexOf('s', 7));
System.out.println(s.indexOf("ch"));
System.out.println(s.indexOf("ch", 9));
}
}
运行结果:
6
15
8
-1
int lastIndexOf(int ch)
int lastIndexOf(int ch, int fromIndex)
int lastIndexOf(String str)
int lastIndexOf(String str, int fromIndex) 以上四个方法与13、14、15、16类似,不同的是:找最后一个匹配的内容。
public class Main
{
public static void main(String args[])
{
String s = new String("talk is cheap, show me your code!");
String ss = new String("me");
System.out.println(s.lastIndexOf('c'));
System.out.println(s.lastIndexOf("e"));
System.out.println(s.lastIndexOf('e', 7));
System.out.println(s.lastIndexOf("me", 22));
}
}
运行结果:
28
31
-1
20
字符串与数组之间的转换
char[ ] toCharArray() :将该String对象转换成char数组。
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) :该方法将字符串拷贝到字符数组中。其中,srcBegin为拷贝的起始位置、srcEnd为拷贝的结束位置、字符串数值dst为目标字符数组、dstBegin为目标字符数组的拷贝起始位置。
char[] s1 = {'I',' ','l','o','v','e',' ','h','e','r','!'};//s1=I love her!
String s2 = new String("you!"); s2.getChars(0,3,s1,7); //s1=I love you!
System.out.println( s1 );
运行结果:
I love you!
将字符和数值转换成字符串
static String valueOf(boolean b)
static String valueOf(char c)
static String valueOf(char[] data)
static String valueOf(char[] data, int offset, int count)
static String valueOf(double d)
static String valueOf(float f)
static String valueOf(int i)
static String valueOf(long l)
static String valueOf(Object obj)
以上方法用于将各种不同类型转换成Java字符型。这些都是类方法。
public class Main
{
public static void main(String args[])
{
String s1 = String.valueOf('c');
char[] charArray = {'w', 'e', 'a', 'r'};
String s2 = String.valueOf(charArray);
double d = 3.1415926;
String s3 = String.valueOf(d);
float f = 2.045f;
String s4 = String.valueOf(f);
int i = 2324;
String s5 = String.valueOf(i);
long l = 2135123;
String s6 = String.valueOf(l);
boolean b = false;
String s7 = String.valueOf(b);
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
System.out.println(s4);
System.out.println(s5);
System.out.println(s6);
System.out.println(s7);
}
}
运行结果:
c
wear
3.1415926
2.045
2324
2135123
false
java中String类小结的更多相关文章
- Java中String类的方法及说明
String : 字符串类型 一. String sc_sub = new String(c,3,2); // String sb_copy = new String(sb) ...
- java中String类学习
java中String类的相关操作如下: (1)初始化:例如,String s = “abc”; (2)length:返回字符串的长度. (3)charAT:字符操作,按照索引值获得字符串中的指定字符 ...
- 在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.不可变对象,顾名思义就是创建后的对象 ...
随机推荐
- uva 437 hdu 1069
dp 将石块按三个面存入队列 按底面积排序 dp就最大高度 按嵌套矩形最长路做做法 #include <iostream> #include <cstdio> #inc ...
- Titan DB的一些问题
使用熟悉一点的系统来测试TitanDB,HBASE+ES,记录下来一些小tips. 1.首先TitanDB支持的Hadoop只有1.2.1,所以Hbase自然也只能取到0.98,虽然官网上提供了tit ...
- HDU 1494 跑跑卡丁车 (DP)
题目链接 题意 : 中文题不详述. 思路 : sum = L*N 段,每走过一段如果不用加速卡的话,能量会增20%,将20%看作1,也就是说每涨到15就要变为10,所以最多是14才不浪费. dp[i] ...
- linux xxd 命令
http://www.cnblogs.com/openix/archive/2012/04/23/2466320.html xxd -i dht.jpg dht.h
- nginx负载均衡和反向代理有什么区别
近在研究nginx的负载均衡和反向代理,先看下这两个简单的配置吧! 负载均衡 worker_processes 1; events { worker_connections 1024; } http{ ...
- orm框架的学习mybatis
1.数据库中的每张表,对应代码 中一个pojo类. 2.or映射是在mapper.xml文件中,指定resultType.可以指定已经定义的pojo类. 3.可以利用paramaterType指定sq ...
- Android:控件的对象修改控件的值
TextView private TextView textView; ... textView =(TextView)findViewById(R.id.textView); textView.se ...
- 【今日推荐】10大流行的 Metro UI 风格的 Bootstrap 主题和模板
1. BootMetro 基于 Twitter Bootstrap 的简单灵活的 HTML.CSS 和 Javascript 框架,Win8 风格,大爱啊! 立即下载 效果演示 2. Boot ...
- 【原创】海量数据处理问题(一) ---- 外排,堆排,K查找的应用
这篇博客源自对一个内存无法处理的词频统计问题的思考,最后给出的解决办法是自己想的,可以肯定这不是最好的解法.但是通过和同学的讨论,仍然感觉这是一个有意义及有意思的问题,所以和大家分享与探讨. 如果有误 ...
- poj3186 poj3267
两道很不错的dp 3186很神似回文词,合并石子之类的问题: 一开始不知道怎么在dp方程中体现权值天数,很来才想起来 对于一段区间[i,j],里面的东西必然是要卖完的 又因为只能从两头开始卖,所以 d ...