java 运算符输入_java-运算符,IO输入输出,文件操作
Java 運(yùn)算符
計(jì)算機(jī)的最基本用途之一就是執(zhí)行數(shù)學(xué)運(yùn)算,作為一門(mén)計(jì)算機(jī)語(yǔ)言,Java也提供了一套豐富的運(yùn)算符來(lái)操縱變量。我們可以把運(yùn)算符分成以下幾組:
算術(shù)運(yùn)算符
關(guān)系運(yùn)算符
位運(yùn)算符
邏輯運(yùn)算符
賦值運(yùn)算符
其他運(yùn)算符
Java 增強(qiáng) for 循環(huán)
Java5 引入了一種主要用于數(shù)組的增強(qiáng)型 for 循環(huán)。
Java 增強(qiáng) for 循環(huán)語(yǔ)法格式如下:
public class Test {
public static void main(String args[]){
int [] numbers = {10, 20, 30, 40, 50};
for(int x : numbers ){
System.out.print( x );
System.out.print(",");
}
System.out.print("\n");
String [] names ={"James", "Larry", "Tom", "Lacy"};
for( String name : names ) {
System.out.print( name );
System.out.print(",");
}
}
}
Java switch case 語(yǔ)句
switch case 語(yǔ)句判斷一個(gè)變量與一系列值中某個(gè)值是否相等,每個(gè)值稱(chēng)為一個(gè)分支。
switch case 語(yǔ)句有如下規(guī)則:
switch 語(yǔ)句中的變量類(lèi)型可以是: byte、short、int 或者 char。從 Java SE 7 開(kāi)始,switch 支持字符串 String 類(lèi)型了,同時(shí) case 標(biāo)簽必須為字符串常量或字面量。
switch 語(yǔ)句可以擁有多個(gè) case 語(yǔ)句。每個(gè) case 后面跟一個(gè)要比較的值和冒號(hào)。
case 語(yǔ)句中的值的數(shù)據(jù)類(lèi)型必須與變量的數(shù)據(jù)類(lèi)型相同,而且只能是常量或者字面常量。
當(dāng)變量的值與 case 語(yǔ)句的值相等時(shí),那么 case 語(yǔ)句之后的語(yǔ)句開(kāi)始執(zhí)行,直到 break 語(yǔ)句出現(xiàn)才會(huì)跳出 switch 語(yǔ)句。
當(dāng)遇到 break 語(yǔ)句時(shí),switch 語(yǔ)句終止。程序跳轉(zhuǎn)到 switch 語(yǔ)句后面的語(yǔ)句執(zhí)行。case 語(yǔ)句不必須要包含 break 語(yǔ)句。如果沒(méi)有 break 語(yǔ)句出現(xiàn),程序會(huì)繼續(xù)執(zhí)行下一條 case 語(yǔ)句,直到出現(xiàn) break 語(yǔ)句。
switch 語(yǔ)句可以包含一個(gè) default 分支,該分支一般是 switch 語(yǔ)句的最后一個(gè)分支(可以在任何位置,但建議在最后一個(gè))。default 在沒(méi)有 case 語(yǔ)句的值和變量值相等的時(shí)候執(zhí)行。default 分支不需要 break 語(yǔ)句。
如果 case 語(yǔ)句塊中沒(méi)有 break 語(yǔ)句時(shí),匹配成功后,從當(dāng)前 case 開(kāi)始,后續(xù)所有 case 的值都會(huì)輸出。如果后續(xù)的 case 語(yǔ)句塊有 break 語(yǔ)句則會(huì)跳出判斷。
public class Test {
public static void main(String args[]){
//char grade = args[0].charAt(0);
char grade = 'C';
switch(grade)
{
case 'A' :
System.out.println("優(yōu)秀");
break;
case 'B' :
case 'C' :
System.out.println("良好");
break;
case 'D' :
System.out.println("及格");
break;
case 'F' :
System.out.println("你需要再努力努力");
break;
default :
System.out.println("未知等級(jí)");
}
System.out.println("你的等級(jí)是 " + grade);
}
}
Java StringBuffer 和 StringBuilder 類(lèi)
當(dāng)對(duì)字符串進(jìn)行修改的時(shí)候,需要使用 StringBuffer 和 StringBuilder 類(lèi)。
和 String 類(lèi)不同的是,StringBuffer 和 StringBuilder 類(lèi)的對(duì)象能夠被多次的修改,并且不產(chǎn)生新的未使用對(duì)象。
StringBuilder 類(lèi)在 Java 5 中被提出,它和 StringBuffer 之間的最大不同在于 StringBuilder 的方法不是線程安全的(不能同步訪問(wèn))。
由于 StringBuilder 相較于 StringBuffer 有速度優(yōu)勢(shì),所以多數(shù)情況下建議使用 StringBuilder 類(lèi)。然而在應(yīng)用程序要求線程安全的情況下,則必須使用 StringBuffer 類(lèi)。
Java 數(shù)組
數(shù)組對(duì)于每一門(mén)編程語(yǔ)言來(lái)說(shuō)都是重要的數(shù)據(jù)結(jié)構(gòu)之一,當(dāng)然不同語(yǔ)言對(duì)數(shù)組的實(shí)現(xiàn)及處理也不盡相同。
Java 語(yǔ)言中提供的數(shù)組是用來(lái)存儲(chǔ)固定大小的同類(lèi)型元素。
你可以聲明一個(gè)數(shù)組變量,如 numbers[100] 來(lái)代替直接聲明 100 個(gè)獨(dú)立變量 number0,number1,....,number99。
本教程將為大家介紹 Java 數(shù)組的聲明、創(chuàng)建和初始化,并給出其對(duì)應(yīng)的代碼。
For-Each 循環(huán)
JDK 1.5 引進(jìn)了一種新的循環(huán)類(lèi)型,被稱(chēng)為 For-Each 循環(huán)或者加強(qiáng)型循環(huán),它能在不使用下標(biāo)的情況下遍歷數(shù)組。
語(yǔ)法格式如下:
public class TestArray {
public static void main(String[] args) {
double[] myList = {1.9, 2.9, 3.4, 3.5};
// 打印所有數(shù)組元素
for (double element: myList) {
System.out.println(element);
}
}
}
多維數(shù)組的動(dòng)態(tài)初始化(以二維數(shù)組為例)
二維數(shù)組 a 可以看成一個(gè)兩行三列的數(shù)組。
2. 從最高維開(kāi)始,分別為每一維分配空間,例如:
String s[][] = new String[2][];
s[0] = new String[2];
s[1] = new String[3];
s[0][0] = new String("Good");
s[0][1] = new String("Luck");
s[1][0] = new String("to");
s[1][1] = new String("you");
s[1][2] = new String("!");
解析:
s[0]=new String[2]?和?s[1]=new String[3]?是為最高維分配引用空間,也就是為最高維限制其能保存數(shù)據(jù)的最長(zhǎng)的長(zhǎng)度,然后再為其每個(gè)數(shù)組元素單獨(dú)分配空間?s0=new String("Good")?等操作。
解析字符串為時(shí)間
SimpleDateFormat 類(lèi)有一些附加的方法,特別是parse(),它試圖按照給定的SimpleDateFormat 對(duì)象的格式化存儲(chǔ)來(lái)解析字符串。例如:
import java.util.*;
import java.text.*;
public class DateDemo {
public static void main(String args[]) {
SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd");
String input = args.length == 0 ? "1818-11-11" : args[0];
System.out.print(input + " Parses as ");
Date t;
try {
t = ft.parse(input);
System.out.println(t);
} catch (ParseException e) {
System.out.println("Unparseable using " + ft);
}
}
}
結(jié)果:
$ java DateDemo
1818-11-11 Parses as Wed Nov 11 00:00:00 GMT 1818
$ java DateDemo 2007-12-01
2007-12-01 Parses as Sat Dec 01 00:00:00 GMT 2007
Calendar類(lèi)
我們現(xiàn)在已經(jīng)能夠格式化并創(chuàng)建一個(gè)日期對(duì)象了,但是我們?nèi)绾尾拍茉O(shè)置和獲取日期數(shù)據(jù)的特定部分呢,比如說(shuō)小時(shí),日,或者分鐘? 我們又如何在日期的這些部分加上或者減去值呢? 答案是使用Calendar 類(lèi)。
Calendar類(lèi)的功能要比Date類(lèi)強(qiáng)大很多,而且在實(shí)現(xiàn)方式上也比Date類(lèi)要復(fù)雜一些。
Calendar類(lèi)是一個(gè)抽象類(lèi),在實(shí)際使用時(shí)實(shí)現(xiàn)特定的子類(lèi)的對(duì)象,創(chuàng)建對(duì)象的過(guò)程對(duì)程序員來(lái)說(shuō)是透明的,只需要使用getInstance方法創(chuàng)建即可。
創(chuàng)建一個(gè)指定日期的Calendar對(duì)象
使用Calendar類(lèi)代表特定的時(shí)間,需要首先創(chuàng)建一個(gè)Calendar的對(duì)象,然后再設(shè)定該對(duì)象中的年月日參數(shù)來(lái)完成。
//創(chuàng)建一個(gè)代表2009年6月12日的Calendar對(duì)象
Calendar c1 = Calendar.getInstance();
c1.set(2009, 6 - 1, 12);
方法的重載
上面使用的max方法僅僅適用于int型數(shù)據(jù)。但如果你想得到兩個(gè)浮點(diǎn)類(lèi)型數(shù)據(jù)的最大值呢?
解決方法是創(chuàng)建另一個(gè)有相同名字但參數(shù)不同的方法,如下面代碼所示:
public static double max(double num1, double num2) {
if (num1 > num2)
return num1;
else
return num2;
}
如果你調(diào)用max方法時(shí)傳遞的是int型參數(shù),則 int型參數(shù)的max方法就會(huì)被調(diào)用;
如果傳遞的是double型參數(shù),則double類(lèi)型的max方法體會(huì)被調(diào)用,這叫做方法重載;
就是說(shuō)一個(gè)類(lèi)的兩個(gè)方法擁有相同的名字,但是有不同的參數(shù)列表。
Java編譯器根據(jù)方法簽名判斷哪個(gè)方法應(yīng)該被調(diào)用。
方法重載可以讓程序更清晰易讀。執(zhí)行密切相關(guān)任務(wù)的方法應(yīng)該使用相同的名字。
重載的方法必須擁有不同的參數(shù)列表。你不能僅僅依據(jù)修飾符或者返回類(lèi)型的不同來(lái)重載方法。
構(gòu)造方法
當(dāng)一個(gè)對(duì)象被創(chuàng)建時(shí)候,構(gòu)造方法用來(lái)初始化該對(duì)象。構(gòu)造方法和它所在類(lèi)的名字相同,但構(gòu)造方法沒(méi)有返回值。
通常會(huì)使用構(gòu)造方法給一個(gè)類(lèi)的實(shí)例變量賦初值,或者執(zhí)行其它必要的步驟來(lái)創(chuàng)建一個(gè)完整的對(duì)象。
不管你是否自定義構(gòu)造方法,所有的類(lèi)都有構(gòu)造方法,因?yàn)镴ava自動(dòng)提供了一個(gè)默認(rèn)構(gòu)造方法,默認(rèn)構(gòu)造方法的訪問(wèn)修改符和類(lèi)的訪問(wèn)修改符相同(類(lèi)為 public,構(gòu)造函數(shù)也為 public;類(lèi)改為 private,構(gòu)造函數(shù)也改為 private)。
一旦你定義了自己的構(gòu)造方法,默認(rèn)構(gòu)造方法就會(huì)失效。
可變參數(shù)
JDK 1.5 開(kāi)始,Java支持傳遞同類(lèi)型的可變參數(shù)給一個(gè)方法。
方法的可變參數(shù)的聲明如下所示
在方法聲明中,在指定參數(shù)類(lèi)型后加一個(gè)省略號(hào)(...) 。
一個(gè)方法中只能指定一個(gè)可變參數(shù),它必須是方法的最后一個(gè)參數(shù)。任何普通的參數(shù)必須在它之前聲明。
public class VarargsDemo {
public static void main(String args[]) {
// 調(diào)用可變參數(shù)的方法
printMax(34, 3, 3, 2, 56.5);
printMax(new double[]{1, 2, 3});
}
public static void printMax( double... numbers) {
if (numbers.length == 0) {
System.out.println("No argument passed");
return;
}
double result = numbers[0];
for (int i = 1; i < numbers.length; i++){
if (numbers[i] > result) {
result = numbers[i];
}
}
System.out.println("The max value is " + result);
}
}
finalize() 方法
Java 允許定義這樣的方法,它在對(duì)象被垃圾收集器析構(gòu)(回收)之前調(diào)用,這個(gè)方法叫做 finalize( ),它用來(lái)清除回收對(duì)象。
例如,你可以使用 finalize() 來(lái)確保一個(gè)對(duì)象打開(kāi)的文件被關(guān)閉了。
在 finalize() 方法里,你必須指定在對(duì)象銷(xiāo)毀時(shí)候要執(zhí)行的操作。
public class FinalizationDemo {
public static void main(String[] args) {
Cake c1 = new Cake(1);
Cake c2 = new Cake(2);
Cake c3 = new Cake(3);
c2 = c3 = null;
System.gc(); //調(diào)用Java垃圾收集器
}
}
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");
}
}
Java 流(Stream)、文件(File)和IO
Java.io 包幾乎包含了所有操作輸入、輸出需要的類(lèi)。所有這些流類(lèi)代表了輸入源和輸出目標(biāo)。
Java.io 包中的流支持很多種格式,比如:基本類(lèi)型、對(duì)象、本地化字符集等等。
一個(gè)流可以理解為一個(gè)數(shù)據(jù)的序列。輸入流表示從一個(gè)源讀取數(shù)據(jù),輸出流表示向一個(gè)目標(biāo)寫(xiě)數(shù)據(jù)。
Java 為 I/O 提供了強(qiáng)大的而靈活的支持,使其更廣泛地應(yīng)用到文件傳輸和網(wǎng)絡(luò)編程中。
但本節(jié)講述最基本的和流與 I/O 相關(guān)的功能。我們將通過(guò)一個(gè)個(gè)例子來(lái)學(xué)習(xí)這些功能。
讀取控制臺(tái)輸入
Java 的控制臺(tái)輸入由 System.in 完成。
為了獲得一個(gè)綁定到控制臺(tái)的字符流,你可以把 System.in 包裝在一個(gè) BufferedReader 對(duì)象中來(lái)創(chuàng)建一個(gè)字符流。
下面是創(chuàng)建 BufferedReader 的基本語(yǔ)法:
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
從控制臺(tái)讀取多字符輸入
從 BufferedReader 對(duì)象讀取一個(gè)字符要使用 read() 方法,它的語(yǔ)法如下:vintread()throwsIOException
每次調(diào)用 read() 方法,它從輸入流讀取一個(gè)字符并把該字符作為整數(shù)值返回。 當(dāng)流結(jié)束的時(shí)候返回 -1。該方法拋出 IOException。
下面的程序示范了用 read() 方法從控制臺(tái)不斷讀取字符直到用戶(hù)輸入 "q"。
//使用 BufferedReader 在控制臺(tái)讀取字符
import java.io.*;
public class BRRead {
public static void main(String args[]) throws IOException {
char c;
// 使用 System.in 創(chuàng)建 BufferedReader
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("輸入字符, 按下 'q' 鍵退出。");
// 讀取字符
do {
c = (char) br.read();
System.out.println(c);
} while (c != 'q');
}
}
Java 流(Stream)、文件(File)和IO
Java.io 包幾乎包含了所有操作輸入、輸出需要的類(lèi)。所有這些流類(lèi)代表了輸入源和輸出目標(biāo)。
Java.io 包中的流支持很多種格式,比如:基本類(lèi)型、對(duì)象、本地化字符集等等。
一個(gè)流可以理解為一個(gè)數(shù)據(jù)的序列。輸入流表示從一個(gè)源讀取數(shù)據(jù),輸出流表示向一個(gè)目標(biāo)寫(xiě)數(shù)據(jù)。
Java 為 I/O 提供了強(qiáng)大的而靈活的支持,使其更廣泛地應(yīng)用到文件傳輸和網(wǎng)絡(luò)編程中。
但本節(jié)講述最基本的和流與 I/O 相關(guān)的功能。我們將通過(guò)一個(gè)個(gè)例子來(lái)學(xué)習(xí)這些功能。
讀取控制臺(tái)輸入
Java 的控制臺(tái)輸入由 System.in 完成。
為了獲得一個(gè)綁定到控制臺(tái)的字符流,你可以把 System.in 包裝在一個(gè) BufferedReader 對(duì)象中來(lái)創(chuàng)建一個(gè)字符流。
從 BufferedReader 對(duì)象讀取一個(gè)字符要使用 read() 方法,
import java.io.*;
public class BRRead {
public static void main(String args[]) throws IOException {
char c;
// 使用 System.in 創(chuàng)建 BufferedReader
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("輸入字符, 按下 'q' 鍵退出。");
// 讀取字符
do {
c = (char) br.read();
System.out.println(c);
} while (c != 'q');
}
}
從控制臺(tái)讀取字符串
從標(biāo)準(zhǔn)輸入讀取一個(gè)字符串需要使用 BufferedReader 的 readLine() 方法。
import java.io.*;
public class BRReadLines {
public static void main(String args[]) throws IOException {
// 使用 System.in 創(chuàng)建 BufferedReader
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str;
System.out.println("Enter lines of text.");
System.out.println("Enter 'end' to quit.");
do {
str = br.readLine();
System.out.println(str);
} while (!str.equals("end"));
}
}
FileInputStream
該流用于從文件讀取數(shù)據(jù),它的對(duì)象可以用關(guān)鍵字 new 來(lái)創(chuàng)建。
有多種構(gòu)造方法可用來(lái)創(chuàng)建對(duì)象。
可以使用字符串類(lèi)型的文件名來(lái)創(chuàng)建一個(gè)輸入流對(duì)象來(lái)讀取文件:
InputStreamf= newFileInputStream("C:/java/hello");
也可以使用一個(gè)文件對(duì)象來(lái)創(chuàng)建一個(gè)輸入流對(duì)象來(lái)讀取文件。我們首先得使用 File() 方法來(lái)創(chuàng)建一個(gè)文件對(duì)象:
Filef= newFile("C:/java/hello");
InputStreamout= newFileInputStream(f);
FileOutputStream
該類(lèi)用來(lái)創(chuàng)建一個(gè)文件并向文件中寫(xiě)數(shù)據(jù)。
如果該流在打開(kāi)文件進(jìn)行輸出前,目標(biāo)文件不存在,那么該流會(huì)創(chuàng)建該文件。
有兩個(gè)構(gòu)造方法可以用來(lái)創(chuàng)建 FileOutputStream 對(duì)象。
使用字符串類(lèi)型的文件名來(lái)創(chuàng)建一個(gè)輸出流對(duì)象:
OutputStreamf= newFileOutputStream("C:/java/hello");
也可以使用一個(gè)文件對(duì)象來(lái)創(chuàng)建一個(gè)輸出流來(lái)寫(xiě)文件。我們首先得使用File()方法來(lái)創(chuàng)建一個(gè)文件對(duì)象:
Filef= newFile("C:/java/hello");
OutputStreamf= newFileOutputStream(f);
import java.io.*;
public class fileStreamTest {
public static void main(String args[]) {
try {
byte bWrite[] = { 11, 21, 3, 40, 5 };
OutputStream os = new FileOutputStream("test.txt");
for (int x = 0; x < bWrite.length; x++) {
os.write(bWrite[x]); // writes the bytes
}
os.close();
InputStream is = new FileInputStream("test.txt");
int size = is.available();
for (int i = 0; i < size; i++) {
System.out.print((char) is.read() + " ");
}
is.close();
} catch (IOException e) {
System.out.print("Exception");
}
}
}
上面的程序首先創(chuàng)建文件test.txt,并把給定的數(shù)字以二進(jìn)制形式寫(xiě)進(jìn)該文件,同時(shí)輸出到控制臺(tái)上。
以上代碼由于是二進(jìn)制寫(xiě)入,可能存在亂碼,你可以使用以下代碼實(shí)例來(lái)解決亂碼問(wèn)題:
import java.io.*;
public class fileStreamTest2 {
public static void main(String[] args) throws IOException {
File f = new File("a.txt");
FileOutputStream fop = new FileOutputStream(f);
// 構(gòu)建FileOutputStream對(duì)象,文件不存在會(huì)自動(dòng)新建
OutputStreamWriter writer = new OutputStreamWriter(fop, "UTF-8");
// 構(gòu)建OutputStreamWriter對(duì)象,參數(shù)可以指定編碼,默認(rèn)為操作系統(tǒng)默認(rèn)編碼,windows上是gbk
writer.append("中文輸入");
// 寫(xiě)入到緩沖區(qū)
writer.append("\r\n");
// 換行
writer.append("English");
// 刷新緩存沖,寫(xiě)入到文件,如果下面已經(jīng)沒(méi)有寫(xiě)入的內(nèi)容了,直接close也會(huì)寫(xiě)入
writer.close();
// 關(guān)閉寫(xiě)入流,同時(shí)會(huì)把緩沖區(qū)內(nèi)容寫(xiě)入文件,所以上面的注釋掉
fop.close();
// 關(guān)閉輸出流,釋放系統(tǒng)資源
FileInputStream fip = new FileInputStream(f);
// 構(gòu)建FileInputStream對(duì)象
InputStreamReader reader = new InputStreamReader(fip, "UTF-8");
// 構(gòu)建InputStreamReader對(duì)象,編碼與寫(xiě)入相同
StringBuffer sb = new StringBuffer();
while (reader.ready()) {
sb.append((char) reader.read());
// 轉(zhuǎn)成char加到StringBuffer對(duì)象中
}
System.out.println(sb.toString());
reader.close();
// 關(guān)閉讀取流
fip.close();
// 關(guān)閉輸入流,釋放系統(tǒng)資源
}
}
Java中的目錄
創(chuàng)建目錄:
File類(lèi)中有兩個(gè)方法可以用來(lái)創(chuàng)建文件夾:
mkdir( )方法創(chuàng)建一個(gè)文件夾,成功則返回true,失敗則返回false。失敗表明File對(duì)象指定的路徑已經(jīng)存在,或者由于整個(gè)路徑還不存在,該文件夾不能被創(chuàng)建。
mkdirs()方法創(chuàng)建一個(gè)文件夾和它的所有父文件夾。
import java.io.File;
public class CreateDir {
public static void main(String args[]) {
String dirname = "/tmp/user/java/bin";
File d = new File(dirname);
// 現(xiàn)在創(chuàng)建目錄
d.mkdirs();
}
}
編譯并執(zhí)行上面代碼來(lái)創(chuàng)建目錄 "/tmp/user/java/bin"。
注意:?Java 在 UNIX 和 Windows 自動(dòng)按約定分辨文件路徑分隔符。如果你在 Windows 版本的 Java 中使用分隔符 (/) ,路徑依然能夠被正確解析。
讀取目錄
一個(gè)目錄其實(shí)就是一個(gè) File 對(duì)象,它包含其他文件和文件夾。
如果創(chuàng)建一個(gè) File 對(duì)象并且它是一個(gè)目錄,那么調(diào)用 isDirectory() 方法會(huì)返回 true。
可以通過(guò)調(diào)用該對(duì)象上的 list() 方法,來(lái)提取它包含的文件和文件夾的列表。
下面展示的例子說(shuō)明如何使用 list() 方法來(lái)檢查一個(gè)文件夾中包含的內(nèi)容:
import java.io.File;
public class DirList {
public static void main(String args[]) {
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] + " 是一個(gè)目錄");
} else {
System.out.println(s[i] + " 是一個(gè)文件");
}
}
} else {
System.out.println(dirname + " 不是一個(gè)目錄");
}
}
}
刪除目錄或文件
刪除文件可以使用?java.io.File.delete()?方法。
以下代碼會(huì)刪除目錄?/tmp/java/,需要注意的是當(dāng)刪除某一目錄時(shí),必須保證該目錄下沒(méi)有其他文件才能正確刪除,否則將刪除失敗。
測(cè)試目錄結(jié)構(gòu):
import java.io.File;
public class DeleteFileDemo {
public static void main(String args[]) {
// 這里修改為自己的測(cè)試目錄
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 Scanner 類(lèi)
java.util.Scanner 是 Java5 的新特征,我們可以通過(guò) Scanner 類(lèi)來(lái)獲取用戶(hù)的輸入。
下面是創(chuàng)建 Scanner 對(duì)象的基本語(yǔ)法:Scanners= newScanner(System.in);
接下來(lái)我們演示一個(gè)最簡(jiǎn)單的數(shù)據(jù)輸入,并通過(guò) Scanner 類(lèi)的 next() 與 nextLine() 方法獲取輸入的字符串,在讀取前我們一般需要 使用 hasNext 與 hasNextLine 判斷是否還有輸入的數(shù)據(jù):
其中:hasNext()方法包含判斷和輸入兩個(gè)操作步驟
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// 從鍵盤(pán)接收數(shù)據(jù)
// next方式接收字符串
System.out.println("next方式接收:");
// 判斷是否還有輸入
if (scan.hasNext()) {
String str1 = scan.next();
System.out.println("輸入的數(shù)據(jù)為:" + str1);
}
scan.close();
}
}
結(jié)果:
$ javac ScannerDemo.java
$ java ScannerDemonext方式接收:runoob com
輸入的數(shù)據(jù)為:runoob
使用 nextLine 方法:
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// 從鍵盤(pán)接收數(shù)據(jù)
// nextLine方式接收字符串
System.out.println("nextLine方式接收:");
// 判斷是否還有輸入
if (scan.hasNextLine()) {
String str2 = scan.nextLine();
System.out.println("輸入的數(shù)據(jù)為:" + str2);
}
scan.close();
}
}
結(jié)果:
$ javac ScannerDemo.java
$ java ScannerDemonextLine方式接收:runoob com
輸入的數(shù)據(jù)為:runoob com
next() 與 nextLine() 區(qū)別
next():
1、一定要讀取到有效字符后才可以結(jié)束輸入。
2、對(duì)輸入有效字符之前遇到的空白,next() 方法會(huì)自動(dòng)將其去掉。
3、只有輸入有效字符后才將其后面輸入的空白作為分隔符或者結(jié)束符。
next() 不能得到帶有空格的字符串。
nextLine():
1、以Enter為結(jié)束符,也就是說(shuō) nextLine()方法返回的是輸入回車(chē)之前的所有字符。
2、可以獲得空白。
如果要輸入 int 或 float 類(lèi)型的數(shù)據(jù),在 Scanner 類(lèi)中也有支持,但是在輸入之前最好先使用 hasNextXxx() 方法進(jìn)行驗(yàn)證,再使用 nextXxx() 來(lái)讀取:
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// 從鍵盤(pán)接收數(shù)據(jù)
int i = 0;
float f = 0.0f;
System.out.print("輸入整數(shù):");
if (scan.hasNextInt()) {
// 判斷輸入的是否是整數(shù)
i = scan.nextInt();
// 接收整數(shù)
System.out.println("整數(shù)數(shù)據(jù):" + i);
} else {
// 輸入錯(cuò)誤的信息
System.out.println("輸入的不是整數(shù)!");
}
System.out.print("輸入小數(shù):");
if (scan.hasNextFloat()) {
// 判斷輸入的是否是小數(shù)
f = scan.nextFloat();
// 接收小數(shù)
System.out.println("小數(shù)數(shù)據(jù):" + f);
} else {
// 輸入錯(cuò)誤的信息
System.out.println("輸入的不是小數(shù)!");
}
scan.close();
}
}
結(jié)果:
$ javac ScannerDemo.java
$ java ScannerDemo輸入整數(shù):12整數(shù)數(shù)據(jù):12輸入小數(shù):1.2小數(shù)數(shù)據(jù):1.2
總結(jié)
以上是生活随笔為你收集整理的java 运算符输入_java-运算符,IO输入输出,文件操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: “雨馀蝉声歇”下一句是什么
- 下一篇: 1012. 数字分类 java_PAT-