类String
String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。
字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。
因为 String 对象是不可变的,所以可以共享。
直接来代码吧
String s1="hello";//常量池
s1="abc";
String s2="abc";
String s3=new String ("seven");//堆
// 将此字符串与指定的对象比较。
System.out.println(s1==s2);
System.out.println(s1==s3);
System.out.println(s1.equals(s3));//在String中以重写
结果为:true
false
false
方法摘要
String s = " ahscKFJfjkld sdasd ";
String f = " ahsadd";
String d = " ahscKFJfjkld sdasd lalala~";
//1.返回指定索引处的 char 值。 charAt();方法
char a=s.charAt(2);
System.out.println(a);//输出h
//2.按字典顺序比较两个字符串。 compareTo
System.out.println(s.compareTo(f));//输出2 s-->c f-->a abc两个
//3.按字典顺序比较两个字符串,不考虑大小写 compareToIgnoreCase
System.out.println(f.compareToIgnoreCase(d));//这个不考虑大小写
//4.将指定字符串连接到此字符串的结尾。 concat
System.out.println(s.concat(" lalala~").equals(s));//输出false
String t=s.concat("lalala~");
System.out.println(t.equals(d));//输出:true
//5.当且仅当此字符串包含指定的 char 值序列时,返回 true. contains
System.out.println(s.contains("sda"));//输出:true
System.out.println(s.contains("sdad"));//输出:false
//6.测试此字符串是否以指定的后缀结束。 endsWith
System.out.println(s.endsWith("asd "));//输出:true
System.out.println(s.endsWith("assd"));//输出:false
//7.getBytes()使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
byte [] b= s.getBytes();
System.out.println(b[1]);//输出:97
//8.indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引。
System.out.println(s.indexOf("s"));//输出:3
//9.intern() 返回字符串对象的规范化表示形式。
System.out.println(s.intern());//输出: ahscKFJfjkld sdasd
//10.isEmpty() 当且仅当 length() 为 0 时返回 true。
String e="";
if(e.isEmpty()){
System.out.println("kong");
}//输出:kong
//11.lastIndexOf(int ch) 返回指定字符在此字符串中最后一次出现处的索引。
System.out.println(s.lastIndexOf("s"));//输出:17
//12.length() 返回此字符串的长度。
System.out.println(s.length());//输出:20
//13.replace(char oldChar, char newChar)返回一个新的字符串,它是通过用 newChar替换此字符串中出现的所有 oldChar 得到的。
System.out.println(s.replace("a", "目"));//输出: 目hscKFJfjkld sd目sd
//14.split(String regex) 根据给定正则表达式的匹配拆分此字符串。
String [] a= new String[100];
a=s.split("");
for(String i:a){
System.out.print(" "+i);
}// 输出: a h s c K F J f j k l d s d a s d
//15.startsWith(String prefix) 测试此字符串是否以指定的前缀开始。
System.out.println(s.startsWith("ah"));//输出:false
System.out.println(s.startsWith(" ah"));//输出:true
//16.substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串。
System.out.println(s.substring(15,18));//[15,18) 输出das
//17.toCharArray() 将此字符串转换为一个新的字符数组。
char [] aa=s.toCharArray();
for(char bb:aa){
System.out.print(bb);
}//输出: ahscKFJfjkld sdasd
//18.toLowerCase() 使用默认语言环境的规则将此 String 中的所有字符都转换为小写。
System.out.println(s.toLowerCase());//转换为小写
System.out.println(s.toUpperCase());//转化为大写
//19.trim() 返回字符串的副本,忽略前导空白和尾部空白。
System.out.println(s.trim());
//20.valueOf(boolean b) 返回 boolean 参数的字符串表示形式。
char [] aa=s.toCharArray();
double a=23.2;
String aaa=String.valueOf(23.2);
System.out.println(String.valueOf(aa, 14, 2)+a);//输出:sd23.2
类StringBuffer和类StringBuilder
StringBuffer多线程安全的,效率低。
StringBuilder多线程不安全,效率高。
在这里插入代码片
简单用法
StringBuffer sb1=new StringBuffer("aaaaaaaa|");
StringBuilder sb2=new StringBuilder("asde");
StringBuilder xx=sb2.reverse();
System.out.println(xx);//输出:edsa
StringBuffer a= sb1.append("sss").append("bbb").append("ccc");//用于比较多的字符串拼接
System.out.println(a); //==输出:aaaaaaaa|sssbbbccc
char [] b=new char[5];
b[0]='s';
b[1]='r';
b[2]='j';
b[3]='k';
b[4]='o';
StringBuilder bb= sb2.append(b, 2, 2);
System.out.println(bb);// --输出:edsajk
软件包 java.util
类 Random
// 产生随机数3到27 [3 27]
java.util.Random r = new java.util.Random();
int i = r.nextInt(25)+3;
System.out.println(i);
//此时Random带了参数,叫做初始种子
java.util.Random r1 = new java.util.Random(2);
for(int a=0;a<10;a++){
System.out.print(r1.nextInt(100)+" ");
}
System.out.println();//输出:8 72 40 67 89 50 6 19 47 68
//带了种子的话 会一直打印8 72 40 67 89 50 6 19 47 68,我也不知道为什么,涉及数学问题
//不带种子的话,会随机产生10个随机数