Day14_String概述

String概述

  • 字符串是常量,创建之后不可改变。
  • 字符串字面值存储在字符串池中,可以共享。
  • String s = "Hello";产生一个对象,字符串池中存储。
package com.oop.Demo11;

public class Demo03 {
    public static void main(String[] args) {
        String name="name";//"hello"常量存储在字符串池中
        name = "zhangsan";//"zhangsan"赋值给name变量,给字符串赋值时,并没有修改数据,而是重新开辟了一个zhangsan
        String name2 ="zhangsan";//将常量池中的zhangsan的地址赋值给name2
        //System.out.println (name==name2);//true

        //演示字符串的另一种创建方式
        String str =new String("java");
        String str2 = new String ("java");//在堆和常量池分别创建对象java,str2指向堆中的地址,堆指向常量池中的数据"java",运行时两个java合并
        System.out.println (str==str2);//false此时比较的是str与str2所存的地址
        System.out.println (str.equals (str2));//true       equals比较的数据
    }
}

常用方法

  • public int length():返回字符串的长度。

  • public char charAt(int index):根据下标获取字符。

  • public boolean contains(String str):判断当前字符串中是否包含str。

  • public char[] toCharArray() :将字符串转换成数组。

  • public int indexOf(String str):查找str首次出现的下标,存在,则返回该下标;不存在,则返回-1。

  • public int lastIndexOf(String str):查找字符串在当前字符串中最后一次出现的下标索引。

  • public String trim():去掉字符串前后的空格。

  • public String toUpperCase():将小写转成大写。

  • public boolean endWith(String str):判断字符串是否以str结尾。

  • public String replace(char oldChar, char newChar;将旧字符串替换成新字符串

  • public String[]l split(String str):根据str做拆分。

package com.oop.Demo11;

import java.util.Arrays;

public class Demo03 {
    public static void main(String[] args) {
        String name="name";//"hello"常量存储在字符串池中
        name = "zhangsan";//"zhangsan"赋值给name变量,给字符串赋值时,并没有修改数据,而是重新开辟了一个zhangsan
        String name2 ="zhangsan";//将常量池中的zhangsan的地址赋值给name2
        //System.out.println (name==name2);//true

        //演示字符串的另一种创建方式
        String str =new String("java");
        String str2 = new String ("java");//在堆和常量池分别创建对象java,str2指向堆中的地址,堆指向常量池中的数据"java",运行时两个java合并
        System.out.println (str==str2);//false此时比较的是str与str2所存的地址
        System.out.println (str.equals (str2));//true       equals比较的数据
        System.out.println ("-------------字符串方法的使用------------------");
        //字符串方法的使用
        //1、length();返回字符串的长度
        //2、charAt(int index);返回某个位置的字符;
        //3、contains(String str);判断是否包含某个字符
        String content= "java是使用最广泛的语言,java也是最多人使用的,java是目前世界上最好的语言";
        System.out.println (content.length ());
        System.out.println (content.charAt (content.length ()-1));
        //content.charAt (content.length ())不在数组范围内是会报IndexOutOfBoundsException异常,数组越界异常
        System.out.println (content.contains ("java"));//true   字符串包含java吗?true
        System.out.println (content.contains ("php"));//false
        System.out.println ("-------------字符串方法的使用------------------");
        //字符串方法的使用
        //4、toCharArray();返回字符串对应的数组
        //5、indexOf();返回字符串首次出现的位置
        //6、lastIndexOf();返回字符串最后一次出现的位置
        System.out.println (Arrays.toString (content.toCharArray ()));
        System.out.println (content.indexOf ("java"));
        System.out.println (content.indexOf ("java",4));
        System.out.println (content.lastIndexOf ("java"));
        //7、trim();去掉字符串前后的空格
        //8、toUpperCase();把小写转换成大写  toLowerCase();把大写转换成小写
        //9、endWith(str);判断是否以str结尾,startWith(str);判断是否以str开头
        String content2="   Hello  World    ";
        System.out.println (content2.trim ());
        System.out.println (content2.toUpperCase ());
        System.out.println (content2.toLowerCase ());
        String filename="hello.java";
        System.out.println (filename.endsWith (".java"));//true 判断filename字符串是否以.java结尾
        System.out.println (filename.startsWith ("h"));//true   判断filename字符串是否以h开头


        System.out.println ("-------------字符串方法的使用------------------");
        //10、replace(char old,char new);用新的字符或字符串替换旧的字符或字符串
        //11、split();对字符串进行拆分
        System.out.println (content.replace ("java","ahha"));
        String say="java is the best programing language, java java     ";
        String[] arr=say.split ("[ ,]+");
        System.out.println (arr.length);
        for (String string:arr) {
            System.out.println (string);
        }
        //补充两个方法equals、compareTo();比较大小
        System.out.println ("--------补充-------");
        String s1="hello";
        String s2="HELLO";
        System.out.println (s1.equalsIgnoreCase (s2));//忽略大小写的比较

        //compare比较两个字符在编码表中的位置
        String s3="abc";//a的字符97
        String s4="xyz";//x的字符120   如果第一个相等 比较第二对b、y
        System.out.println (s3.compareTo (s4));//-23        (97-120)

        String s5="abc";
        String s6="abcxyz";
        System.out.println (s5.compareTo (s6));//-3    比长度(3-6)
    }
}

案例演示

  • 需求
    • 已知String str = "this is a text" ;
    • 1.将str中的单词单独获取出来
    • 2.将str中的text替换为practice
    • 3.在text前面插入一个easy
    • 4.将每个单词的首字母改为大写

String型的方法

char charAt(int index)
返回索引index位置处的字符。与数组一样,索引也是从头开始依次0、1、2、3...

package com.oop.Demo11;

public class Demo04 {
    public static void main(String[] args) {
        /*
        - **已知String str = "this is a text" ;**
        - **1.将str中的单词单独获取出来**
        - **2.将str中的text替换为practice**
        - **3.在text前面插入一个easy**
        - **4.将每个单词的首字母改为大写
         */
        String str="this is a text";
        //1.将str中的单词单独获取出来
        String[] arr = str.split (" ");
        System.out.println ("------------1.将str中的单词单独获取出来---------------");
        for (String s:arr) {
            //每次循环取一个字符串出来赋值给s,直到arr数组长度-1结束
            System.out.println (s);
        }
        System.out.println ("------------2.将str中的text替换为practice---------------");
        String str2=str.replace ("text","practice");
        System.out.println (str2);
        System.out.println ("------------3.在text前面插入一个easy---------------");
        String str3= str.replace ("text","easy text");
        System.out.println (str3);
        System.out.println ("-------------4.将每个单词的首字母改为大写--------------");
        for (int i = 0; i < arr.length; i++) {
            /**java里面的for循环的格式:for(String s : arr)
             *其实本质上和for(int i=0;i<length;i++)没太大区别,但是for(String s : arr)中的arr一定是字符串数组,
             *每次循环取一个字符串出来赋值给s,直到arr数组长度-1结束。
             * 
             * char charAt(int index)
             * 返回索引index位置处的字符。与数组一样,索引也是从头开始依次0、1、2、3...
             */
            char first=arr[i].charAt (0);
            //把第一个字符转换成大写
            char upperfirst=Character.toUpperCase (first);

            String news=upperfirst+arr[i].substring (1);
            System.out.println (news);
        }
    }
}

原文地址:https://www.cnblogs.com/lemonlover/p/14060990.html