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类小结,布布扣,bubuko.com

时间: 2024-12-26 17:18:02

java中String类小结的相关文章

hadoop中Text类 与 java中String类的区别

hadoop 中 的Text类与java中的String类感觉上用法是相似的,但两者在编码格式和访问方式上还是有些差别的,要说明这个问题,首先得了解几个概念: 字符集: 是一个系统支持的所有抽象字符的集合.字符是各种文字和符号的总称,包括各国家文字.标点符号.图形符号.数字等.例如 unicode就是一个字符集,它的目标是涵盖世界上所有国家的文字和符号: 字符编码:是一套法则,使用该法则能够对自然语言的字符的一个集合(如字母表或音节表),与其他东西的一个集合(如号码或电脉冲)进行配对.即在符号集

Java中String类学习总结

java中String类的使用频率非常高,本人在学习此模块时,认为下列几点知识值得注意: 一.String是不可变对象 java.lang.String类使用了final修饰,不能被继承.Java程序中的所有字面值,即双引号括起的字符串,如"abc",都是作为String类的实例实现的.String是常量,其对象一旦构造就不能再被改变.换句话说,String对象是不可变的,每一个看起来会修改String值的方法,实际上都是创造了一个全新的String对象,以包含修改后的字符串内容.而最

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

转载自:http://www.cnblogs.com/YSO1983/archive/2009/12/07/1618564.html String : 字符串类型 一.构造函数     String(byte[ ] bytes):通过byte数组构造字符串对象.     String(char[ ] value):通过char数组构造字符串对象.     String(Sting original):构造一个original的副本.即:拷贝一个original.     String(Strin

Java中String类与Integer类的几个方法

计算诸如-123,456,789 + 123,123的值 import java.math.BigInteger; import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner cin = new Scanner(System.in); String str1, str2; BigInteger a, b; while(cin.hasNext()){ str1 = cin.

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

大神链接:在java中String类为什么要设计成final? - 程序员 - 知乎 我进行了重新排版,并且更换了其中的一个例子,让我们更好理解. String很多实用的特性,比如说"不可变性",是工程师精心设计的艺术品!艺术品易碎!用final就是拒绝继承,防止世界被熊孩子破坏,维护世界和平! 1. 什么是不可变? String不可变很简单,如下图,给一个已有字符串"abcd"第二次赋值成"abcedl",不是在原内存地址上修改数据,而是重新指

Java中String类的方法及说明

String : 字符串类型 一.构造函数     String(byte[ ] bytes):通过byte数组构造字符串对象.     String(char[ ] value):通过char数组构造字符串对象.     String(Sting original):构造一个original的副本.即:拷贝一个original.     String(StringBuffer buffer):通过StringBuffer数组构造字符串对象.  例如:      byte[] b = {'a',

JAVA中String类

1.String类定义的变量是不可变得 eg:String s0="kvill"; String s1 = new String("kvill"); 为什么要设计为不可变: 1.1 字符串常量池的需要 1.2允许String对象缓存HashCode Java中String对象的哈希码被频繁地使用, 比如在hashMap 等容器中. 字符串不变性保证了hash码的唯一性,因此可以放心地进行缓存.这也是一种性能优化手段,意味着不必每次都去计算新的哈希码. 在String

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

本位转载自http://www.cnblogs.com/dolphin0520/p/3778589.html 版权声明如下: 作者:海子 出处:http://www.cnblogs.com/dolphin0520/ 本博客中未标明转载的文章归作者海子和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利 正文: 探秘Java中String.StringBuilder以及StringBuffer 相信String这个类是Java中使用得

java中String类为什么不可变?

在面试中经常遇到这样的问题:1.什么是不可变对象.不可变对象有什么好处.在什么情景下使用它,或者更具体一点,java的String类为什么要设置成不可变类型? 1.不可变对象,顾名思义就是创建后的对象不可以改变,典型的例子有java中的String类型. 2.相比于可变对象,不可变对象有很多优势: (1)不可变对象可以提高String Pool(字符串常量池)的效率和安全性.如果你知道一个对象是不可变动 ,那么需要拷贝的对象的内容时就不用复制它本身二只是复制它的地址,复制地址(通常一个指针的大小