String类

String类

  1. 字符串是常量,创建之后不可改变。
  2. 字符串字面值存储在字符串池中,可以共享。
  3. String s = “hello”;产生一个对象,字符串池中存储
  4. String s = new String(“hello”);产生两个对象,堆、池各存储一个
    在这里插入图片描述
public class Demo01 {
    public static void main(String[] args) {
        String name = "hello";//"hello"常量存储在字符串池中
        name = "张三";//"张三"赋值给name,给字符串赋值时,并没有修改数据,而是重新开辟一块空间。
        String name2 = "张三";//name2指向字符串常量池中的张三,实现字符串共享

        //演示字符串中的另一种创建方式
        String str1 = new String("java");
        String str2 = new String("java");
        System.out.println(str1==str2);
        System.out.println(str1.equals(str2));

    }
}

常用方法

  1. public int length():返回字符串长度。
  2. public char charAt(int index):根据下标获取字符。
  3. public boolean contains(String str):判断当前字符串中是否包含str。
  4. public char[] toCharArray():将字符串转换成数组。
  5. public int indexOf(String str):查找str首次出现的下标,存在,则返回该下标;不存在,则返回-1.
  6. public int lastIndexOf(String str):查找字符串在当前字符串中最后一次出现的下标索引。
  7. public String trim():去掉字符串前后的空格
  8. public String toUpperCase():将小写转换成大写。
  9. public Boolean endsWith(String str):判断字符串是否以str结尾。
  10. public String replace(char oldChar,char newChar);将旧字符串替换成新字符串。
  11. public String split(String str);根据str做拆分
public class Demo01 {
    public static void main(String[] args) {
        String name = "hello";//"hello"常量存储在字符串池中
        name = "张三";//"张三"赋值给name,给字符串赋值时,并没有修改数据,而是重新开辟一块空间。
        String name2 = "张三";//name2指向字符串常量池中的张三,实现字符串共享

        //演示字符串中的另一种创建方式
        String str1 = new String("java");
        String str2 = new String("java");
        System.out.println(str1==str2);
        System.out.println(str1.equals(str2));
        System.out.println("=================");
        //字符串方法的使用
        //length();返回字符串的长度
        //charAT(int index);返回某个位置的字符
        //contains(String str);判断是否包含某个子字符串
        String content = "java是世界上最好的编程语言,java真香" ;
        System.out.println(content.length());
        System.out.println(content.charAt(content.length()-1));
        System.out.println(content.contains("java"));
        System.out.println(content.contains("php" ));
        System.out.println("=========================================");
        //字符串方法的使用
        //toCharArray();返回字符串对应的数组
        //indexOf();返回子字符串首次出现的位置
        //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"));
        System.out.println("=========================================");
        //去掉字符串前后的空格
        //trim();去掉字符串前后的空格
        //toUppercase();把小写转换成大写toLowerCase();把大写转换成小写
        //endWith(str);判断是否以str结尾,startWith();判断是否以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"));
        System.out.println(filename.startsWith("hello"));
        System.out.println("=========================================");
        //replace(char old,char new);用新的字符或字符串替换旧的字符或者字符串
        //split();对字符串进行拆分
        System.out.println(content.replace("java","php"));

        String say = "java is the best      programming language,,,java xiang" ;
        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));
        //前一个字符串不完全相同,从首个不同的开始比较,ASCII码值相减
        String s3 = "abc";
        String s4 = "ayzawe";
        System.out.println(s3.compareTo(s4));
        //前一个字符串和后一个全部重合,比较字符串肠毒药,用字符串长度进行相减
        String s5 = "abc";
        String s6 = "abcasd";
        System.out.println(s5.compareTo(s6));
    }
}

案例演示

  • 需求:
    • 已知String str= “this is a text”;
    • 1.将str中的单词单独获取出来
    • 将str中的text替换为practice
    • 在text前面插入一个easy
    • 将每个单词的首字母改为大写
String str = "this is a text";
String[] arr = str.split(" ");
	for(int i=0;i<arr.length;i++){
        char first = arr[i].charAt(0);
        //把第一个字符转换成大写
        char upperfirst = Character.toUpperCase(first);
        String news = upperfirst + arr[i].substring(1);//subString为截取字符串操作
        System.out.println(news);        
    }

可变字符串

  1. StringBuffer:可变长字符串,JDK1.0提供,运行效率慢,线程安全
  2. StringBuilder:可变长字符串,JDK5.0提供,运行效率快、线程不安全
public class Demo02 {
    public static void main(String[] args) {

        //StringBuffer sb = new StringBuffer();
        StringBuilder sb = new StringBuilder();
        //append();追加
        sb.append("java世界第一");
        System.out.println(sb);
        sb.append("java真香");
        System.out.println(sb);
        //insert();添加
        sb.insert(0,"我在最前");
        System.out.println(sb);
        //replace();替换
        sb.replace(0,4,"hello");
        System.out.println(sb);
        //delete();删除
        sb.delete(0,5);//区间左闭右开
        System.out.println(sb);
        //清空
        sb.delete(0,sb.length());
        System.out.println(sb.length());

    }
}
  • 和String区别
    (1)效率比String高
    (2)比String节省内存
public class Demo03 {
    public static void main(String[] args) {
        //开始时间
        long start = System.currentTimeMillis();
/*        String string ="";
        for(int i=0;i<99999;i++){
            string +=i;
        }*/
        StringBuilder sb = new StringBuilder();
        for(int i = 0;i<99999;i++){
            sb.append(i);
        }
        System.out.println(sb);
        //结束时间
        long end = System.currentTimeMillis();
        System.out.println("用时:"+(end-start));
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值