大孟的博客

一枚奋斗的小菜鸟

String类——获取功能、转换功能、替换功能、比较功能、删除两端空格功能

String类——String的获取功能、获取功能的举例子、String的转换功能、转换功能的举例子、字符串的替换功能、删除字符串两端空格功能、字符串的比较功能、举例


1、String的获取功能:

(1)int length()

        获取字符串的长度,即字符串中字符的个数。

(2)char charAt(int index)

        获取指定索引位置上的字符。

(3)int indexOf(int ch)

        获取指定字符在此字符串中第一次出现的索引。注意:这里用的是int,不是char,原因是'a'和97都可以作为实参传入。

(4)int indexOf(String str)

        获取指定字符串在此字符串中第一次出现的索引。

(5)int indexOf(int ch,int fromIndex)

        获取指定字符在此字符串中指定位置后第一次出现的索引。

(6)int indexOf(String str,int fromIndex)

        获取指定字符串在此字符串中指定位置后第一次出现的索引。

(7)String substring(int start)

        从指定位置截取子字符串,默认是截取到末尾。(包含start位置)

(8)String substring(int start,int end)

        从指定位置开始到指定位置结束截取子字符串。(包start不包end)

2、获取功能的举例

package cn.itcast_06;

public class StringDemo {
	public static void main(String[] args) {
		// int length()
		// 获取字符串的长度,即字符串中字符的个数。
		String s="helloworld";
		System.out.println("length():"+s.length());//10
		System.out.println("--------------");
		
		// char charAt(int index)
		// 获取指定索引位置上的字符。
		System.out.println("charAt:"+s.charAt(0));//h
		System.out.println("charAt:"+s.charAt(9));//d
		System.out.println("--------------");
		
		// int indexOf(int ch)
		// 获取指定字符在此字符串中第一次出现的索引。注意:这里用的是int,不是char,
		// 原因是'a'和97都可以作为实参传入。
		System.out.println("indexOf:"+s.indexOf('h'));//0
		System.out.println("indexOf:"+s.indexOf('d'));//9
		System.out.println("--------------");
		
		// int indexOf(String str)
		// 获取指定字符串在此字符串中第一次出现的索引。
		System.out.println("indexOf:"+s.indexOf("owo"));//4
		System.out.println("indexOf:"+s.indexOf("ld"));//8
		System.out.println("--------------");
		
		// int indexOf(int ch,int fromIndex)
		// 获取指定字符在此字符串中指定位置后第一次出现的索引。
		// int indexOf(String str,int fromIndex)
		// 获取指定字符串在此字符串中指定位置后第一次出现的索引。
		System.out.println("indexOf:"+s.indexOf('l',4));//8
		System.out.println("indexOf:"+s.indexOf('l',40));//-1
		System.out.println("--------------");
		
		// String substring(int start)
		// 从指定位置截取子字符串,默认是截取到末尾。(包含start位置)
		System.out.println("substring:"+s.substring(4));//oworld
		System.out.println("substring:"+s.substring(0));//helloworld
		
		// String substring(int start,int end)
		// 从指定位置开始到指定位置结束截取子字符串。(包start不包end)
		System.out.println("substring:"+s.substring(4,8));//owor
		System.out.println("substring:"+s.substring(0,s.length()));//helloworld
		
	}
}

3、String的转换功能:

(1)byte[ ] getBytes( )

        把字符串转换为字节数组。

(2)char[ ] toCharArray( )

        把字符串转换为字符数组。

(3)static String valueOf(char[ ] chs)

        把字符数组转成字符串。

(4)static String valueOf(int i)

        把int类型的数据转成字符串。

         注意:String类的valueOf方法可以把任意类型的数据转成字符串。

(5)String toLowerCase( )

        把字符串转成小写。

(7)String toUpperCase( )

        把字符串转成大写。

(8)String concat(String str)

        把字符串拼接。用 + 也可以。

4、String的转换功能举例:

