欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA

程序员文章站 2022-06-19 13:54:44
...

Day14

String 类中的判断功能

定义三个字符串进行演示功能

public static void main(String[] args) {
  
  //定义三个字符串
  String s1 = "HelloWorld" ;
  String s2 = "helloworld" ;
  String s3 = "helloworld" ;

public boolean equals(Object anObject)

比较两个字符串的内容是否相同,将此字符串与指定对象进行比较。

System.out.println("equals():"+s1.equals(s2));//false
  System.out.println("equals():"+s1.equals(s3));//false
  System.out.println("equals():"+s2.equals(s3));//true
  System.out.println("-----------------------");

public boolean equalsIgnoreCase(String anotherString)

比较两个字符串的值是相同,忽略大小写

System.out.println("equals():"+s1.equalsIgnoreCase(s2));//true
  System.out.println("equals():"+s1.equalsIgnoreCase(s3));//true
  System.out.println("equals():"+s2.equalsIgnoreCase(s3));//true
  System.out.println("-----------------------");

public boolean contains(Char s)

判断指定字符串是否包含指定的字符

System.out.println("contains():"+s1.contains("ll"));
  System.out.println("contains():"+s1.contains("owo"));
  System.out.println("contains():"+s1.contains("ak47"));
  System.out.println("-----------------------");

public boolean startsWith(String prefix)

判断字符串是否以指定的前缀开头

System.out.println("startWith():"+s2.startsWith("hel"));
  System.out.println("startWith():"+s2.startsWith("java"));
  System.out.println("-----------------------");

public boolean isEmpty()

判断字符串对象是否为空

System.out.println("isEmpety():"+s1.isEmpty());//false
  s1 = null ;
  //加入判断
  if(s1!=null) {
   System.out.println(s1.isEmpty());
  }else {
   System.out.println("当前字符串null了");
  }
  //java.lang.NullPointerException
  //System.out.println(s1.isEmpty());
  s2 = "" ;
  System.out.println(s2.isEmpty());

String类的获取功能

定义一个字符串进行功能演示

public static void main(String[] args) {
  
  //定义一个字符串
  String str = "helloworld" ;

public int length ( )

返回此字符串的长度。 (重点)

System.out.println("length():"+str.length());

public String concat (String str)

将指定的字符串连接到该字符串的末尾。

System.out.println("contact():"+str.concat("javaee"));
  String s1 = "java" ;
  System.out.println(str+s1); //拼接符号
  System.out.println("-----------------------");

public char charAt (int index)

返回指定索引处的 char值。(重点)

//String的原码对字符串实现---->将字符串内容--->字符数组
  System.out.println("charAt():"+str.charAt(4)); //o
  System.out.println("-----------------------");

public int indexOf (String str)

返回指定子字符串第一次出现在该字符串内的索引。 (重点)

System.out.println("indexOf():"+str.indexOf("l")); //2

public String substring (int beginIndex)

返回一个子字符串,从beginIndex开始截取字符串到字符
串结尾。(重点)

System.out.println("substring():"+str.substring(3));//loworld

public String substring (int beginIndex, int endIndex)

返回一个子字符串,从beginIndex到 endIndex截取字符串。含beginIndex,不含endIndex。

//注意:不包含结束位置(但是包含前面这个位置)
  System.out.println("substring():"+str.substring(5, 10));//worl

String类的转换功能

定义一个数组进行功能演示

public static void main(String[] args) {
  
  //定义一个字符串
  String s = "helloJava" ;//---->字符数组

public char[] toCharArray( )

将此字符串转换为一个新的字符数组。 (重点)

char[] chs = s.toCharArray() ;
  //遍历字符数组
  for(int x = 0 ; x < chs.length ; x++) {
   System.out.print(chs[x]+" ");
  }
  System.out.println("----------------------");

public byte[] getBytes()

将字符串转换成字节数组

byte[] bys = s.getBytes() ;
  for(int x = 0  ; x < bys.length ;x ++) {
   System.out.print(bys[x]+" ");
  }
  System.out.println("----------------------");

public String toUpperCase( )

将字符串本身转换大写字符串

System.out.println("toUpperCase():"+s.toUpperCase());

public String toLowerCase( )

将字符串本身转换小写

System.out.println("toLowerCase():"+s.toLowerCase());

public static String valueOf(任意类型数)

可以将任意类型的数据转换字符串 (重点)

int i = 100 ;
  //String s3 = "" ;
  //s3 + i ;
  String s2 = String.valueOf(i) ;  //万能方法
  System.out.println(s2);//"100"

分割(切割)功能 (结合正则表达式!)

public String[ ] split(String regex)

java.util.regex 类 Pattern :规定了正则表达式的语法!
参数:
regext:(规则:建立正则语法的基础上)
将字符串通过split---->字符串数组

public class StringDemo2 {
 public static void main(String[] args) {
  // \x  :\任意字符   
  // \t :制表符
  // F:\360Downloads   硬盘上 路径使用\----->转义  \\
  // aaa@qq.com    \.---->描述.  
  //String s = "aa.bb.cc" ;   
  String s = "aa|bb|cc" ;   
  //String s2 = "E:\\Java\\Code" ;
  //String[] strArray = s.split("\\.") ; //正则表达式语法
  String[] strArray = s.split("|") ; 
  for(int x = 0 ; x < strArray.length ; x ++) {
   System.out.print(strArray[x]+"  ");
  }
 }
}

String类中的其他功能

public static void main(String[] args) {
  String s = "helloworld" ;

public String replace(char oldChar,char newChar):替换功能

String s2 = s.replace('l', 'k') ;
  System.out.println("s2:"+s2);
  System.out.println("----------");

public String trim():去除两端空格

String s3 = "  hello world   " ;
  System.out.println("s3:"+s3+"---");
  String s4 = s3.trim() ;
  System.out.println("s4:"+s4+"---"); 
  System.out.println("----------");

public int compareTo(String anotherString)按字典顺序比较两个字符串

String s5 = "hello" ;
  String s6 = "hello" ;
  String s7 = "abc" ;
  String s8 = "hel" ;
  System.out.println(s5.compareTo(s6)); //0
  System.out.println(s5.compareTo(s7)); //7
  System.out.println(s5.compareTo(s8)); //2

StingBuilder:线程安全的可变字符序列.

一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步(线程不安全,效率高)
注意:单线程程序中,StringBuilder通常去替代StringBuffer
构造方法:

public StringBuffer() :空参构造,字符串缓冲区没有字符内容

StringBuffer sb = new StringBuffer() ;
  System.out.println(sb.length());//0
  System.out.println(sb.capacity());//16:初始容量
  System.out.println("--------------------------")

public StringBuffer(int capacity):构造缓冲区对象,设置初始了初始容量

StringBuffer sb2 = new StringBuffer(50) ;
  System.out.println(sb2.length());
  System.out.println(sb2.capacity());//设置容量为50
  System.out.println("--------------------------");

public StringBuffer(String str):构造缓冲区对象,存储一个str字符串

StringBuffer sb3 = new StringBuffer("hello") ;
  System.out.println(sb3.length());
  System.out.println(sb3.capacity());//16+5=21
  
  //StringBuffer sb4 ="hello" ; //String
  //String s = "hello" ;
  //StringBuffer sb4 = s ;

面试题:三者之间的区别

  • StringBuffer和String,StringBuilder ?
  • 前者:字符串缓冲区(存储的都是字符串),可变的字符序列,线程安全的!
  • 后者:字符串是常量,一旦被赋值,其值不能被改变!
  • StingBuilder:单线程程序中,StringBuilder通常去替代StringBuffer,线程不安全!
    两个获取功能:
    public int length( ):获取缓冲中字符长度
    public int capacity( )返回当前容量

public StringBuffer append(String str)

在缓冲区中不断追加字符串内容,返回值是它本身(重点功能:使用居多)

public StringBuffer insert(int offset,String str)

在指定的位置上插入指定的字符串

public class StringBufferDemo2 {
 public static void main(String[] args) {
  //创建一个字符串缓冲区对象
  StringBuffer sb = new StringBuffer() ;
  System.out.println("sb:"+sb);
  //public StringBuffer append(String str)
  //StringBuffer sb2 = sb.append("hello") ;
  //StringBuffer sb3 = sb2.append("world") ;
  //System.out.println("sb3:"+sb3);//helloworld :StringBuffer类型
  /*
   * sb.append(true); sb.append(100) ; sb.append('a') ; sb.append("javaee") ;
   * sb.append(3.1415926) ;
   */
  //链式编程
  //sb.append(true).append('a').append("hello").append(3.14).append(10);
  sb.append("hello");
  sb.append("world");
  sb.append("java");
  System.out.println("sb:"+sb);
  System.out.println("-----------------------");
  //public StringBuffer insert(int offset,String str):在指定的位置上插入指定的字符串
  System.out.println("insert():"+sb.insert(5, "Andorid")) ;
 }
}

StringBuffer的删除功能:

public StringBuffer deleteCharAt(int index)

删除指定索引处的字符,返回字符串缓冲区本身(使用居多)

public StringBuffer delete(int start,int end)

从指定位置开始到指定位置结束,删除内容,返回值字符串缓冲区本身

public class StringBufferDemo3 {
 public static void main(String[] args) {
  //创建字符串缓冲区对象
  StringBuffer sb = new StringBuffer() ;
  //追加内容
  sb.append("hello").append("Java") ;
 
  //public StringBuffer deleteCharAt(int index)
  //需求:删除字符串缓冲区的内容: 'e'
  //System.out.println("deleteCharAt():"+sb.deleteCharAt(1));
  //需求:删除缓冲区的第一个'l'字符
  //System.out.println("deleteCharAt():"+sb.deleteCharAt(1));
  
  //public StringBuffer delete(int start,int end)
  System.out.println("delete():"+sb.delete(0,5));//Java
 }
}

string 案例
登录
JAVA
猜数字游戏
JAVA