构建一个字符串

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类小结的更多相关文章

  1. Java中String类的方法及说明

    String : 字符串类型 一.      String sc_sub = new String(c,3,2);    //      String sb_copy = new String(sb) ...

  2. java中String类学习

    java中String类的相关操作如下: (1)初始化:例如,String s = “abc”; (2)length:返回字符串的长度. (3)charAT:字符操作,按照索引值获得字符串中的指定字符 ...

  3. 在java中String类为什么要设计成final

    在java中String类为什么要设计成final? - 胖胖的回答 - 知乎 https://www.zhihu.com/question/31345592/answer/114126087

  4. 【转载】Java中String类的方法及说明

    转载自:http://www.cnblogs.com/YSO1983/archive/2009/12/07/1618564.html String : 字符串类型 一.      String sc_ ...

  5. 在java中String类为什么要设计成final?

    大神链接:在java中String类为什么要设计成final? - 程序员 - 知乎 我进行了重新排版,并且更换了其中的一个例子,让我们更好理解. String很多实用的特性,比如说“不可变性”,是工 ...

  6. Java中String类为什么被设计为final?

    Java中String类为什么被设计为final   首先,String是引用类型,也就是每个字符串都是一个String实例.通过源码可以看到String底层维护了一个byte数组:private f ...

  7. java中String类、StringBuilder类和StringBuffer类详解

    本位转载自http://www.cnblogs.com/dolphin0520/p/3778589.html  版权声明如下: 作者:海子 出处:http://www.cnblogs.com/dolp ...

  8. java 中String类的常用方法总结,带你玩转String类。

    String类: String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.String类对象创建后不能修改,StringBuffer & St ...

  9. java中String类为什么不可变?

    在面试中经常遇到这样的问题:1.什么是不可变对象.不可变对象有什么好处.在什么情景下使用它,或者更具体一点,java的String类为什么要设置成不可变类型? 1.不可变对象,顾名思义就是创建后的对象 ...

随机推荐

  1. java CMS gc解析

    转载: http://www.blogjava.net/killme2008/archive/2009/09/22/295931.html     CMS,全称Concurrent Low Pause ...

  2. C/C++语言参数传递----函数/方法 参数的指针引用传递

    int m_value = 1; void func(int *p) { p = &m_value; } int main(int argc, char *argv[]) { int n = ...

  3. 【mysql的设计与优化专题(3)】字段类型与合理的选择字段类型

    本篇博客稍微有点长,它实际上包括两个内容:一是mysql字段类型的介绍,二是在mysql建表过程中是如何正确选择这些字段类型; 字段类型 数值 MySQL 的数值数据类型可以大致划分为两个类别,一个是 ...

  4. HeadFirst设计模式之模板方法模式

    一. 1.The Template Method defines the steps of an algorithm and allows subclasses to provide the impl ...

  5. How to install GSL on linux(ubuntu,centos,redhat)

    Test: ftp://ftp.gnu.org/gnu/gsl/gsl-1.15.tar.gz  success. ftp://ftp.gnu.org/gnu/gsl/gsl-1.13.0.tar.g ...

  6. Android开发之通过Intent启动系统应用的协议

    使用隐式Intent启动系统应用,除了http协议,还有geo(显示地理位置),tel(拨打电话),file(文件)等

  7. 转载:C++ list 类学习笔记

    声明:本文转自http://blog.csdn.net/whz_zb/article/details/6831817 双向循环链表list list是双向循环链表,,每一个元素都知道前面一个元素和后面 ...

  8. CentOS6脱机rpm安装MariaDB10

    转载请保存原文链接:http://www.wlm.so/Article/Detail/lmb4cijci5mc900000 1.卸载原有mysql安装包,避免安装文件冲突 #查找所有的mysql包 r ...

  9. Asp.net调用百度搜索引擎

    ASP.NET 调用百度搜索引擎 百度搜索引擎提供了一段嵌入到页面中的代码 <form action="http://www.baidu.com/baidu" target= ...

  10. acdream 小晴天老师系列——晴天的后花园 (暴力+剪枝)

    小晴天老师系列——晴天的后花园 Time Limit: 10000/5000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) ...