JavaSE_基础库类_String类

String在Java中不是一个数据类型而是类类型(Java.lang.String)

String类是不变类,对其对象进行修改会新建一个对象,如果频繁修改将会产生很多的String对象,开销很大。修改字符串方面Java提供了一个StringBuffer类。

从以下几个方面阐述String类。

1) String的初始化

2) String的运算

3) String的格式化format

4) String类的常用方法


一、String的初始化

<span style="font-family:KaiTi_GB2312;font-size:14px;">//第1种方法
String str = "123";
//第2种方法
String str = new String(3);</span>

第1种方法存储在字符串池中。

第2种方法实例化了一个String类对象,此对象在存储在栈空间,栈空间存放了指向实例的堆空间地址。


二、String的运算

<span style="font-family:KaiTi_GB2312;font-size:14px;">package com.test.string;

public class TestString {

	public static void main(String[] args) {
		String str = "123";
		System.out.println(str + 4);           //1234
		System.out.println(str + 4 + 5);       //12345
		System.out.println(4 + str + 5);       //41235
		System.out.println(4 + 5 + str);       //9123
	}
	
}
</span>


三、String的格式化format

<span style="font-family:KaiTi_GB2312;font-size:14px;">int age = 10;
String str = String.format("%s今年%d岁", "小明", age); //str="小明今年10岁"</span>

稍微有些基础就能举一反三,下面就不给例子了。


转换符说明示例
%s字符串类型“hello”
%c 字符类型‘c’
%b布尔类型true
%d整数十进制99
%x整数十六进制0xFF
%o整数八进制77
%f浮点类型99.99
%%百分比类型
%n换行符



                               不同类型的转换符


我们一般是转换符和标志一起使用

标志说明示例结果
+为正数或负数加符号 ("%+d", 15)+15
-左对齐("%-5d", 15)|15   |
0数字前面补0("%04d", 15)0015
空格在整数之前添加指定数量的空格("% 4d", 15)|  15|
,以“,”对数字分组("%,f", 1234.56)1,234.560000
(使用“(”包含负数("%(d", -99)(99)
#如果是浮点添加小数
如果是16进制添加0x
如果是8进制添加0
("%#f", 99)
("%#x", 12)
("%#o", 10)
99.000000
0x0C
012
<格式化前一个转换符所描述的参数("%f和%<3.2f", 99.123)99.123000和99.12
$被格式化的参数索引("%1$d,%2$s", 99, "abc")99,abc




                                    搭配转换符的标志


四、String类的常用方法

字符串序列从0到length()-1

1)  char charAt(int index):  返回字符串index处的字符

<span style="font-family:KaiTi_GB2312;font-size:14px;">String str = "abcdedf";
System.out.println(str.charAt(1)); //b</span>

2)  int compareTo(String anotherString): 

     两字符串进行比较,相等时返回0,遇到第一个不相等字符时返回它们的字符差,若两者元素一样但是长度不等则返回两者长度差。

     总的来说,相等时返回0,anotherString大时返回负数,anotherString小时返回正数。

<span style="font-family:KaiTi_GB2312;font-size:14px;">String str1 = "abcdedf";
String str2 = "abcgggg";
System.out.println(str1.compareTo(str2));   //3
System.out.println(str2.compareTo(str1));   //-3
System.out.println("abc".compareTo("a"));   //2</span>


3)  String concat(String str):将该String对象和str连接在一起。


4)  boolean contentEquals(StringBuffer sb) :将String对象和StringBuffer对象进行比较


5)  static String copyValueOf(char[] data) ;

     static String copyValueOf(char[] data, int offset, int count) ;

     将char数组转换成String。


6)   boolean endsWith(String suffix); 此String对象是否以suffix结尾。 


7)   boolean equals(Object anObject); 当anObject不为空并且与当前String对象一样,返回true;否则,返回false


8)   byte[] getBytes(); 将此String对象转换成byte数组。 


9)    void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) :

      该方法将字符串拷贝到字符数组中。其中,srcBegin为拷贝的起始位置、srcEnd为拷贝的结束位置、字符串数值dst为目标字符数组、dstBegin为目标字符数组的拷贝起始位置。

<span style="font-family:KaiTi_GB2312;font-size:14px;">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); 
System.out.println( s1 );</span>


10)    int indexOf(int ch) :只找第一个匹配字符位置。
       int indexOf(int ch, int fromIndex) :从fromIndex开始找第一个匹配字符位置。
       int indexOf(String str) :只找第一个匹配字符串位置。

<span style="font-family:KaiTi_GB2312;font-size:14px;">String s = new String("write once, run anywhere!");
String ss = new String("run");
System.out.println("s.indexOf('r'): " + s.indexOf('r') );
System.out.println("s.indexOf('r',2): " + s.indexOf('r',2) );
System.out.println("s.indexOf(ss): " + s.indexOf(ss) );</span>
结果为:s.indexOf('r'): 1
       s.indexOf('r',2): 12
        s.indexOf(ss): 12


11)  int lastIndexOf(int ch)
       int lastIndexOf(int ch, int fromIndex)
       int lastIndexOf(String str)
       int lastIndexOf(String str, int fromIndex) 

      以上四个方法与10类似,不同的是:找最后一个匹配的内容。

<span style="font-family:KaiTi_GB2312;font-size:14px;">public class CompareToDemo {
      public static void main (String[] args) {
           String s1 = new String("acbdebfg");
           System.out.println(s1.lastIndexOf((int)'b',7)); //5</span>
<span style="font-family:KaiTi_GB2312;font-size:14px;">      }</span>
<span style="font-family:KaiTi_GB2312;font-size:14px;">}</span>


12) int length() :返回当前字符串长度


13) String replace(char oldChar, char newChar) :将字符号串中oldChar替换成newChar


14) boolean startsWith(String prefix) :该String对象是否以prefix开始

      boolean startsWith(String prefix, int toffset) :该String对象从toffset位置算起,是否以prefix开始


15) String substring(int beginIndex) 取从beginIndex位置开始到结束的子字符串

      String substring(int beginIndex, int endIndex) :取从beginIndex位置开始到endIndex位置的子字符串,包括beginIndex位置字符 不包括endIndex位置字符

<span style="font-family:KaiTi_GB2312;font-size:14px;">package com.test.string;

public class TestString {

	public static void main(String[] args) {
		String s1 = "Hello";
		System.out.println(s1.substring(2));   //llo
		System.out.println(s1.substring(3,4)); //l
	}
	
}
</span>

16) char[ ] toCharArray() :将该String对象转换成char数组


17) String toLowerCase() :将字符串转换成小写

     String toUpperCase() :将字符串转换成大写。


18)   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字符型。这些都是类方法。




















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值