java基础(三十二)String类

【概念】

字符串是一个特殊的对象
字符串一旦初始化就不可以被改变

String s="abc";

String s1="abc";

String s2=new String("abc");


此时  s==s1;  这个表达式是true  因为这两个指向的地址一样

s==s2,这个表达式是false,因为他们指向的地址一样

s="abc";是在字符串常量池中创建对象,如果常量池中已经存在字符串,那么就指向这个字符串
s2=new String("abc");是在堆内存中new了一个对象。

【equals】
String类中的equals复写类Object的equals比较的是内容。

【构造方法】

String s=new String();//等效于String s="";不等效Sting s=null;

String(byte[]bytes);//可以将一个数组变成字符串

new String(byte[] b, int n, int m)//可以将一个数组变成字符串,m,n截取b的长度,这个方法可以避免打印的时候出现乱码

如:byte []arr={65,66,67,68};
String s=new String(arr);
System.out.println("s="s1);
输出:s1=ABCD;它会自己去查ASCII码表

String(char[]value);

将一个字符数组变成一个字符串

String(char[]value,int offset,int count)
将字符数组的一部分转成字符串

char[]values={'a','b','c','d'}


String  s=new String(values,1,3);
输出 s=bcd;

【常用API】

1.获取


1.1获取字符串中字符的个数(长度)
int length();

1.2根据位置获取字符
char charAt(int index)


1.3根据字符或者字符串获取在字符串中第一次出现的位置,如果没找到会返回-1

int indexof(int ch)  //为什么参数是int呢?这个方法,传字符也可以,传字符编码也可以

int indexof(int ch,int fromIndex) //根据字符获取在字符串中第一次出现的位置,从指定位置开始索引。这个位置还是整个字符串中的位置

int indexof(String str) //根据字符串取在字符串中第一次出现的位置

int indexof(String str,int fromIndex) //根据字符串取在字符串中第一次出现的位置,从指定位置开始索引


1.4根据字符或者字符串获取在字符串中第一次出现的位置,从末尾开始索引,如果没找到返回-1

int lastIndexof(int ch)  

int lastIndexof(int ch,int fromIndex) 

int lastIndexof(String str) 

int lastIndexof(String str,int fromIndex) 


1.5获取字符串的一部分,也叫子串

String substring(int beginIndex,int endIndex) //包含beginIndex,不包含endIndex

String substring(int beginIndex)


2.转换

  2.1 将字符串变成字符串数组(字符串的切割)
  string [] split(String regex);//涉及到正则表达式,如果是"."需要转义成普通的字符。split("\\.");

  2.2 将字符串转成字符数组

  char[] toCharArray();

  2.3 将字符转成字节数组

  bytep[] getBytes(); //s="ab你",s.getBytes(),会输出97,98,-60,-29,

这是因为"ab"在ASCII编码中是97,98都是一个字节,而"你"是两个字节,在中国的编码表中高位都是1,所以对应的都是负数。

  2.4 将字符串转成大小写

  String toUpperCase();//大写
  String toLowerCase();//小写

  2.5 替换
  
  String replace(char oldChar,char newChar)//替换字符


  String replace(CharSequence s1,CharSequence s2)/替换字符串

  CharSequence:这是一个接口,实现了这个接口的子类有:String ,StringBuffer,StringBuilder  


   2.6 

  String trim()//去除字符串两端的空白

   2.7将字符串连接

   String concat(String s);

   2.8将基本数据类型转为字符串

   String valueOf(Object obj)


3.判断
    3.1两个字符串是否相同
    boolean equals(Object obj);
    boolean equalsIgnoreCase(String str);//忽略大写比较两个字符串是否相同

    3.2是否包含

    boolean contains(String str)

    3.3开头和结尾

    boolean startsWith(String str)
    boolean endsWith(String str)

    通常是用来判断文件用的

4.比较

    compareTo(String anotherString)
    按照ASCII码表的顺序比较,如果参数比字符等于字符串,返回0,如果此字符串参数
小于参数字符串,返回一个小于0的值,反之会返回一个大于0的值。这个值就是两个字符的差距。

      "abc".compareTo("aqz");

    比较的顺序是 a跟a比一样,b跟q比,出结果就直接返回了。

5.字符串池的操作

     String intern();//如果字符串池中已经包含了一个等于此String对象的字符串,则返回池中的字符串
,否则将此String对象添加到池中,并返回此String对象的应用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值