package cn.itcast_06;
public class StringDemo4 {
	public static void main(String[] args) {
		// 定义一个字符串对象
		String s = "JavaSE";

		// byte[] getBytes():把字符串转换为字节数组。
		byte[] bys = s.getBytes();
		for (int x = 0; x < bys.length; x++) {
			System.out.println(bys[x]);
		}
		System.out.println("----------------");

		// char[] toCharArray():把字符串转换为字符数组。
		char[] chs = s.toCharArray();
		for (int x = 0; x < chs.length; x++) {
			System.out.println(chs[x]);
		}
		System.out.println("----------------");

		// static String valueOf(char[] chs):把字符数组转成字符串。
		String ss = String.valueOf(chs);
		System.out.println(ss);
		System.out.println("----------------");

		// static String valueOf(int i):把int类型的数据转成字符串。
		int i = 100;
		String sss = String.valueOf(i);
		System.out.println(sss);
		System.out.println("----------------");

		// String toLowerCase():把字符串转成小写。
		System.out.println("toLowerCase:" + s.toLowerCase());
		System.out.println("s:" + s);
		System.out.println("----------------");
		
		// String toUpperCase():把字符串转成大写。
		System.out.println("toUpperCase:" + s.toUpperCase());
		System.out.println("s:" + s);
		System.out.println("----------------");

		// String concat(String str):把字符串拼接。
		String s1 = "JavaSE";
		String s2 = "JavaEE";
		String s3 = s1 + s2;
		String s4 = s1.concat(s2);
		System.out.println("s3:"+s3);
		System.out.println("s4:"+s4);
	}
}

5、String的其他功能:

(1)替换功能:

        String replace(char old,char new)

        String replace(String old,String new)

(2)去除字符串两端的空格   

        String trim()

(3)按字典顺序比较两个字符串 

        int compareTo(String str)

        int compareToIgnoreCase(String str)

6、String的其他功能举例:

package cn.itcast_06;

public class StringDemo6 {
	public static void main(String[] args) {
		// 替换功能
		String s1 = "helloworld";
		String s2 = s1.replace('l', 'k');
		String s3 = s1.replace("owo", "ak47");
		System.out.println("s1:" + s1);
		System.out.println("s2:" + s2);
		System.out.println("s3:" + s3);
		System.out.println("---------------");

		// 去除字符串两端的空格
		String s4 = " hello world  ";
		String s5 = s4.trim();
		System.out.println("s4:" + s4 + "---");
		System.out.println("s5:" + s5 + "---");

		// 按字典顺序比较两个字符串
		String s6 = "hello";
		String s7 = "hello";
		String s8 = "abc";
		String s9 = "xyz";
		System.out.println(s6.compareTo(s7));// 0
		System.out.println(s6.compareTo(s8));// 7
		System.out.println(s6.compareTo(s9));// -16
	}
}

7、String类的compareTo方法的源码解析

package cn.itcast_06;
/*
 * 如果我们看到问题了,看怎么办呢?
 * 看源码。
 */
public class StringTest {
	public static void main(String[] args) {
		String s1 = "hello";
		String s2 = "hel";
		System.out.println(s1.compareTo(s2)); // 2
	}
}
如果我们看到问题了,看怎么办呢? 看源码。
  private final char value[];
  
    底层自动实现:字符串会自动转换为一个字符数组。
  
  public int compareTo(String anotherString) {
  		//this -- s1 -- "hello"
  		//anotherString -- s2 -- "hel"
  
        int len1 = value.length; //this.value.length--s1.toCharArray().length--5
        int len2 = anotherString.value.length;//s2.value.length -- s2.toCharArray().length--3
        int lim = Math.min(len1, len2); //Math.min(5,3); -- lim=3;
        char v1[] = value; //s1.toCharArray()
        char v2[] = anotherString.value;
        
        //char v1[] = {'h','e','l','l','o'};
        //char v2[] = {'h','e','l'};

        int k = 0;
        while (k < lim) {
            char c1 = v1[k]; //c1='h','e','l'
            char c2 = v2[k]; //c2='h','e','l'
            if (c1 != c2) {
                return c1 - c2;
            }
            k++;
        }
        return len1 - len2; //5-3=2;
   }
   
   String s1 = "hello";
   String s2 = "hel";
   System.out.println(s1.compareTo(s2)); // 2


