package day7;import java.util.Calendar;import java.util.Date;/** * java.util.Calendar類 * 推薦使用處理日期和時間的類Calendar * 是抽象類別,不能執行個體化,通過static Calendar getInstance() 獲得一個Calendar對象 * int get(int field):返回指定日曆欄位值 */public class CalendarDemo {public static
練習1:編寫一個方法判斷給定的字串是否為全數字組合練習2:編寫一個方法判斷給定的字串是否為電話號碼package day7;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * java.util.regex包 * Pattern類主要是編寫Regex規範; * Matcher類主要是執行規範,驗證字串是否符合其規範; */public class RegexDemo {public static void
建立線程:(1)方式1:繼承方式/* * 建立線程的方式:繼承Thread類 * 1)建立一個類,繼承Thread * 2)覆寫run方法 * 3)建立一個線程對象 * 4)啟動線程(線程對象.start()) * */class MyThread extends Thread{public MyThread(String name){super(name);}@Overridepublic void run() {//線程體for(int
Properties類:Hashtable的子類,主要功能是用於操作屬性,作為設定檔。特點:按照“key=value”的形式儲存,儲存的內容都是String,用#進行注釋 常用載入Properties檔案的方法如下:private static Properties p = null;private static String RESOURCE_PATH = "demo.properties";static{p = new Properties();InputStream in =
Queue介面: 繼承自Collection介面 FIFO常用方法: offer() 將元素插入隊尾,越界檢查 peek() 擷取隊頭元素,非空檢查 poll() 擷取並刪除隊頭元素,非空檢查 LinkedList: LinkedList實現了Deque介面(Double Ended Queue,雙端隊列),而Deque是Queue的子介面常用方法: addFirst() 插入隊頭 addLast() 插入隊尾 getFirst()
練習:列出指定檔案夾下面的子檔案包括子檔案夾下面的所有檔案import java.io.File;public class FileDemo {public static void main(String[] args) {File file = new File("D:\\MyTemp");listMyFiles(file);}/** * 列出指定檔案夾下面的子檔案包括子檔案夾下面的所有檔案 * @param f */public static void listMyFiles(File f)
1、length() 字串的長度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int len=s.length();2、charAt() 截取一個字元 例:char ch; ch="abc".charAt(1); 返回'b'3、 getChars() 截取多個字元 void getChars(int sourceStart,int sourceEnd,char target[],int
首先讓我們來思考一下什麼是檔案。這裡的檔案專指電腦中的檔案,如我們經常使用的txt文字檔、word文檔、視頻檔案、音頻檔案、windows系統下的exe可執行檔、編寫程式的原始碼檔案等等,我們平時上網衝浪瀏覽的網頁,其實也是一種檔案。它與我們的電腦生活形影不離,一句話,我們使用電腦,就是與檔案打交道。概括的講,電腦檔案就是儲存在某種存放裝置上的資料流。為了有組織的管理這些儲存在電腦中的檔案,以人類辦公中的檔案夾為靈感,設計了電腦中的檔案夾\目錄概念。接著就引入了檔案系統,這個專門負責管理檔案和檔
/* * String是不可變的類,一旦建立,包含在對象中的字元序列是不可變的 * 一個String對象的內容不能變,一旦內容變數該對象就變成一個新的String對象了 * String常量和基本類型常量都存放在JVM的一塊獨立的常量池中 * String使用private final char value[]來實現儲存 */public class StingDemo {public static void main(String[] args) {String s1 =
字串的空:有兩種情況一種是null,一種是空串("");寫一個判斷字串不為空白的方法:hasLength(String s);寫一個判斷字串為空白的方法: isBlank(String s);/** * 字串工具類 * */public class StringUtil {/** * 判斷字串是否不為空白 * @param str 待判斷的字串 * @return 若不為空白返回true,若為空白返回false */public static boolean hasLength(String
練習:用StringBuilder 或StringBuffer:把字串“ABCDE”,轉變成字串“A,B,C,D” public class StringBuilderTest {public static void main(String[] args) {StringBuilder sb = new StringBuilder("ABCDE");System.out.println("Before:"+sb);/** * 1.StringBuilder -> String ->
import static java.lang.Math.*;/* * 靜態匯入:Java5的新特性,匯入的是類裡面的靜態成員 import static * java.lang.Math類:具體參見API */public class MathDemo {public static void main(String[] args) {System.out.println(PI);//若不進行靜態匯入的話,需要使用Math.PI//求兩個數的最大值int max =
首先通過一個例子來簡單回顧Java中與日期和時間相關的類:package day7;import java.text.SimpleDateFormat;import java.util.Date;/** * Date類:處理日期,時間,該類中的大部分方法已經過時,不推薦使用 * 從 JDK 1.1 開始,應該使用 Calendar 類實現日期和時間欄位之間轉換 * 使用 DateFormat 類來格式化和解析日期文字 * 常用構造方法:Date()分配 Date
package day7;import java.util.Random;import java.util.UUID;/** * java.util.Random類 * java.util.UUID類 */public class RandomDemo {public static void main(String[] args) {/* * 練習:產生一個[0,100)之間的偽隨機數 * * 構造方法:Random()建立一個新的隨機數產生器。 * int nextInt()
售票問題:有50張票需要3個視窗賣出;用兩種線程方式賣票,觀察兩種方式賣票的結果有什麼不同。class Ticket1 extends Thread{int num = 50;//50張票Ticket1(String name) {super(name);}public void run() {for (int i = 0; i < 200; i++) {if(num>0){System.out.println(getName()+"賣出了第"+ num--
修改練習1賣票例子,先讓它網路延遲,出現問題,再解決問題。 1)同步代碼塊class Ticket implements Runnable {private Integer num = 50;@Overridepublic void run() {for (int i = 0; i < 200; i++) {sale();}}private Object o = new Object();// 作為監聽對象/** * 賣票 */public void sale()
題目:類比銀行取款,使用三種線程同步方法實現取款的安全。編寫如下類,並進行取款測試:賬戶類:Account,含餘額欄位balance取款類:DrawMoney,在指定帳戶中進行取款操作編寫線程體:實現取款操作的安全 方法1:同步代碼塊/** * 銀行帳戶 */class Account {/** * 餘額 */private double balance;/** * 構造方法 * @param balance */Account(double balance)
線程通訊C-P練習:儲存空間存放“姓名,性別”類型的資料,生產者負責往儲存空間放資料,消費者負責從儲存空間取資料。編程實現該C-P關係。並實現保證線程間的同步通訊。 1)同步代碼塊實現同步通訊package day14;/** * 資料存放區區,並設定了預設生產的內容 * * @author well * */class Storage {String name = "Tom";String sex = "male";}/** * 生產者進程 * * @author well *
引入:設計一個表示座標的類Point,該類有兩個欄位,橫座標和縱座標,要求座標有3種表達形式。(1)整數(2)小數(3)字串/* * 利用泛型表示座標點 * 定義一個類的時候,採用T來表示一種類型,僅僅表示預留位置; * 但是此時真正的類型尚未確定,使用的時候才確定 */public class Point<T> {//橫座標private T x;//縱座標private T y;public T getX() {return x;}public void setX(T x)
在前面的生產者消費者程式中,生產者一次生產的資料,消費者可以進行多次讀取。顯然,這並不符合我們的要求。對此,改進上述程式:1)生產者生產一次資料,消費者取一次資料;2)儲存空間只能存放一對資料 在下面的代碼中我們會用到: Java通過Object類的 wait \ notify \ nofifyall 這幾個方法來實現線程間的通訊。 wait: