java总结小知识2
2018-01-27 14:00
330 查看
可变参数
JDK 1.5 开始,Java支持传递同类型的可变参数给一个方法。方法的可变参数的声明如下所示:
typeName...parameterName
在方法声明中,在指定参数类型后加一个省略号(...) 。
一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。
实例
package lianxi; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class testClass { public static void printMax(double... num) { if(num.length == 0) System.out.println("NO"); double numMax = num[0]; for(double i: num) { if(i>numMax) numMax = i; } System.out.println(numMax); } public static void main(String args[]) { printMax(30.0,50.0,100,99); } }
finalize() 方法
Java 允许定义这样的方法,它在对象被垃圾收集器析构(回收)之前调用,这个方法叫做 finalize( ),它用来清除回收对象。例如,你可以使用 finalize() 来确保一个对象打开的文件被关闭了。
在 finalize() 方法里,你必须指定在对象销毁时候要执行的操作。
finalize() 一般格式是:
protectedvoidfinalize(){//
在这里终结代码}
关键字 protected 是一个限定符,它确保 finalize() 方法不会被该类以外的代码调用。
当然,Java 的内存回收可以由 JVM 来自动完成。如果你手动使用,则可以使用上面的方法。
实例
package lianxi; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; class Cake extends Object{ private int id; public Cake(int id) { this.id = id; System.out.println("Cake Object " + id + "is created"); } protected void finalize() throws java.lang.Throwable{ super.finalize(); System.out.println("Cake Object " + id + "is disposed"); } } public class testClass { public static void main(String args[]) { Cake cakeOne = new Cake(1); Cake cakeTwo = new Cake(2); Cake cakeThree = new Cake(3); cakeOne = cakeTwo = null; System.gc();//调用java的垃圾收集器; } }
Cake Object 1is created Cake Object 2is created Cake Object 3is created Cake Object 1is disposed Cake Object 2is disposed
创建控制台读取字符
从 BufferedReader 对象读取一个字符要使用 read() 方法,它的语法如下:
int
read(
)
throws
IOException
每次调用 read() 方法,它从输入流读取一个字符并把该字符作为整数值返回。 当流结束的时候返回 -1。该方法抛出 IOException。
下面的程序示范了用 read() 方法从控制台不断读取字符直到用户输入 "q"。
package lianxi; import java.io.*; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class testClass { public static void main(String args[]) throws IOException { char c; /*使用System.in创建BufferedReader*/ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); do { c = (char) br.read(); System.out.println(c); } while(c != 'q'); } }
读取字符串需要用readline方法
package lianxi;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class testClass {
public static void main(String args[]) throws IOException
{
String c;
/*使用System.in创建BufferedReader*/
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
do {
c = br.readLine();
System.out.println(c);
} while(!c.equals("end"));
}
}
FileOutputStream
使用字符串类型的文件名来创建一个输出流对象:OutputStream
f =
new
FileOutputStream("C:/java/hello")
也可以使用一个文件对象来创建一个输出流来写文件。我们首先得使用File()方法来创建一个文件对象:
File
f =
new
File("C:/java/hello");OutputStream
f =
new
FileOutputStream(f);
package lianxi; import java.io.*; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class testClass { public static void main(String args[]) throws IOException { try { byte[] b = {1,22,3,5,6}; OutputStream os = new FileOutputStream("E:/Sharing/test.text"); for(int x=0; x < b.length; x++) os.write(b[x]); os.close(); InputStream is = new FileInputStream("E:/Sharing/test.text"); int size = is.available(); for(int i=0; i<size; i++) System.out.printf((char)is.read(b) + " "); is.close(); }catch(IOException e){ System.out.println("exception"); } } }
上述代码因为是二进制输入,所以会出现乱码,下面是用utf-8格式解决这个问题
package lianxi;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class testClass {
public static void main(String args[]) throws IOException
{
File f = new File("a.text");
FileOutputStream fop = new FileOutputStream(f);
//构建一个文件输出流对象,文件不会自动新建
OutputStreamWriter write = new OutputStreamWriter(fop,"UTF-8");
write.append("中文输入");//写入到缓冲区
write.append("\r\n");
write.append("English");
write.close();
fop.close();
FileInputStream fip = new FileInputStream(f);
InputStreamReader reader = new InputStreamReader(fip, "UTF-8");
StringBuffer sb = new StringBuffer();
while(reader.ready()) {
sb.append((char) reader.read());
}
System.out.println(sb.toString());
reader.close();
fip.close();
}
}
创建目录:
import java.io.File; public class CreateDir { public static void main(String args[]) { String dirname = "/tmp/user/java/bin"; File d = new File(dirname); // 现在创建目录 d.mkdirs(); } }
读取目录
package lianxi; import java.io.*; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class testClass { public static void main(String args[]) throws IOException { String dirname = "/tmp"; File f1 = new File(dirname); if(f1.isDirectory())//判断是否为目录对象 { System.out.println("目录" + dirname); String s[] = f1.list();//提取他包含的文件和文件夹列表 for(int i=0; i<s.length; i++) { File f = new File(dirname + '/' + s[i]); if(f.isDirectory()) { System.out.println(s[i] + " 是一个目录"); } else { System.out.println(s[i] + "是一个文件"); } } } else { System.out.println(dirname + "不是一个目录"); } } }
删除目录或文件
import java.io.File; public class DeleteFileDemo { public static void main(String args[]) { // 这里修改为自己的测试目录 File folder = new File("/tmp/java/"); deleteFolder(folder); } //删除文件及目录 public static void deleteFolder(File folder) { File[] files = folder.listFiles(); if(files!=null) { for(File f: files) { if(f.isDirectory()) { deleteFolder(f); } else { f.delete(); } } } folder.delete(); } }
相关文章推荐
- java总结小知识3
- java总结小知识3
- JAVA学习总结
- JniHelper调用java静态和非静态方法总结(即cocos2dx中调用android平台下显示第三方广告)
- java中调用dll总结
- Java各个知识点详解总结
- Java中守护线程的总结
- java中线程与进程的一些总结
- java设计模式--基础思想总结--抽象类与架构设计思想
- Java中守护线程的总结
- java代码重构总结1
- java程序性能优化技巧总结
- [Java面试三]JavaWeb基础知识总结.
- Java项目经验面试总结
- java基础学习总结——对象转型
- 关于JavaWeb拦截访问一点总结。
- JAVA基础 - final关键字简单总结
- java提高篇(八)-----equals()方法总结
- Java基础知识总结 1(绝对经典)
- java研发常见问题总结 1