Java学习笔记(二)
紧接着Java学习笔记一来写的,由于是入门课,所以学的内容很基础。
(三)、Java中的接口与内部类:
为了弥补java的不支持多继承,所以Java通过接口来实现多继承。
–使用关键字interface来声明一个接口
格式: interface 接口的名字
•接口定义与类定义的区别:
–成员变量部分:接口中只能定义常量
•每个成员都默认是public static final,无法改变
•也正因为如此,上述关键字可以省略
–方法部分:接口中只能定义抽象方法
•每个方法都默认是public abstract,无法改变。因此,接口体中只进行方法的声明,不许提供方法的实现
•也正因为如此,上述关键字可以省略
–类通过使用关键字implements声明使用一个或多个接口;多个接口之间用逗号隔开。如:
class A implements Printable,Addable
–如果一个类使用了某个接口,那么必须实现该接口的所有方法,否则,该类必须是抽象类
注意:实现接口方法时,必须加上public
(四)、Java中的异常
所谓异常就是指程序运行时可能出现的一些错误 –出现异常时,JVM就用异常类Exception的相应子类创建一个异常对象,并等待处理。例如:读取一个不存在的文件时,会产生一个IOException对象
•Java中声明了很多异常类,每个异常类都代表了一种运行错误,异常类的对象可以调用如下方法得到或输出有关异常的信息:
public String getMessage() //异常类的消息
public void printStackTrace() //错误方法栈
public String toString() //异常类的描述
•异常的处理方法有两种:
–“throws/throw”语句抛出异常,表示执行某方法时发生了异常,由程序员定义解决位置和方法;
–“try—catch”块捕获异常,程序员在catch块中进行相应的处理
–抛出异常:
•throw:出现在方法体中,程序员在可能出现异常的代码处手动抛出异常,throw后的语句不再执行
•throws:出现在方法声明中,描述该方法在执行时可能发生的异常
–catch语句:对异常的处理语句放在 catch部分,可以包含多个catch语句,分别处理发生的相应异常,通常会用到两个方法:
•getMessage() :返回一个字符串对发生的异常进行描述。
•printStackTrace() :给出方法的调用序列,一直到异常的产生位置
Class类的特点
–java.lang包中的类,该类的实例用来封装对象运行时的状态
–Class类本身不提供构造方法,因此,不能使用new运算符和构造方法显式地创建一个Class对象。当一个类被加载且创建对象时,和该类相关的一个类型为Class的对象就会自动创建
–任何对象调用getClass()方法都可以获取和该对象相关的一个Class对象,这个Class对象可以获取所属类的有关信息
(五)字符串
判断字符串空串:
①s.equals("")
②s.length() < 1
③s.isEmpty()
•startsWith(String s)
–判断字符串的前缀是否是指定字符串s
•endsWith(String s)
–判断字符串的后缀是否是指定字符串s
•regionMatches(int firstStart, String other, int ortherStart, int length)
–从当前字符串firstStart指定的位置开始,取长度为length的一个子串1;
–other是比较字符串,从othertStart指定的位置开始,取长度为length的另一个子串2;
–如果两个子串相同则返回true,否则返回false。
•compareTo(String s)
–当前字符串与s相同,返回值0;
–当前字符串大于s,返回正值;
当前字符串小于s,返回负值
•int indexOf (String s)
–查找子串s的出现位置,并返回首次出现的位置;
如果未包含子串s,则返回-1
•lastIndexOf (String s)
–查找子串s的出现位置,并返回最后出现的位置;
–如果未包含子串s,则返回-1。
•substring(int startpoint)
–获取子串,该子串从startpoint开始到串末尾
•重载方法:substring(int start ,int end)
–获取子串,该子串从start开始到end
注意:不包括end处的字符,例如:
•replaceAll(String oldString , String newString)
–用newString替换oldString
•public String trim()
–去掉字符串前后的空格
•String[] split(String reg)
–以reg作为分隔符,获取分隔后的字符串数组
大小写转换:toUpperCase()方法将Srtring转换为大写
toLowerCase()方法将String转换为小写
StringTokenizer类
–StringBuffer类的方法
append():追加字符串,有许多重载方法
如:append(String s)
–charAt(int n):获取指定位置字符
–void setCharAt(int n,char c):替换指定字符
StringBuffer insert(int n,String s):插入字符串
–使用Calendar类的static方法getInstance()可以初始化一个日历对象,默认指向当前时间,如:
Calendar c = Calendar.getInstance();
Calendar calendar=Calendar.getInstance();
int year = calendar.get(Calendar.YEAR),
month = calendar.get(Calendar.MONTH)+1,
Random random=new Random();
random.nextInt(); //返回一个随机整数值
random.nextInt(100); //返回一个[0, 100)之间的随机数
random.nextBoolean(); //返回一个随机boolean值
•先使用exists()方法判断文件是否存在
•再使用canRead()/canWrite()方法判断文件权限
import java.io.*;
class MyFileReader {
String read(String fileName, int n) {
String str = null;
File file = new File(fileName);
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(file));
}
catch(IOException e){
}
for(int line=1;line<=n;line++) {
try {
str = reader.readLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return str;
}
}
线程:
class A extends Thread{
String value;
public void setValue(String value) {
this.value = value;
}
public void run() {
for(int i=0;i<value.length();i++){
System.out.print(value.charAt(i));
try {
Thread.sleep(270);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
Netbeans快捷键:导入所需包:ctrl+shift+i