API +包裝類 Integer、Date、SimpleDateFormat、BigInteger、IO
阿新 • • 發佈:2020-10-21
包裝類
概述:專門為各種基本型別提供豐富的方法
基本型別 byte short int long float double char boolean
包裝型別 Byte Short Integer Long Float Double Char Boolean
Number
--抽象類 Number 是BigBecimal、BigInteger、Byte、Double、Float、Integer、Long和Short類的超類
Number的子類必須提供將表示的數值轉換為:
byte、double、float、int、long和short
==============================================================================
Integer
--建立物件
Integer(int value)
構造一個新分配的 Integer 物件,它表示指定的 int 值。
--方法
int intValue()
以 int 型別返回該 Integer 的值。
static int parseInt(String s)
將字串引數作為有符號的十進位制整數進行解析。
static Integer valueOf(int i)
返回一個表示指定的 int 值的 Integer 例項。
public class C1 {
public static void main(String[] args) {
byte a = Byte.MIN_VALUE;
byte b = Byte.MAX_VALUE;
//1,建立物件--把基本型別的 5 變成 包裝型別的in--用包裝類in提供的各種方法
Integer in = new Integer(5);
Integer in2 = Integer.valueOf(500);//在-128~127之間高效,不在範圍內直接new
Integer in3 = Integer.valueOf(500);
System.out.println(in2 == in3);//true
//常用的方法
int x = in.intValue();//把in包裝著的值取出來
System.out.println(x);//5
int y = Integer.parseInt("123");//把字串型別轉 解析成 int型別
System.out.println(y);
//Double
Double d = new Double(9.9);
Double d2 = Double.valueOf(9.9);//不高效,底層也是直接new
double m = d.doubleValue();
double n = Double.parseDouble("9.9");
}
}
==============================================================================
日期工具類Date
概述:對當前日期工作,比如操作年月日時分秒
建立物件: Date()
import java.util.Date;
class C1{
public static void main(String[] args) {
Date d = new Date();//建立物件
System.out.println(d.getTime());//從1970-1-1零點到現在
System.out.println(d.getDate());//今天幾號
System.out.println(d.getDay());//今天星期幾
System.out.println(d.getHours());//現在幾點
System.out.println(d.getMinutes());//幾分
System.out.println(d.getMonth()+1);//現在幾月,展示月是獲取月-1,看原始碼
System.out.println(d.getSeconds());//幾秒
System.out.println(d.getYear());//幾年
System.out.println(d.toLocaleString());//現在時間,年到秒
}
}
日期格式化工具類 SimpleDateFormat
--1,概述
專門 用來轉換 String型別的日期 和 Date型別的日期
--2,建立物件
SimpleDateFormat(String pattern)
--3,常用方法
String format(Date date)--把Date轉成String
Date parse(String text)--把String轉成Da
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
class C1{
public static void main(String[] args) throws ParseException {
method();//2種類型的 日期資料互換
method1();//接收使用者輸入的出生日期,計算存活天使
}
public static void method() throws ParseException {//有錯,丟擲異常
String date = "2020-9-21";
//建立SimpleDateFormat物件 --- 引數是日期的格式
//y表示年 M表示月 d表示填
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//String型別的日期 轉成Date型別的日期
Date d = sdf.parse(date);
System.out.println(d.getYear());//120
System.out.println(d.getMonth()+1);//9
System.out.println(d.getDay());//21
//String format(Date date)--把Date轉成String
Date da = new Date();
String str = sdf.format(da);
System.out.println(str);//2020-10-21
//三合一
System.out.println(sdf.format(new Date()));
}
public static void method1() throws ParseException {
//接收使用者的輸入出生日期
System.out.println("輸入出生日期 格式:yyyy-mm-dd");
String birthday = new Scanner(System.in).nextLine();
//1, 建立SimpleDateFormat物件 -- 用來轉換日期的格式
//引數是日期的格式--y表示年 M表示月 d表示日 -是分隔符
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(birthday); //生成date
long birth = date.getTime();//出生毫秒
long now = System.currentTimeMillis();//當前的毫秒
System.out.println((now-birth) /1000/60/60/24);//ms ->天
}
}
==============================================================================
BigDecimal / BigInteger
概述:
BigDecimal 專門用來解決 小數運算不精確的問題
BigInteger 專門用來做超級大的數的運算
BigDecimal 建立物件 BigDecimal(double val) BigDecimal(String val)
--常用方法 加法:BigDecimal add(BigDecimal augend) 減法:BigDecimal subtract(BigDecimal subtrahend) 乘法:BigDecimal multiply(BigDecimal subtrahend) 除法:BigDecimal divide(BigDecimal subtrahend)
import java.math.BigDecimal;
import java.text.ParseException;
import java.util.Scanner;
class C1{
public static void main(String[] args) throws ParseException {
method();//暴露問題
method1();//用工具解決
}
public static void method() {
double a = new Scanner(System.in).nextDouble();
double b = new Scanner(System.in).nextDouble();
System.out.println(a+b);//不精確
System.out.println(a-b);//不精確
System.out.println(a*b);//不精確
System.out.println(a/b);//不精確
}
public static void method1() {
double a = new Scanner(System.in).nextDouble();
double b = new Scanner(System.in).nextDouble();
//運算
//建立工具物件
//BigDecimal(double val) --有坑 更不準了
//BigDecimal(String val) --推薦使用
BigDecimal bd1 = new BigDecimal(String.valueOf(a));
//裡面轉String類,需要String引數
BigDecimal bd2 = new BigDecimal(b+"");//同上
BigDecimal bd3 = bd1.add(bd2);//加法
System.out.println(bd3);
bd3 = bd1.subtract(bd2);//減法
System.out.println(bd3);
bd3 = bd1.multiply(bd2);//乘法
System.out.println(bd3);
//bd3 = bd1.divide(bd2);//除法
//除不盡時,會丟擲異常:ArithmeticException
//第一個引數是想和誰做運算...第二個引數是保留的位數...第三個引數是舍入模式
bd3 = bd1.divide(bd2,5,BigDecimal.ROUND_HALF_UP) ;//--除法
System.out.println(bd3);
}
}
==============================================================================
IO
概述
IO指2個過程,相對程式來說的讀或寫
I是指讀取過程 in ---從 磁碟 到 程式
O是指寫出過程 out --從 程式 到 磁碟
--根據你操作的資料單位不同,分為兩種流可以讀寫...位元組流和字元流 --字元流 只能讀寫 字元檔案txt --位元組流 啥檔案都可以讀寫 -- 更多的技術底層使用的也都是位元組流
File
檔案和目錄路徑名的抽象表示形式
建立物件
File(String pathname)
通過將給定路徑名字串轉換為抽象路徑名來建立一個新 File 例項。
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
class C1{
public static void main(String[] args) throws IOException {
//建立物件 --引數是你要載入得 檔案的路徑
File file = new File("D:\\iotest\\2.txt");
System.out.println(file.length());//檔案長度
System.out.println(file.exists());//判讀檔案是否存在
System.out.println(file.isFile());//判讀是否是檔案
System.out.println(file.isDirectory());//判讀是資料夾
System.out.println(file.getName());//獲取檔名
System.out.println(file.getParent());//或缺檔案的父路徑
System.out.println(file.getAbsolutePath());//獲取檔案的全路徑
System.out.println(file.createNewFile());//創新檔案
System.out.println(file.delete());//刪除檔案
file = new File("D:\\iotest\\a");
System.out.println(file.mkdir());//新建一層不存在的資料夾
file = new File("D:\\iotest\\m\\n\\q");
System.out.println(file.mkdir());//新建 多層不存在的資料夾
System.out.println(file.delete());//刪除空的資料夾
file = new File("D:\\iotest");
//列出資料夾資源,並把檔名存入String[]
String[] str = file.list();
System.out.println(Arrays.toString(str));//[1.txt,a,m]
//列出資料夾資源,把每個資源封裝成File獨享存入File[] ----推薦!!
File[] fs = file.listFiles();
//[D:\iotest\1.txt, D:\iotest\a, D:\iotest\m]
System.out.println(Arrays.toString(fs));
//計算資料夾裡的 檔案的總大小
// 1,指定資料夾
File file1 = new File("D:\\iotest");
File[] a = file1.listFiles();
long sum = 0;
for (int i = 0; i < a.length; i++) {
if (a[i].isFile()){//判斷是否為檔案
sum += a[i].length();//求和
}else if(a[i].isDirectory()){//判斷是否為資料夾
System.out.println(a[i].getName());
}
}
System.out.println("檔案總大小是"+sum);
}