您的位置:首页 > 编程语言 > Java开发

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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息