匿名对象只能使用一次
对于基本类型来说, == 是比较值
对于应用类型来说, ==是比较的地址值
使用super()或this()只能在子类第一个构造方法的第一个分号前使用。且两个不能同时使用。
修饰类:这个类就是太监类,可以有父类,没有子类。
修饰方法:这个方法就不能被覆盖重写
对于类和方法来说,abstract和final不能同时使用。因为abstract必须要子类去覆盖重写
修饰局部变量:变量就不能改变值了
修饰成员变量:用了final之后必须手动复制,系统不会再给默认值了。
throws例
public static void main(String[] args){
ExceptionDemo ed = new ExceptionDemo();
try{
ed.aa(100, 1);
}catch(Exception e){
...
}
}
public void aa(int a,int b) throws Exception{
...
}
throw例
public static void main(String[] args){
ExceptionDemo ed = new ExceptionDemo();
try{
ed.aa(100, 1);
}catch(Exception e){
...
}
}
public void aa(int a,int b) throws Exception{
throw new Exception("throw可以手动抛出异常语句")
}
读取配置文件
public String getValueByKey(String filePath, String key){
Properties pps = new Properties();
try{
//BufferedInputStream对InputStream进行缓存区包装,达到性能优化
InputStream in = new BufferedInputStream(new FileInputStream(filePath));
//从字节输入流中读取键值对
pps.load(in);
//获取文件value
String value = pps.getProperty(key);
return value;
} catch (IOException e){
//在命令行打印异常信息在权程序中出错的位置及原因
e.printStackTrace();
return null;
}
}
往配置文件写东西
public void w(String filePath, String key, String value) throws IOException{
Properties pps = new Properties()
//文件进入输入流
InputStream i = new FileInputStream(filePath);
//从输入流中读取
pps.load(i);
//把输出流n指向filePath
OutputStream o = new FileOutputStream(filePath);
//加载Properties表中的格式
pps.setProperties(key, value);
//将Properties表中的属性列表写入输出流
pps.store(o, "Update "+ key);
}
调用上述方法
public static void main(String[] args) throws IOException{
//获取jvm环境变量“user.dir”定义相对路径
String path = System.getProperty("user.dir")+ "\\data\\";
ProperReadWrite prw = new ProperReadWrite();
//读取文件(key为63.name)
String value = prw.getValueByKey(path + "Users.properties", "63.name")
System.out.println(value);
prw.getAllProperties(path + "Users.properties");
//写入文件
prw.writeProperties("Users.properties", "63.name", "chengdu");
}
下载jxl的jar包:https://www.onlinedown.net/soft/1163870.htm
在项目中新建lib文件夹,把包复制进去,然后’右击项目-properties-java Build Path-Libraries-Add jar-apply
读取excel
public static void readExcel(String fileName) {
File file = new File(fileName);
try {
//输入流:对文件数据以字节的形式进行读取操作
FileInputStream fis = new FileInputStream(file);
//从字节流中读取xls文件(不能读xlsx)
jxl.Workbook r = Workbook.getWorkbook(fis);
//获取excel中所有工作表
Sheet[] sheet = r.getSheets();
for (int i=0; i<sheet.length; i++) {
Sheet s = r.getSheet(i);
//遍历当前工作表中的行
for(int j=0; j<s.getRows(); j++) {
Cell[] cells = s.getRow(j);
//遍历列
for(int k=0; k<cells.length; k++) {
System.out.print(cells[k].getContents());
System.out.print("\t");
}
System.out.println();
}
}
fis.close();
}catch(Exception e) {
//打印异常信息在程序中出错的位置及原因
e.printStackTrace();
}
}
调用读取
public class a01 {
public static void main(String[] args){
String path = System.getProperty("user.dir");
readExcel(path +"\\data\\Students.xls");
}
写入excel
public static void writeExcel() {
WritableWorkbook book = null;
String info[] = {"序号","学号","姓名"};
try {
//创建excel表格
String fileName = System.getProperty("user.dir")+"\\data\\NewStudent.xls";
book = Workbook.createWorkbook(new File(fileName));
//创建工作表
WritableSheet sheet = book.createSheet("NewStudents.xls", 0);
//添加表头
for(int j=0; j<7; j++) {
Label label = new Label(j, 0 , info[j]);
sheet.addCell(label);
}
//添加数据
sheet.addCell(new Label(0, 1, "1"));
sheet.addCell(new Label(1, 1, "20001"));
sheet.addCell(new Label(2, 1, "法海"));
//写入并关闭
book.write();
book.close();
}catch (Exception e) {
e.printStackTrace();
}
}
修改excel
private static void modifyExcel(){
try {
String fileName = System.getProperty("user.dir")+"\\data\\Students.xls";
//获得文件
Workbook wb = Workbook.getWorkbook(new File(fileName));
//打开一个副本文件,并指定数据写回到原文件
WritableWorkbook book = Workbook.createWorkbook(new File(fileName), wb);
//打开目标工作表
WritableSheet sheet = book.getSheet(0);
sheet.addCell(new Label(0, 1, "100"));
//关闭
book.write();
book.close();
}catch(Exception e) {e.printStackTrace();}
}
import java.util.StringTokenizer;
public class d02 {
public static void main(String[] args) {
String s = "[2020][06][01][18][03]";
// 第一个参数是要分隔的s,第二个参数是分隔字符集合
StringTokenizer st = new StringTokenizer(s, "[]");
// hasMoreTokens返回是否还有分隔符
while(st.hasMoreTokens()) {
// 插入每个字符中间的空格
System.out.print(st.nextToken()+" ");
}
}
}
2秒后执行打印
import java.util.Timer;
import java.util.TimerTask;
public class d03 {
//2000毫秒后执行打印
public static void main(String[] args) {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run(){
System.out.print("2秒后执行了");
}
}, 2000);
}
}