第十六天
克隆方法
protect Object clone() throws CloneNoSupportedException;创建对象,并返回对象的副本,这个方法回抛出一个异常,throws表示的是可能出现异常,针对调用者必须进行处理.
要实现clone方法,当前某个对象所在的类必须实现标记接口"Cloneable",实现此接口后皆可以使用Object的clone()方法.
Scanner类 文本扫描器
Scnner是一个文本扫描器类,它的形参是一个抽象类,它通过本地的方法进行实现()而非Java语言).
Scanner类提供了判断功能,用来防止输入的类型和结果类型不相互匹配.
public boolean hasNextxxx();判断下一个录入的信息是否是指定的xxx类型.
具体操作格式如下
public class ScannerDemo {
public static void main(String[] args) {
//创建键盘录入对象
InputStream inputStream = System.in ; //标准输入流 IO(Input 读 ,Output 写) :Java高级特性:IO
Scanner sc = new Scanner(inputStream) ;// public Scanner(InputStream source) :创建一个文本扫描器
System.out.println("请您输入一个数据:");
if(sc.hasNextInt()){
int num = sc.nextInt() ;
System.out.println("您录入的数据是:"+num);
}else if(sc.hasNextLine()){
//录入的字符串
String line = sc.nextLine() ;
System.out.println("您录入的数据是:"+line);
}else{
System.out.println("您录入的数据和结果类型不匹配...");
}
//录入数据
// int num = sc.nextInt(); //java.util.InputMismatchException
// System.out.println("您要录入的数据是:"+num);
}
}
String字符串
String字符串是一个常量一旦被赋值了其值就不能再被更改.
推荐使用
String 变量名 = “xxx”;//xxx就是当前String类的实例.
String内部有许多常用的功能,int length();用来获取字符串的长度.在此特别注意,数组中的length是属性,String中的length是一个方法,他们都是获取字符长度的,在数组中使用的则是size();
String中的构造方法有很多,如:
- public String();空参构造,空字符序列
- public String(byte[] bytes)使用指定的字符集,将字节数组构成一个字符串.
- public String(byte[] bytes,字符集):使用指定的字符集,将字节数组构造成一个字符串.
- public String(byte[] bytes,int offset,int length):将指定的部分字节数组转换成字符串,参数1:字节数组对象,参数2:指定的角标值 参数3:指定长度
- public String(char[] value):将字符数组构造成一字符串.
- public String(char[] value,int offset,int count):将部分字符数组转换成字符串.
- public String(String original):构造一个字符串,参数为字符串常量.
public class StringDemo {
public static void main(String[] args) {
//测试
String s = new String() ;
System.out.println("s:"+s); //String类重写了Object的toString(),
System.out.println(s.length());
System.out.println("-------------------------------------------");
byte[] bytes = {97,98,99,100,101} ;
// public String(byte[] bytes)
String s2 = new String(bytes) ;
System.out.println(s2);
System.out.println(s2.length());
System.out.println("-------------------------------------------");
//public String(byte[] bytes,int offset,int length):
String s3 = new String(bytes,2,2) ;
System.out.println(s3);
System.out.println(s3.length());
System.out.println("-------------------------------------------");
//public String(char[] value)
char[] chs = {'我','爱','高','圆','圆'} ;
String s4 = new String(chs) ;
System.out.println(s4);
System.out.println(s4.length());
System.out.println("-------------------------------------------");
// public String(char[] value,int offset,int count)
String s5 = new String(chs,1,4) ;
System.out.println(s5);
System.out.println(s5.length());
System.out.println("---------------------------------------------");
// public String(String original)
String s6 = new String("hello") ; //创建字符串对象,常量值:hello
System.out.println(s6);
String s7 = "hello" ; //推荐的方式
System.out.println(s7);
}
}
==链接引用类型时比较的是地址的值,equals默认比较地址值,但是String类重写equals方法后equals比较的就变成了内容是否相同.
String类常用的转换功能:(重点)
- byte[] getBytes() 用于将字符串转换为字节数组,如果方法为孔灿使用平台默认的编码集进行编码.
- byte[] getBytes(String charset) 使用指定的字符集进行编码
- String(byte[] bytes) 使用默认字符集进行编码.
- String(byte[] bytes,指定字符集) 使用指定字符集进行编码.
- (特别注意编码跟解码必须要保证字符集统一).
字符集:
gbk :一个中文两个字节(中国中文编码表)
gb2312:gbk升级版(含义有一个中文字符:中国的中文编码表)
iso-8859-1:拉丁文码表
utf-8:任何的浏览器—>都支持 utf-8格式 (后期统一个)
unicode:国际编码表
JS:*际 电脑系统 一个字符集
Arrays
静态功能:
public static String toString(int/byte/float/double…[] a):将任意类型的数组---->String
public char[] toCharArray():将字符串转换成字符数组
public String toString():返回自己本身—“当前字符串的内容”
public String toUpperCase():将字符串转换成大写
public String toLowerCase():将字符串转换成小写
String类的判断
public boolean equals(Object anObject):比较两个字符的内容是否相同 (区分大小写)
public boolean equalsIgnoreCase(String anotherString):比较两个字符串是否相同(不区分大小写)
public boolean startsWith(String prefix):判断字符串是否以指定的内容开头
public boolean endsWith(String suffix):判断字符串是否以指定的内容结尾
需求:在某个时间点(今天下午18:00 将某个目录下的所有的以.java文件结尾删除)
Java中定时器类:Timer---->定时任务TimerTask(抽象类)
表示文件或者文件夹的抽象路径形式:File类
递归删除 (定义方法删除)
boolean isEmpty() 判断字符串是否为空 :若为空,则返回true;否则返回false
String类的获取功能
int length():获取字符串长度
public char charAt(int index);获取指定索引处的字符
public String concat(String str):将指定的字符串和当前字符串进行拼接,获取一个新的字符串
public int indexOf(int ch):返回指定字符第一次出现的索引值
public int lastIndexOf(int ch):返回值指定字符最后一次出现的索引值
public String[] split(String regex):
拆分功能:通过指定的格式将字符串—拆分字符串数组
public String substring(int beginIndex) :从指定位置开始默认截取到末尾
角标从0开始
public String substring(int beginIndex,int endIndex)
从指定位置开始,截取到位置结束(包前不包右)
只能取到endIndex-1处
public static String valueOf(boolean/int/long/float/double/char…Object b)
万能方法,将任意类型转换String类型
String类的其他功能
public String replace(char target,char replacement):替换功能
将指定的内容使用target字符进行替换
public String replaceAll(String regex, String replacement) :
将指定的和参数1正则表达式匹配的字符串 使用replacement进行替换
参数1:
[0-9] —>如果字符是数字字符
参数2: "*"替换掉
public String trim():去除字符串两端的空格
重点
public int compareTo(String anotherString):按照字典顺序比较,返回值是int
StringBuffer
StringBuffer是字符串缓冲区,它有点类似String,但是最大不同的一点是它是可变的字符序列.
它是线程安全的,线程是依赖于进程存在的,进程是能够被系统资源调用的独立单位.它是线程同步的,也因此执行效率较低.StringBuilder和StringBuffer有着相互兼容的API(Application Programming Interface应用程序接口),但是StringBuffer是不同步,在效率更高的同时弱点就是它的线程不安全.
StringBuffer的构造方法是:
public StringBuffer() :空参构造,创建一个空字符序列的字符串缓冲去 (推荐)
public StringBuffer(int capacity):构造一个字符串缓冲区对象,指定容量大小
public StringBuffer(String str):指定字符序列,长度加上初始容量16(总容量)
StringBuffer同时也具有获取功能:
public int length():获取字符数(长度)
public int capacity():获取字符串缓冲区容量