七:Object:常用类
7.1克隆方法clone()
格式: 类名.clone();
- protected Object clone() throws CloneNotSupportedException:
- 创建对象并返回该对象的副本
- 这个方法会抛出一个异常,throws:表示的是可能出现异常,针对调用者必须进行处理
重写的步骤是:
- 声明实现Cloneable接口。(贴标签技术,其实质并没有任何方法需要实现,类似于序列化)
- 调用super.clone拿到一个对象,如果父类的clone实现没有问题的话,在该对象的内存存储中,所有父类定义的field都已经clone好了,该类中的primitive(基本数据类型)和不可变类型(string)引用也克隆好了,可变类型引用都是浅copy。
- 把浅copy的引用指向原型对象新的克隆体。
7.2Scanner类:文本扫描器
- public boolean hasNextXXX():判断是否有指定类型数据,如果没有指定类型则为String
- public XXX nextXXX():取得指定类型的数据,如果没有指定类型则为String
- public Scanner useDelimiter(Pattren pattern):自定义分隔符
7.3 equals
含义: equals()比较的是同一个类型的两个不同对象里的属性是否都相等,相等返回true,否则返回false。
注意: API中某些常用的类(如String、Date、File、包装类等)都已经重写了Object类中的equals()方法,所以可以直接调用,而自己定义的类没有重写,需要的话就自己重写equals(),快捷键(在Eclipce中Alt Shift S)按一下就写好了。
==和equals()的区别
- = =:是运算符。 既可以比较基本类型也可以比较引用类型。对于基本类型就是比较值,而引用类型就是比较内存地址。并且必须保证符号左右两边的变量类型一致,即都是比较基本类型,或者都是比较引用类型。
- equals():是java.lang.Object类里面的方法。只能适用于引用数据类型。如果类的该方法没有被重写过默认也是= =
7.4 Math.random() 随机数
Math.random()是令系统随机选取大于等于 0.0 且小于 1.0 的伪随机 double 值
7.5 String类的常用的转换功能
7.5.1String的构造方法:
- String(String original):把字符串数据封装成字符串对象
- String(char[] value):把字符数组的数据封装成字符串对象
- String(char[] value, int index, int count):把字符数组中的一部分数据封装成字符串对象
7.5.2String类的获取功能:
- length():获取字符串的长度,其实也就是字符个数
String str = "System.out.print()";
//计算str字符串的长度
System.out.println(str.length());
//运行结果是:18
- charAt(int index):获取指定索引处的字符
String str = "System.out.print()";
//获取给定索引值的字符串内容
System.out.println(str.charAt(5));
//运行结果是:m
- indexOf(String str):获取str在字符串对象中第一次出现的索引
注意: 字符串如果是英文字母则区分大小写
String str = "System.out.print()";
//获取给定索引值的字符串内容
System.out.println(str.indexOf("s",0));
//运行结果是:2
- substring(int start):从start开始截取字符串
()中输入int类型整数,参数为一个时“截取索引为该参数到末尾”。参数为两个时“索引为带一个到第二个的字符串截取[1,2)”
String str = "System.out.print()";
//获取给定索引值的字符串内容
System.out.println(str.substring(1));
//运行结果是:ystem.out.print()
System.out.println(str.substring(1,3));
//运行结果是:ys
7.5.3String判断功能
- equals(Object obj):比较字符串的内容是否相同
String str = "System.out.print()";
System.out.println(str.equals("System.out.print()"));
System.out.println(str.equals("System.out.println(str.substring(1,3))"));
//结果是true、false
- equalsIgnoreCase(String anotherString):比较字符串的内容是否相同,忽略大小写
String str = "System.out.print()";
System.out.println(str.equalsIgnoreCase("system.out.print()"));
System.out.println(str.equalsIgnoreCase("system.out.println(str.substring(1,3))"));
//结果是true、false
- startsWith(String prefix):判断字符串对象是否以指定的字符开头(区分大小写)
String str = "System.out.print()";
System.out.println(str.startsWith("S"));
//结果是true
- startsWith(String prefix,int toffset):判断字符串对象是否以指定的字符开头,参数toffset为指定从哪个下标开始
String str = "System.out.print()";
System.out.println(str.startsWith(".",6));
//结果是true、true
- isEmpty():判断指定字符串是否为空
String str = "System.out.print()";
String str1= "";
System.out.println(str.isEmpty());//false
System.out.println(str1.isEmpty());//true
//输出结果是:false、true
7.5.4String类中的转化方法:
- toCharArray():把字符串转换为字符数组
String str = "李逍遥love赵灵儿";
char arr[] = str.toCharArray();
printArray(arr);
}
public static void printArray(char a[]) {
for(int i=0;i<a.length;i++) {
System.out.print(a[i]+"--");
}
}
//输出结果是:李--逍--遥--l--o--v--e--赵--灵--儿--
- toLowerCase():把字符串转换为小写字符串
String str1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
System.out.println(str1.toLowerCase());
//输出的结果是:abcdefghijklmnopqrstuvwxyz
- ** toUpperCase():把字符串转换为大写字符串**
String str1 = "abcdefghijklmnopqrstuvwxyz";
System.out.println(str1.toUpperCase());
//输出的结果是:ABCDEFGHIJKLMNOPQRSTUVWXYZ
7.5.5其他常用方法
- trim():去除字符串两端空格
String str= " a b c d e f g h ";
System.out.println(str.trim());
System.out.println(str);
//输出的结果是:
// a b c d e f g h
//a b c d e f g h
- split():去除字符串中指定的的字符,然后返回一个新的字符串
String str = "lalalalalalalalala";
String array[] = str.split("a");
printString(array);
}
public static void printString(String a[]) {
for(int i=0;i<a.length;i++) {
System.out.print(a[i]);
}
}
//输出的结果是:lllllllll
- subSequence(int beginIndex,int endIndex ):截取字符串中指定位置的字符组成一个新的字符串
public static void main(String[] args) {
String str = "System.out.println()";
System.out.println(str.subSequence(1, 10));
//输出的结果是:ystem.out
}
- replace(char oldChar, char newChar):将指定字符替换成另一个指定的字符
String str = "System.out.println()";
System.out.println(str.replace("n","t"));
//输出的结果是:System.out.prittlt()
- replaceAll(String regex,String replasement):用新的内容替换全部旧内容
String str = "System.out.println()";
System.out.println(str.replaceAll("out","%"));
//输出的结果是:System.%.println()
- replaceFirst(String regex,String replacement):替换首个满足条件的内容区分大小写
String str = "System.out.println()";
System.out.println(str.replaceFirst("s","%"));
//输出的结果是:Sy%tem.out.println()
- lastIndexOf(String str):返回指定字符出现的最后一次的下标
String str = "System.out.println()";
System.out.println(str.lastIndexOf("t"));
//输出的结果是:15
- contains(CharSequence s):查看字符串中是都含有指定字符
String str = "System.out.println()";
System.out.println(str.contains("t"));
//输出的结果是:ture
- concat(String str):在原有的字符串的基础上加上指定字符串
String str = "System.out.println()";
System.out.println(str.concat("t"));
//输出的结果是:System.out.println()t