String

  • string字符串 在java.lang包下
    String代表是一个字符串,用双引号括起来就是代表一个字符串对象,字符串的值是创建赋值后不能更改的,
    字符串的底层是字节数组byte[] 效果是相当于是char[] 数组
    字符串的构造方法有:
    String() 创建空白字符串
    String(char[]) 根据字符数组来创建
    String(byte[]) 根据字节数组来创建
    String str = “abc” 直接赋值方式创建对象,
    String对象特点是
    通过new关键字来创建字符串对象,每一次new都是会申请一个内存空间,即使内容是相同的但是内存地址是不同的,
    在这里插入图片描述
    用""双引号创建的字符串对象,只要是字符序列相同,都是同一个String对象 存在字符串池中,也就是说本质上是一个对象,
    在这里插入图片描述
    在这里插入图片描述
    字符串的比较
    使用==做比较时 如果是基本数据类型则比较的内容,如果是引用类型则比较的内存地址值,String是对象啊,所以比较的是…
    字符串是对象,他比较内容可以通过一个方法equals()方法来比较,
    遍历字符串 要获取到每一个字符,字符串也有下标,从零开始,使用charAt(index)返回索引处的值,
    获取字符串的长度是length()方法
    在这里插入图片描述
    Sting中的方法 equals()比较内容,charAt(int index)返回指定索引位置的数值 length返回字符串长度,
    StringBuilder可变字符序列,即使内容相同对象也是不同的,注意拼接StringBuilder时就会创建每个字符串都是一个对象,因为他的内容是可变的,为什么是可变呢因为他会存储在多个对象中啊
    构造方法String builder() String builder(Str)
    append()方法是在一个对象中添加数据返回结果是之前的对象,不会在创建新对象,
    在这里插入图片描述
    reverse()返回相反的字符序列
    在这里插入图片描述
    String与StringBuilder相互转化
    1通过toString()方法来实现将StringBuilder转化为String
    2通过StringBuilder(String str) 构造方法来将字符串变量转化成StringBuilder

总结一下
String类是不可变字符序列,StringBuilder类和StringBuffer是可变字符序列
String类的底层是final char value[] 指明了内容一旦赋值就不会改变
在这里插入图片描述
发现String类中的方法都是返回一个新的对象。
有方法concat()追加 substring()截取,trim()去掉空格,length() charAt() length()equals()
StringBuilder和StringBuffer
底层也是一个char value[] 没有filal修饰可以随时修改,
区别是:Builder是线程不安全,效率高 Buffer是效率低, 安全
append()追加数据
delete(int start,int end)删除指定范围字符,返回仍是一个对象,
insert(int index,String str)在指定位置添加一个字符
reverse() 返回相反字符

  • 面试题
    java中有哪些类可以操作字符串,特点和使用时注意什么?
    string 类 stringbuffer类 string builder类
    1.不可变对象 string类 可变 string buffer string builder
    2.线程安全 string string buffer 不安全 string builder
    3.同步锁 string buffer 没有锁 string builder
    4.多线程就用 string buffer 单线程用string builder
    5 string 用 + 其他用 append方法追加
  • 字符串的比较排序compareto方法
public class StringSort {
    public static void main(String[] args) {
        /** String类中的compareTo方法用于两种方式进行比较,1.字符串和对象进行比较,2.按字典顺序比较两个字符串,
         * 返回的int类型,参数类型可以是对象或是字符串,
         * 返回值是一个整数,按照ASCll码顺序来比较大小,如果第一个字符和参数的第一个字符不等,结束比较,
         * 返回长度差值,如果第一个字符和第一个相等,那么就是第二个对应第二个来比较,依次类推,退出结果值
         */
        System.out.println("a".compareTo("b")); //-1 小 大 负数差值
        System.out.println("a".compareTo("a")); //0  1=1 返回0
        System.out.println("c".compareTo("a")); //1  大 小 正值差值
    }
}
  • api
public static void main(String[] args) throws UnsupportedEncodingException {
        String demo = "abcdefg";
        System.out.println(demo.charAt(0)); //返回指定索引处的值
        System.out.println(demo.codePointAt(2)); //返回对应的Unicode代码
        String demo1 = "123456";
        System.out.println(demo.concat(demo1));//将指定的字符串连接到该字符串的末尾
        System.out.println(demo.contains("abc"));
        System.out.println(demo.contains("123"));//判断是否包含,包含返回true
        System.out.println(demo1.endsWith("6"));//判断是否以指定字符结尾的
        System.out.println(demo.hashCode()); //返回字符串的哈希值
        System.out.println(demo.isEmpty());//判断长度是否为零 0=true
        System.out.println(demo.join(demo1));
        System.out.println(demo.replace("a","A"));//替换 oldstr newstr
        System.out.println(demo.startsWith("a"));//判断是否以指定字符开头
        System.out.println(demo.trim());//删除前头和后尾的空格
        System.out.println(demo.substring(1,2));//截取字符串包头不包尾
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值