Java常用类:String类

字符串是常量,创建之后无法改变

字符串的字量值存储在字符串池中,可以共享,

String s = "Hello",创建一个对象,在字符串池中存储。

String s = new String("Hello")创建两个对象,堆和池里各存放一个。

原理如下图:

String类的常用方法:

  • public int length() :返回字符串的长度。
  • public char charAt(int index):根据下标获取字符串
  • public char[] toCharArray() :将字符串转换成数组。
  • public boolean contains (String str) :判断当前字符串中是否包含str。
  • public int index0f (String str) :查找str首次出现的下标,存在,则返回该下标;不存在,则返回-1。
  • public int lastIndex0f (String str) :查找字符串在当前字符串中最后一次出现的下标索引。
  • public String trim() :去掉字符串前后的空格。
  • public String toUpperCase () :将小写转成大写。
  • public boolean endWith (String str) :判断字符串是否以str结尾。
  • public String replace (char oldChar, char newChar); 将旧字符串替换成新字符串
  • public String[] split (String str) :根掂str做拆分。

直接看代码:

package com.classes.string;

import java.util.Arrays;

public class Demo01 {
    public static void main(String[] args) {
        String name = "hello";
        name = "zhangsan";
        String name1 = "zhangsan";
        String str1 = new String("java");
        String str2 = new String("java");
        System.out.println(str1==str2);
        System.out.println(str1.equals(str2));
//        字符串方法的使用
//        1.length()返回字符串的长度
//        2.charAt(int index)返回字符串某个位置的字符
//        3.contains()返回字符串是否包含某个子字符串
        System.out.println("--------------字符串的方法使用1-------------------------");
        String string = new String("Java是世界上最好的编程语言,Java真香");
        System.out.println(string.length());//空格也算一个长度
        System.out.println(string.charAt(0));
        System.out.println(string.charAt(string.length()-1));
        System.out.println(string.contains("Java"));
        System.out.println("--------------字符串的方法使用2-------------------------");
//        4.toCharArray返回字符串的数组类型
//        5.IndexOf,返回子字符串首次出现的位置
//        6.LastIndexOf,返回子字符串最后一次出现的位置
        System.out.println(Arrays.toString(string.toCharArray()));
        System.out.println(string.indexOf("Java"));
//        还可以多个参数fromIndex,表示从哪个位置开始找
        System.out.println(string.indexOf("Java",4));
        System.out.println(string.lastIndexOf("Java"));
        System.out.println("--------------字符串的方法使用3-------------------------");
//        7.trim()去掉字符串前后的空格
//        8.toUpperCase把小写变成大写 toLowCase 把大写变成小写
//        9.endWith(str)判断字符串是否以str结尾 startWith(str)判断字符串是否以str开头
        String string1 = "  Hello World!  ";
        System.out.println(string1.trim());
        System.out.println(string1.toUpperCase());
        System.out.println(string1.toLowerCase());
        String filename = "hello.java";
        System.out.println(filename.endsWith(".java"));
        System.out.println(filename.startsWith("hello"));
        System.out.println("--------------字符串的方法使用4-------------------------");
//        10.replace(char old,char new)用新的字符串替换旧的字符串
//        11.split();对字符串进行拆分
        System.out.println(string.replace("Java", "Php"));
        String string3 = "Java is the best programing   language,java nice";
        String[] arr = string3.split("[ ,]+");
        for (String string4 :arr) {
            System.out.println(string4);

        }
        System.out.println("--------------补充-------------------------");
//        补充两个方法equalsIgnoreCase、compareTo();比较大小
        String str3 = "hello world";
        String str4 = "HELLO WORLD";
        System.out.println(str3.equalsIgnoreCase(str4));//忽略大小写的比较
        String str5 = "abc";//a = 97
        String str6 = "xyz";//x = 120
        String str7 = "abcxyz";
        String str8 = "abc";
        System.out.println(str5.compareTo(str6));//比较首个字符
        System.out.println(str5.compareTo(str7));//比较字符串长度
        System.out.println(str5.compareTo(str8));//相等为0
    }
}

 字符串练习:

已知字符串String str = "this is a text";

1.将str中的单词单独获取出来

2.将str中的text替换成practice

3.在text前面加上easy

4.将每个单词首字母大写

package com.classes.string;

import java.util.Arrays;

public class Test {
    public static void main(String[] args) {
//        1.将字符串中的单词分别提取出来
        String str = "this is a text";
        String[] arr = str.split(" ");
        for (String string:arr) {
            System.out.println(string);
        }
//        2.将text替换成practice
        System.out.println(str.replace("text","practice"));
//        3.在text前加上easy
        System.out.println(str.replace("text", "easy text"));
//        4.将每个首字母变成大写
        for (int i = 0; i <arr.length ; i++) {
//            获取到首字母
            char first = arr[i].charAt(0);
//            将首字母转成大写
            char upperFirst = Character.toUpperCase(first);
//            拼接,substring(1)是从第1个字符进行截取
             String string = upperFirst+arr[i].substring(1);
            System.out.print(string+" ");
        }
    }
}

运行结果:

 StringBuffer和StringBulider:

StringBuffer: 可变长字符串,JDK1. 0提供,运行效率慢、线程安全。(适合多线程)
StringBuilder:可变长字符串,JDK5. 0提供,运行效率快、线程不安全。(适合单线程)

但都比String类效率高。

具体用法:

package com.classes.string;
/*
StringBuffer和StringBuilder的使用
*/

public class Demo02 {
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer();
//      1.append 追加
        sb.append("Java是世界上最好的编程语言");
        System.out.println(sb.toString());
        sb.append(",Java真香");
        System.out.println(sb.toString());
//      2.insert 插入
        sb.insert(0,"我在最前面");
        System.out.println(sb.toString());
//      3.replace 替换
        sb.replace(0,5,"java");
        System.out.println(sb.toString());
//      4.delete 删除
        sb.delete(0,5);
        System.out.println(sb.toString());
//       StringBuffer和StringBuilder一样,一个适合单线程,一个适合多线程
    }
}

运行结果:

 StringBuffer和StringBulider用法一样。

验证它们两效率是否比String高:

package com.classes.string;
//  验证StringBuffer的速度
public class Demo03 {
    public static void main(String[] args) {
//        开始时间
        long start = System.currentTimeMillis();
//        String str ="";
//        for (int i = 0; i <9999 ; i++) {
//            str+=i;
//        }
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i <9999 ; i++) {
            sb.append(i);
        }
        System.out.println(sb.toString());
        long end = System.currentTimeMillis();
        System.out.println("用时:"+(end-start));
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芝麻干

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值