******************************************

8、String类的总结:

1:Scanner的使用(了解)
    (1)在JDK5以后出现的用于键盘录入数据的类。
    (2)构造方法:
        A:讲解了System.in这个东西。
            它其实是标准的输入流,对应于键盘录入
        B:构造方法
            InputStream is = System.in;
            
            Scanner(InputStream is)
        C:常用的格式
            Scanner sc = new Scanner(System.in);
    (3)基本方法格式:
        A:hasNextXxx() 判断是否是某种类型的
        B:nextXxx()    返回某种类型的元素
    (4)要掌握的两个方法
        A:public int nextInt()
        B:public String nextLine()
    (5)需要注意的小问题
        A:同一个Scanner对象,先获取数值,再获取字符串会出现一个小问题。
        B:解决方案:
            a:重新定义一个Scanner对象
            b:把所有的数据都用字符串获取,然后再进行相应的转换
            
2:String类的概述和使用(掌握)
    (1)多个字符组成的一串数据。
        其实它可以和字符数组进行相互转换。
    (2)构造方法:
        A:public String()
        B:public String(byte[] bytes)
        C:public String(byte[] bytes,int offset,int length)
        D:public String(char[] value)
        E:public String(char[] value,int offset,int count)
        F:public String(String original)
        下面的这一个虽然不是构造方法,但是结果也是一个字符串对象
        G:String s = "hello";
    (3)字符串的特点
        A:字符串一旦被赋值,就不能改变。
            注意:这里指的是字符串的内容不能改变,而不是引用不能改变。
        B:字面值作为字符串对象和通过构造方法创建对象的不同
            String s = new String("hello");和String s = "hello"的区别?
    (4)字符串的面试题(看程序写结果)
        A:==和equals()
            String s1 = new String("hello");
            String s2 = new String("hello");
            System.out.println(s1 == s2);// false
            System.out.println(s1.equals(s2));// true

            String s3 = new String("hello");
            String s4 = "hello";
            System.out.println(s3 == s4);// false
            System.out.println(s3.equals(s4));// true

            String s5 = "hello";
            String s6 = "hello";
            System.out.println(s5 == s6);// true
            System.out.println(s5.equals(s6));// true
        B:字符串的拼接
            String s1 = "hello";
            String s2 = "world";
            String s3 = "helloworld";
            System.out.println(s3 == s1 + s2);// false
            System.out.println(s3.equals((s1 + s2)));// true

            System.out.println(s3 == "hello" + "world");// false 这个我们错了,应该是true
            System.out.println(s3.equals("hello" + "world"));// true
    (5)字符串的功能(自己补齐方法中文意思)
        A:判断功能
            boolean equals(Object obj)
            boolean equalsIgnoreCase(String str)
            boolean contains(String str)
            boolean startsWith(String str)
            boolean endsWith(String str)
            boolean isEmpty()
        B:获取功能
            int length()
            char charAt(int index)
            int indexOf(int ch)
            int indexOf(String str)
            int indexOf(int ch,int fromIndex)
            int indexOf(String str,int fromIndex)
            String substring(int start)
            String substring(int start,int end)
        C:转换功能
            byte[] getBytes()
            char[] toCharArray()
            static String valueOf(char[] chs)
            static String valueOf(int i)
            String toLowerCase()
            String toUpperCase()
            String concat(String str)
        D:其他功能
            a:替换功能
                String replace(char old,char new)
                String replace(String old,String new)
            b:去空格功能
                String trim()
            c:按字典比较功能
                int compareTo(String str)
                int compareToIgnoreCase(String str)
    (6)字符串的案例
        A:模拟用户登录
        B:字符串遍历
        C:统计字符串中大写,小写及数字字符的个数
        D:把字符串的首字母转成大写,其他小写
        E:把int数组拼接成一个指定格式的字符串
        F:字符串反转
        G:统计大串中小串出现的次数





阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cmm0401/article/details/79969277
个人分类: Java语言基础
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

String类——获取功能、转换功能、替换功能、比较功能、删除两端空格功能

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