java 基础学习-03 api 中String类的学习

1、String对象的初始化 及两种初始化的区别

由于String对象特别常用,所以在对String对象进行初始化时,Java提供了一种简化的特殊语法,格式如下: 

	<span style="white-space:pre">		</span>String s = “qwer”;
                            s = “Java语言”;
                //   其实按照面向对象的标准语法,其格式应该为:
                            String s = new String(“abc”);
                            s = new String(“Java语言”);

只是按照面向对象的标准语法,在内存使用上存在比较大的浪费。例如String s = new String(“abc”);实际上创建了两个String对象,一个是”abc”对象,存储在常量空间中,一个是使用new关键字为对象s申请的空间。

这里就存在了初始化的区别

 

2.获取字符串信息

 String s = “qwer”;

a) 字符串包含的字符数,也就是字符串的长度。

Int length();

例如 system.out.println(s.length()); //输出结果为4

b) 根据位置获取位置上的字符

char charAt(int intdex);

system.out.println(s.charAt(2));//输出结果为e  intdex为下标 从0开始

c) 根据字符获取位置

当索引值不存在是 返回值是-1

Int indexof(int ch);返回ch字符串第一次出现的位置 输入的值是ascall麻值

Int indexof(int ch,int formindex);返回ch字符串从fromindex位置开始出现的位置

Int indexof(String str);返回str字符串第一次出现的位置

Int indexof(String str,int formindex);返回str字符串从fromindex位置开始出现的位置

d) 下列四个方法与上面类似,不同的是下面的方法是找最后一个匹配的内容或者说是从后面开始找

 int lastIndexOf(int ch)

int lastIndexOf(int ch, int fromIndex)

 int lastIndexOf(String str)

 int lastIndexOf(String str, int fromIndex) 

<span style="white-space:pre">			</span>String s="qwerrabcdetutyyu";
<span style="white-space:pre">			</span>System.out.println(s.indexOf(97));
<span style="white-space:pre">			</span>System.out.println(s.indexOf('97', 1));
<span style="white-space:pre">			</span>System.out.println(s.indexOf("rr"));
<span style="white-space:pre">			</span>System.out.println(s.indexOf("rr", 1));
<span style="white-space:pre">			</span>System.out.println(s.indexOf("u"));
<span style="white-space:pre">			</span>System.out.println(s.lastIndexOf("u"));
<span style="white-space:pre">			</span>//输出结果分别是5,5,3,3,11,15


 

3.字符串的判断

a) 判断字符串中是否包含某一个字串 indexOf方法也可用于判断 因为不存在时的返回值为-1

boolean  contains(str); 

b) 判断字符串是否含有内容

boolean isempty();原理是判断字符串长度是否为空返回为false  不为空 返回true

c) 判断字符串是否以指定内容开头

boolean startswithstr

d) 判断字符串是否以指定内容结尾

boolean endswith(str );

e) 判断字符串是否相同

boolean equalsstr);此方法复写了object中的方法 object中的方法 比较的是地址,而此方法比较的是 字符串是否相同 

f) 判断字符串是否相同 并忽略大小写

boolean equalsIgnoeCase (); 此方法可用来验证码的验证 

4.字符串的转换

a) 字符数组转换成字符串

  1.构造函数的转换  直接new Stringchar []

String (char[],offset,count)字符数组中一部分转换成字符串

2.静态方法    valueOf(char[] data) 

  static String copyValueOf(char[] data) 
  static String copyValueOf(char[] data, int offset, int count) :这两个方法char数组转换成String,与其中一个构造函数类似。

<span style="white-space:pre">	</span>byte[] b = {'a','b','c','d','e','f','g','h','i','j'};
        char[] c = {'0','1','2','3','4','5','6','7','8','9'};
        String sb = new String(b);                 //abcdefghij
        String sb_sub = new String(b,3,2);     //de

        String sc = new String(c);                  //0123456789
        String sc_sub = new String(c,3,2);    //34
        String sb_copy = new String(sb);       //abcdefghij  
        System.out.println("sb:"+sb);
        System.out.println("sb_sub:"+sb_sub);
        System.out.println("sc:"+sc);
        System.out.println("sc_sub:"+sc_sub);
        System.out.println("sb_copy:"+sb_copy);
          // 输出结果:sb:abcdefghij
          //             sb_sub:de
          //               sc:0123456789
          //                sc_sub:34
          //              sb_copy:abcdefghij


