理解JAVA中的String类

String类位于 java.lang包中,被final修饰,没有子类

String 是用来放置字符串的,我们通常会这样定义:

        String s="Hello";

这样定义的字符串位于方法区的字符串常量池中,方便下次使用

一、获取字符串的两种方式:【面试】

(1) String str1="hello";

直接通过""获取字符串的形式,在串池中查看是否存在该字符串对象,如果串池中有,则直接使用; 如果串池中没有,则需要在串池中创建对应的字符串对象,串池中字符串用于共享

(2) String str2=new String("world");

通过创建对象形式获取字符串对象,首先在堆空间中完成一个字符串对象的创建,然后再区串池中查看是否存在该 字符串对象,存在-无需创建,不存在-需要在串池完成字符串创建,此获取字符串对象的方式产生1~2个字符串对象

二、String类中常见方法:

        引入:被""引起来一个或是多个字符被称为字符串 字符串底层本质为 char类型数组,字符串的长度等价于底层数组的长度,获取方式:str.length();(方法); 字符串的下标等价于数组,从0开始,最大下标为:长度-1

(1) int length():

获取字符串的长度 【面试常用】

注意:数组获取长度,利用 数组名.length 字符串获取长度,利用 str.length();

(2) char charAt(int index):

根据下标获取对应的字符 【面试常用】

注意:如果指定的下标超过字符串的下标范围,则运行报错,错误信息为: java.lang.StringIndexOutOfBoundsException(字符串下标越界)

String str = "hello"; char c = str.charAt(2);

应用:遍历字符串(获取字符串中每个字符)
        String str = "hello";
        for(int i=0;i<str.length();i++){
             char c = str.charAt(i);
             // 通过 c 操作每个字符
        }

(3) boolean equals(String str):

比较两个字符串内容是否相等,相等-true,不相等-false

boolean equalsIgnoreCase(String str):

比较字符串内容是否相等,忽略大小写 注意:验证码通常忽略大小写

(4) boolean contains(String str):

判断str在当前字符串中是否包含,包含-true;不包含-false

(5) String toUpperCase():

将字符串中小写字母转换为大写字母 【了解】

String toLowerCase():将字符串中大写转换为小写字母

(6) boolean endsWith(String str):

判断当前字符串是否以str结尾,是-true;不是-false 【了解】

boolean startsWith(String str):判断当前字符串是否以str开头,是-true,不是-false

(7) int indexOf(String s):

如果s在当前字符串中存在,则返回s字符串在当前字符串第一个字符出现下标,如果s在当前字符串 中不存在,则返回-1 【了解-面试编程中涉及】

(8) String trim():将字符串中前后空格去除 【了解】 String str = " hel lo "; System.out.println(str.trim()); // hel lo

实际应用场景:
   String strAge = "18 ";
   // String-> int
   int age = Integer.parseInt(strAge.trim());
   System.out.println(age);

(9) String[] split(String s):

将当前字符串以s进行拆分,拆分之后的结果存储在 String数组中【了解-面试涉及】

String str4 = "hello-java-aa";

String[] ss= str4.split("-");

for(int i=0;i<ss.length;i++){

        System.out.println(ss[i]);

}

三、String的不可变性 【理解-面试】


(1) String字符串为字面值常量,一旦创建不能更改,如果完成String字符串的拼接,先拷贝一个副文本,在副文本的基础上完成字符串拼接

(2) String字符串拼接效率比较低

四、可变长的字符串 【需要大量字符串拼接时应用】

(1) 常用可变长字符串位于java.lang包中:

        a. StringBuffer:jdk1.0版本,线程安全,并发效率低

        b. StringBuilder: jdk5.0版本,线程不安全,并发效率高

(2) 常见的构造方法:

StringBuilder sb = new StringBuilder();// 无参数

StringBuilder sb = new StringBuilder(“hello”);// 有参数

(3) 常见的方法:

         sb.append("字符串"); 拼接字符串

(4) 应用:StringBuffer/StringBuilder为可变长的字符串,所以拼接字符串时效率相对高,如果出现大量字符串拼接,优先考虑 StringBuffer/StringBuilder,而不采用String拼接

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值