java.10——String类

1. “hello”.length() 直接获取String类型对象的长度

一,字符串构造

1.使用常量串构造

String s1="hello bit";

2.直接newString对象(引用类型)

String s2=new String("hello bit"); 

3.使用字符数组

char[]array={'h','e','l','l','o','b','i','t};

String s3=new String(array);

注意:

1. String是引用类型,内部并不存储字符串本身

2. 在Java中“”引起来的也是String类型对象。

二,String对象的比较

1. ==比较是否引用同一个对象

对于基本类型,==比较的是变量中的值;

 int a = 10;
 int b = 20;
 int c = 10;

 System.out.println(a == b);   // false
 System.out.println(a == c);   // true

对于引用类型==比较的是引用中的地址。

  String s1 = new String("hello");
  String s2 = new String("hello");
  String s3 = new String("world");
  String s4 = s1;


  System.out.println(s1 == s2);  // false
  System.out.println(s2 == s3);  // false
  System.out.println(s1 == s4);  // true

2. equals方法(返回boolean)

按照字典序(字符大小的顺序)排序

  String s1 = new String("hello");
  String s2 = new String("hello");
  String s3 = new String("Hello");

  System.out.println(s1.equals(s2));  // true
  System.out.println(s1.equals(s3));  // false

Object中equals默认按照==比较,String重写equals方法后比较内容是否一样

  String重写过程:

public boolean equals(Object anObject) {
  // 1. 先检测this 和 anObject 是否为同一个对象比较,如果是返回true
  if (this == anObject) {
    return true;
 }
 
  // 2. 检测anObject是否为String类型的对象,如果是继续比较,否则返回false
  if (anObject instanceof String) {
    // 将anObject向下转型为String类型对象
    String anotherString = (String)anObject;
    int n = value.length;
   
    // 3. this和anObject两个字符串的长度是否相同,是继续比较,否则返回false
    if (n == anotherString.value.length) {
      char v1[] = value;
      char v2[] = anotherString.value;
      int i = 0;
     
      // 4. 按照字典序,从前往后逐个字符进行比较
      while (n-- != 0) {
        if (v1[i] != v2[i])
          return false;
        i++;
     }
      return true;
   }
 }
return false;
}

3.compareTo方法  (返回int)

1. 先按照字典次序大小比较,如果出现不等的字符,直接返回这两个字符的大小差值
2. 如果前k个字符相等(k为两个字符长度最小值),返回值两个字符串长度差值

  String s1 = new String("abc");
  String s2 = new String("ac");
  String s3 = new String("abc");
  String s4 = new String("abcdef");


  System.out.println(s1.compareTo(s2));  // 不同输出字符差值-1
  System.out.println(s1.compareTo(s3));  // 相同输出 0
  System.out.println(s1.compareTo(s4));  // 前k个字符完全相同,输出长度差值 -3

4. compareToIgnoreCase方法  

与comperTo方法相同,区别在于忽略大小写变化

  String s1 = new String("abc");
  String s2 = new String("ac");
  String s3 = new String("ABc");
  String s4 = new String("abcdef");
  System.out.println(s1.compareToIgnoreCase(s2));  // 不同输出字符差值-1
  System.out.println(s1.compareToIgnoreCase(s3));  // 相同输出 0
  System.out.println(s1.compareToIgnoreCase(s4));  // 前k个字符完全相同,输出-3

三,字符串查找(indexOf)

实例方法

String s1="hello";

//当没有找到时返回-1


查找对应位置的字符
s1.charAt(0); //  h


查找第一次出现的字符的位置
s1.indexOf('h');//  0


查找确定位置后,所求字符的位置
s1.indexOf('o',1);//  4


查找字符串的位置
s1.indexOf("ll");//  2

从后往前找第一次字符出现的位置
s1.lastindexOf('o');//  4

s1.lastindexOf('e',3);//  1


四,字符串转化

1.数值和字符串转化(String.valueOf)(integer.parseInt...)

数字等转字符串

String.valueOf();

  String s1 = String.valueOf(123);  //123
  String s2 = String.valueOf(12.5); //12.5
  String s4 = String.valueOf(new Student("Hanmeimei", 18));//子类需要重写toString方法

字符串转其他类型

(包装类型).parse(对应类型)(需要转换的部分);

需要使用java中的包装类型

 int data1 = Integer.parseInt("1234");
  double data2 = Double.parseDouble("12.34");

2.大小写转换(toUpeerCase)(toLowerCse)

s1.toUpperCase();转大写

s1.toLowerCase();转小写

  String s1 = "hello";
  String s2 = "HELLO";
  // 小写转大写
  System.out.println(s1.toUpperCase());
  // 大写转小写
  System.out.println(s2.toLowerCase());

3.字符串转数组(toCharArray)

(1)字符串转数组

  String s = "hello";
  char[] ch = s.toCharArray();
  for (int i = 0; i < ch.length; i++) {
    System.out.print(ch[i]);
 }

 (2)数组转字符串

  String s2 = new String(ch);
  System.out.println(s2);

4.格式化(format)

   String s = String.format("%d-%d-%d", 2019, 9,14);
   System.out.println(s);

   //2019-9-14

五,字符串替换(replace)

String s1="abcabcabc";

String ret1=s1.replace('a','T');//TbcTbcTbc
//把a换成T

String ret2=s1.replace("ab","TT");//TTcTTcTTc
String ret3=s1.replaceAll("ab","TT");//TTcTTcTTc
//把ab换成TT

String ret3=s1.replaceFirst("ab","TT");//TTcabcabc
//只替换第一个ab

六,字符串拆分(split)

String s1="abab abab abab";

String[] ret=s1.split(" ");
//按空格拆分
//abcd
//abcd
//abcd


String[] ret=s1.split(" ",2);
//最多拆分2组
//abcd
//abcd abcd

1.特殊字符的转义

1. 字符  "|",  "*"   ,"+"   都得加上转义字符,前面加上 "\\" .
2. 而如果是 "\" ——>"\\"   ,"\\"——>"\\\\"

String s1="123\\123\\123";

char[] tel=s1.split("\\\\");

fot(String s:ret){

System.out.println(s);

}

 3. 如果一个字符串中有多个分隔符,可以用"|"作为连字符.

s1.split(" |&");\\按照空格" "和"&"拆分

2.多次拆分

String s1 = "name=zhangsan&age=18" ;

String[] ret1= s1.split("&") ;

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

    String[] ret2 = ret1[i].split("=") ;

    for(String s:ret2){
       System.out.println(s);
    }

    System.out.println();
     
}

//第一次拆分
name=zhangsan
age=18

//第二次拆分
name
zhangsan

age
18

七,字符串截取(substring)

String s1 = "helloworld" ;
System.out.println(s1.substring(5));

//world


System.out.println(s1.substring(0, 5));

//hello   左闭又开

八,StringBuilder和StringBuffer介绍

  StringBuff append(String str)
  在尾部追加

  char charAt(int index) 
  获取index位置的字符

  int length() 
  获取字符串的长度

  int capacity() 
  获取底层保存字符串空间总的大小

  void setCharAt(int index,char ch)
  将index位置的字符设置为ch

  int indexOf(String str) 
  返回str第一次出现的位置

  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值