void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) :该方法将字符串拷贝到字符数组中。其中,srcBegin为拷贝的起始位置、srcEnd为拷贝的结束位置、字符串数值dst为目标字符数组、dstBegin为目标字符数组的拷贝起始位置。
      

	<span style="white-space:pre">						</span>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 );//<span style="font-family: 宋体;">结果为:</span><span style="font-family: 'Times New Roman';">I love you!</span>

           

 

b) 字符串转换成字符数组

Char tochararray();

c) 字节数组转换成字符串

    String(byte[ ] bytes)通过byte数组构造字符串对象
String(byte[ ] bytesint offsetint count)

d) 字符串装换成字节数组

byte[] getBytes() 将该String对象转换成byte数组

		<span style="white-space:pre">		</span>String s = “计算机”;
        			 byte[] b = s.getBytes();   //使用本机默认的字符串转换为byte数组
        			 byte[] b = s.getBytes(“gb2312”); //使用gb2312字符集转换为byte数组
                            在实际转换时,一定要注意字符集的问题,否则中文在转换时将会出现问题。
 


 

e) 将基本类型数据转换成字符串

  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)

 

5.替换

该方法的作用是替换字符串中所有指定的字符,然后生成一个新的字符串。经过该方法调用以后,原来的字符串不发生改变。例如:

   <span style="white-space:pre">				</span>String s = “abcat”;
       			  String s1 = s.replace(‘a’,’1’);

该代码的作用是将字符串s中所有的字符a替换成字符1,生成的新字符串s1的值是”1bc1t”,而字符串s的内容不发生改变。

如果需要将字符串中某个指定的字符串替换为其它字符串,则可以使用replaceAll方法,例如:

	  <span style="white-space:pre">			</span> String s = “abatbac”;
     			    String s1 = s.replaceAll(“ba”,”12”);

该代码的作用是将字符串s中所有的字符串”ab”替换为”12”,生成新的字符串”a12t12c”,而字符串s的内容也不发生改变。

如果只需要替换第一个出现的指定字符串时,可以使用replaceFirst方法,例如:

 <span style="white-space:pre">			</span>String s = “abatbac”;
       			String s1 = s. replaceFirst (“ba”,”12”);

该代码的作用是只将字符串s中第一次出现的字符串”ab”替换为字符串”12”,则字符串s1的值是”a12tbac”,字符串s的内容也不发生改变。

6.切割

public String[] split(String regex)
将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组

public class SplitDemo{
     public static void main (String[] args) {

             String date = "2008/09/10";
            String[ ] dateAfterSplit= new String[3];
            dateAfterSplit=date.split("/");         //以“/”作为分隔符来分割date字符串,并把结果放入3个字符串中。

            for(int i=0;i<dateAfterSplit.length;i++)
                       System.out.print(dateAfterSplit[i]+" ");
      }
}

运行结果:2008 09 10          //结果为分割后的3个字符串

 

7.字串

该方法的作用是取字符串中的“子串”,所谓“子串”即字符串中的一部分。例如“23”是字符串“123”的子串。

字符串“123”的子串一共有6个:”1”、”2”、”3”、”12”、”23”、”123”。而”32”不是字符串”123”的子串。

         String s = “Test”;
         String s1 = s.substring(2);//指从<span style="font-family: Arial, Helvetica, sans-serif;">索引值为2(包括)以后的所有字符作为子串</span>

        //输出结果为  <span style="font-family: Arial, Helvetica, sans-serif;">st</span>
<span style="white-space:pre">	</span>//则该代码的作用是取字符串s中,则字符串s1的值是””。
<span style="white-space:pre">	</span>如果数字的值和字符串的长度相同,则返回空字符串。例如:
         String s = “Test”;
         String s1 = s.substring(4);
      //则字符串s1的值是””。
         String s = “TestString”;
         String s1 = s.substring(2,5);//<span style="font-family: Arial, Helvetica, sans-serif;">从索引值2(包括)开始,到索引值5(不包括)的部分作为子串</span>
