package com.itheima;
import java.util.StringTokenizer;
public class 字符串训练学习 {
public static void main(String[] args) {
String s = new String("HelloWorld");
System.out.println(s);
System.out.println(s.length());
//创建字符串
//String s = new String("字符串")
//用.length()方法来获取字符串长度
//用String中equals的方法来判定两个字符串是否相同
String str1 = new String("Hello");
String str2 = new String("hello");
String str3 = new String("Hello");
System.out.println(str1.equals(str2)); //布尔类型 false
System.out.println(str1.equals(str3)); //布尔类型 true
//用stratsWith(s)方法查看字符串前缀是否为字符串s endsWith()方法是后缀
String str4 = new String("own");
String str5 = new String("os");
String str6 = new String("n");
System.out.println(str4.startsWith(str5));//布尔值
System.out.println(str4.endsWith(str6));
// 字符串调用regionMatches(int firstStart,String other,int ortherStart,int length)方法,
// 从当前字符串参数firstStart指定的位置开始处,取长度为length的一个子串,
// 并将这个子串和参数other指定的一个子串进行比较,
// 其中,other指定的子串是从参数othertStart指定的位置开始,从other中取长度为length的一个子串。
// 如果两个子串相同该方法就返回true,否则返回false。
String str7 = new String("Helloworld");
boolean sign = str7.regionMatches(0, str1, 0, 5);
System.out.println(sign);
String strs1 = new String("hey,bro");
String strs2 = new String("hey,bro");
String strs3 = new String("Hey,bro");
String strs4 = new String("heys");
String strs6 = new String("hey");
String strs5 = new String("o");
boolean st = strs1.equals(strs2);
boolean st1 = strs1.startsWith(strs4);
boolean st2 = strs1.startsWith(strs6);
boolean st3 = strs1.endsWith(strs5);
System.out.println(st);
System.out.println(st1);
System.out.println(st2);
System.out.println(st3);
boolean op = strs1.regionMatches(0, strs4, 0, 4);
System.out.println(op);
System.out.println(strs1.length());
/*字符串对象可以使用String类中的compareTo(String s)方法,按字典序与参数s指定的字符串比较大小。
如果当前字符串与s相同,该方法返回值0;
如果当前字符串对象大于s,该方法返回正值;如果小于s,该方法返回负值*/
String er1 = new String("anle");
String er2 = new String("aode");
System.out.println(er1.compareTo(er2));
//字符串的比较大小
//字典序排列 就是按照26个字母的排列顺序 排列字符串,从比较每个字符串开头的字母,以此类推
//例:apple , bol
//就是先比较a和b在26字母里的排列顺序 a比b小 那就直接返回负值
//例:azle , aode
//开都字母都一样,直接比较第二个字母 z的排列顺序大于aode 返回正值
/*字符串调用方法indexOf (String s)从当前字符串的头开始检索字符串s,并返回首次出现s的位置。
如果没有检索到字符串s,该方法返回的值是-1。
字符串调用indexOf(String s ,int startpoint)方法从当前字符串的startpoint位置处开始检索字符串s,并返回首次出现s的位置。
如果没有检索到字符串s,该方法返回的值是-1。
字符串调用lastIndexOf (String s)方法从当前字符串的头开始检索字符串s,并返回最后出现s的位置。
如果没有检索到字符串s,该方法返回的值是-1。*/
String se1 = new String("HelloWorld");
String se2 = new String("ld");
System.out.println(se1.indexOf(se2,6));
System.out.println(se1.lastIndexOf("l"));
/*字符串对象调用该方法获得一个当前字符串的子串,
该子串是从当前字符串的startpoint处截取到字符串的末尾所得到的字符串。
字符串对象调用substring(int start ,int end)方法获得一个当前字符串的子串,
该子串是从当前字符串的start处截取到end处所得到的字符串,但不包括end处所对应的字符。*/
String sq1 = new String("HelloWorld");
System.out.println(sq1.substring(5,7));
//用的是索引截取字串
/*字符串对象s调用该方法可以获得一个串对象,
这个串对象是通过用参数newString指定的字符串替换s中由oldString指定字符串而得到的字符串。*/
//例子 srt = "longl" , st2 = srt.replaceAll("l","L") -> LongL
String sc1 = new String("WWWWorld");
String sc2 = sc1.replaceAll("W","w");
System.out.println(sc2);
/*一个字符串s通过调用方法trim()得到一个字符串对象,该字符串对象是s去掉前后空格后的字符串。 */
String co1 = new String(" hello ");
System.out.println(co1);
String co2 = co1.trim();
System.out.println(co2);
//用java.lang.一些数字的数据类型 可以将数字形式的字符串转换为相应类型的数字
//整型 integer
String number1 = new String("125");
int num1 = Integer.parseInt(number1);
System.out.println(num1);
//浮点型
String number2 = new String("125.254");
//浮点型默认为double型
double num2 = Double.parseDouble(number2);
System.out.println(num2);
//还有long short byte float 等等
//toString(),一个对象通过调用该方法可以获得该对象的字符串表示。
int sp1 = 5;
String opw = Integer.toString(sp1);
System.out.println(opw);
//stringtokenizer 是字符分割器 可以使用nextoken()逐个获取字符串中的语言符号(单词)
StringTokenizer tokenizer = new StringTokenizer("hello world , well come to java!",", ");
//指定, 和 (空格) 为分隔符
while(tokenizer.hasMoreTokens()){
System.out.println(tokenizer.nextToken());
}
/*public void getChars(int start,int end,char c[],int offset )
将字符串中从位置start到end-1位置上的字符拷贝的数组c中,并从数组c的offset处开始存放这些字符。
需要注意的是,必须保证数组c能容纳下要被拷贝的字符。 */
String kt1 = "hello,world";
//创建数组的方法
char[] chararray = new char[kt1.length()];
kt1.getChars(0,5,chararray,0);
System.out.println(chararray);
//打印数组内容 数组的打印方法
for (char ch:chararray){
System.out.println(ch);
}
//public char[] toCharArray() 字符串对象调用该方法可以初始化一个字符数组,
//该数组的长度与字符串的长度相等,并将字符串对象的全部字符拷贝到该数组中。
String lp = "world";
char[] charsarray = lp.toCharArray();
for(char ch : charsarray){
System.out.println(ch);
}
/*String(byte[],int offset,int length) 该构造方法使用平台默认的字符编码,
用指定的字节数组的一部分,即从数组起始位置offset开始取length个字节构造一个字符串对象。 */
String mp1 = "hello,world";
//先弄个数组
char[] use = mp1.toCharArray();
for(char h : use){
System.out.println(h);
}//现在是输出每个字符
//现在组合字符
String use1 = new String(use,0,5);
System.out.println(use1);
/*public byte[] getBytes() 使用平台默认的字符编码,将当前字符串转化为一个字节数组*/
//就是把每个字符都转换成ascii值然后存到数组中
String ap = "hello,world";
byte[] bit = ap.getBytes();
for(byte cg : bit){
System.out.println(cg);
}
/*String类创建的字符串对象是不可修改的,也就是说,
String字符串不能修改、删除或替换字符串中的某个字符,
即String对象一旦创建,那么实体是不可以再发生变化的*/
/*StringBuffer类能创建可修改的字符串序列,
也就是说,该类的对象的实体的内存空间可以自动的改变大小
,便于存放一个可变的字符序列。 (相当于字符串变量)*/
StringBuffer a = new StringBuffer("helloworld");
System.out.println(a);
//正则表达式是含有一些具有特殊意义字符的字符串,这些特殊字符称作正则表达式中的元字符。
//比如,“\\dhello”中的\\d就是有特殊意义的元字符,代表0到9中的任何一个。
// 字符串“9hello”和“1hello”都是和正则表达式:“\\dhello”匹配的字符串之一。
/*字符串对象调用
public boolean matches(String regex)方法可以判断当前字符串对象是否和参数regex指的正则表达式匹配。*/
String str = "Hello, World!";
boolean isMatch = str.matches("Hello.*");
System.out.println(isMatch);
// 结果为 true,因为字符串以 "Hello" 开头
}
}
java字符串训练与学习
不会,就是不会!2023-09-18 21:23