API +包装类 Integer、Date、SimpleDateFormat、BigInteger、IO

包装类

概述:专门为各种基本类型提供丰富的方法

基本类型 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);


}

















posted @ 2020-10-21 20:27  Liang-shi  阅读(172)  评论(0)    收藏  举报