<span style="white-space:pre">	</span>//输出结果是  <span style="font-family: Arial, Helvetica, sans-serif;">stS</span>

<span style="white-space:pre">		</span>//下面是一个简单的应用代码,该代码的作用是输出任意一个字符串的所有子串。代码如下:
                                     String s = “子串示例”;
                                     int len = s.length(); //获得字符串长度
                                     for(int begin = 0;begin < len – 1;begin++){ //起始索引值
                                               for(int end = begin + 1;end <= len;end++){ //结束索引值
                                                        System.out.println(s.substring(begin,end));
                                               }
                                     }
/*在该代码中,循环变量begin代表需要获得的子串的起始索引值,其变化的区间从第一个字符的索引值0到倒数第二个字符串的索引值len -2,而end代表需要获得的子串的结束索引值,其变化的区间从起始索引值的后续一个到字符串长度。通过循环的嵌套,可以遍历字符串中的所有子串。*/

8.转换 去除两端空格  比较

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

public String trim()返回该字符串去掉开头和结尾空格后的字符串

  int compareTo(String anotherString) 当前String对象与anotherString比较相等关系返回0不相等时,从两个字符串第0个字符开始比较,返回第一个不相等的字符差,另一种情况,较长字符串的前面部分恰巧是较短的字符串,返回它们的长度差。
int compareTo(Object o) :如果oString对象,和2的功能一样;否则抛出ClassCastException异常。

 <span style="white-space:pre">		</span>String s1 = new String("abcdefghijklmn");
            String s2 = new String("abcdefghij");
            String s3 = new String("abcdefghijalmn");
           System.out.println("s1.compareTo(s2): " + s1.compareTo(s2) ); //返回长度差
           System.out.println("s1.compareTo(s3): " + s1.compareTo(s3) ); //返回'k'-'a'的差
         //  结果为:s1.compareTo(s2): 4
            //           s1.compareTo(s3): 10



9.连接

concat方法

该方法的作用是进行字符串的连接,将两个字符串连接以后形成一个新的字符串。例如:

                             

     <span style="white-space:pre">				</span>   String s = “abc”;
                                     String s1 = “def”;
                                     String s2 = s.concat(s1);
//则连接以后生成的新字符串s2的值是”abcdef”,而字符串s和s1的值不发生改变。如果需要连接多个字符串,可以使用如下方法:
                                     String s = “abc”;
                                     String s1 = “def”;
                                     String s2 = “1234”;
         String s3 = s.concat(s1).concat(s2);
//则生成的新字符串s3的值为”abcdef1234”。
//其实在实际使用时,语法上提供了一种更简单的形式,就是使用“+”进行字符串的连接。例如:
         String s = “abc” + “1234”;


而且使用“+”进行连接,不仅可以连接字符串,也可以连接其他类型。但是要求进行连接时至少有一个参与连接的内容是字符串类型。而且“+”匹配的顺序是从左向右,如果两边连接的内容都是基本数字类型则按照加法运算,如果参与连接的内容有一个是字符串才按照字符串进行连接。


         int a = 10;
         String s = “123” + a + 5;
<span style="white-space:pre">	</span>//则连接以后字符串s的值是“123105”,计算的过程为首先连接字符串”123”和变量a的值,生成字符串”12310”,然后使用该字符串再和数字5进行连接生成最终的结果。
而如下代码:
         int a = 10;
         String s = a + 5 + “123”;
则连接以后字符串s的值是”15123”,计算的过程为首先计算a和数字5,由于都是数字型则进行加法运算或者数字值15,然后再使用数字值15和字符串”123”进行连接获得最终的结果。
而下面的连接代码是错误的:
         int a = 12;
         String s = a + 5 + ‘s’;
因为参与连接的没有一个字符串,则计算出来的结果是数字值,在赋值时无法将一个数字值赋值给字符串s。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值