java笔记 chapter6 Object类,String类,正则表达式
Object类(在java.lang包中)
方法getChars (int srcBegin, int srcEnd, char[ ] dst, int dstBegin) –拷贝字符串的部分字符序列到指定的字符数组的指定位置
判断字符串s1师傅包含字符串s2
String类
正则表达式
Object类
1,Object类是所有java类的父类。
2,equals方法
2.1,equals方法 和"=="运算符的关系2.2,覆盖equals方法
3,hashCode方法
4,toString方法
String类:字符串的底层实现是一个char字符数组。
1,String类存在java.lang包里,继承了Object类,实现了以下接口,API显示如下
public final class Stringextends Objectimplements Serializable, Comparable<String>, CharSequence
2,String的直接量
1),String的直接量是指双引号括起来的字符序列。
2),String name = "lucy'; 这里的name是String类型的引用, lucy是String的直接量。
3),String的直接量是放在方法区的常量池里。
,3,
2.1,String的常用方法:length(),charAt() ,getBytes()和 getChars()
方法 length() –返回 String 的长度,是按照char 返回的长度。备注:数组含有 length属性。
一个中文,占2个字节,但是按照char计算,中文还是1个。
方法getBytes() –使用平台的默认字符集将此String编码为byte序列,并将结果存储到一个新的byte数组中
String s3 = "欢迎java";
byte[] bs = s3.getBytes();
for( byte b : bs) {
System. out.println(b);
}
System. out.println( "字节数组的长度是===" + bs.length );
方法charAt(int index) –获得字符串指定位置的字符
String s1 = "hello java" ;
String s2 = "hello你好" ;
System. out.println(s1.length()); //返回10,空格等符号也算作一个字符
System. out.println(s2.length()); //返回7
System. out.println(s1.charAt(4)); //返回字母o
String s4 = "welcomejavaasd";
char[] cs = {'a' ,'o' ,'p' ,'k' ,'s' ,'w' };
s4.getChars(2, 5 ,cs, 2); //lco
for( char c : cs) {
System. out.println(c);
}
方法toCharArray()
public char[] toCharArray() 将此字符串转换为一个新的字符数组
String s1 = "are you ok" ;
char [] cs = s1.toCharArray();
for( char a : cs) {
System. out.println(a);
}
2.2, 字符串比较----
str1.compareTo(str2); 按照字典顺序比较, 返回0表示相等,返回大于0的数,表示字符串str1大。小于0表示str2大.
str1.compareToIgnoreCase(str2) 忽略大小写,返回0表示相等,大于0表示str1大,小于0表示str2大
方法equals(Object s) :比较两个String 对象的值是否相等,这个是区分大小写的 ,
方法equalsIgnoreCase(String s) :比较两个String 对象的值是否相等,忽略大小写 。
public boolean equals(Object anObject)public boolean equalsIgnoreCase(String anotherString)
例子:
String s1 = "java123";
String s2 = "JAVA123";
String s3 = "abc";
int a = s1.compareTo(s2); //32
int b = s2.compareTo(s3); //-23
int c = s1.compareToIgnoreCase(s2); //0
int d = s2.compareToIgnoreCase(s3); //9
boolean b1 = s1.equals(s2); //false
boolean b2 = s1.equalsIgnoreCase(s2); //true
boolean b3 = s1.equalsIgnoreCase(s3); //false
2.3,查找字符串中的字符或子串 indexOf() lastIndexOf()
String s1 = "java23中文hi234";
int a = s1.indexOf( "23"); //返回4
int a1 = s1.indexOf( "中国"); //返回-1
int b = s1.indexOf( "23", 5); // 从索引为5的位置开始搜素,返回10
String s2 = "北京onedream";
int m = s2.lastIndexOf( "e"); //7
int n = s2.lastIndexOf( "r"); //6
int p = s2.lastIndexOf( "p"); //-1,不存在字符P,找不到就返回-1
int i = s2.lastIndexOf( "o", 2); //2
int j = s2.lastIndexOf( "o", 1); //-1
2.4,截取字符串substring()
String s = "tomorrow"; //length是8
String s1 = s.substring(2); //morrow
String s2 = s.substring(6); //ow
String s3 = s.substring(8); //返回空串""
// String s4 = s.substring(9); //报错 java.lang.StringIndexOutOfBoundsException:
String s5 = s.substring(2,5); // mor
2.5,字符串拼接concat
String s = "some";
String s1 = s.concat( "one"); // someone
2.6,valueOf
2.7,字符串分解split
String s1 = "and i wonder * i wonder how * i wonder why" ;
String[] str = s1.split( "\\*");
for(String a : str) {
System. out.println(a);
}
2.8,其他的String方法:replace(char1,char2) toUpperCase() trim() toCharArray()
String s = "welcome to java, hello, java中国" ;
String s1 = s.replace( "java", "123" );
String s2 = s.replaceAll( "e", "呵呵" );
String s3 = s.replaceFirst( "l", "*" ); //第一个字母l用型号代替,
String s4 = s.replaceFirst( "k", "哈哈" );
System. out.println(s1); //welcome to 123, hello, 123中国
System. out.println(s2); //w呵呵lcom呵呵 to java, h呵呵llo , java中国
System. out.println(s3); //we*come to java, hello, java中国
System. out.println(s4); //welcome to java, hello, java中国
String s = "java开发2013";
String s1 = s.toUpperCase(); // JAVA开发2013
String s = " welcome to java 中国 " ;
String s1 = s.trim(); // public String trim() 返回字符串的副本,忽略前导空白和尾部空白,但是文本中间的空白不会被忽略
System. out.println(s1); //welcome to java 中国
扩展:
如何判断字符串是否包含中文?包含几个中文。
public class HasCh {
public static void main(String[] args) {
String str = "welcome to New York 小平" ;
int charLength = str.length();
int byteLenght = str.getBytes(). length;
if(byteLenght > charLength) {
int chineseNum = byteLenght - charLength;
System. out.println( "str中的中文个数是" + chineseNum );
} else {
System. out.println( "str中不包含中文" );
}
}
}
if(s1.indexOf(s2) > 0) {
// 说明包含
}
正则表达式 (待补)