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 案例
登录
猜数字游戏