国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java面向對象進階第四天(常用API)

這篇具有很好參考價值的文章主要介紹了Java面向對象進階第四天(常用API)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

常用API

API概述

API全稱是應用程序編程接口,是Java寫好的程序,程序員可以直接調用。

Object類:toString方法

Object是祖宗類,它里面的方法,一切子類對象都可以使用。

public String toString()

  • 默認是返回當前對象的地址信息。

Student s = new Student("張三",'女', 23);

  • System.out.println(s.toString());

    • 返回對象地址

  • System.out.println(s);

    • 直接輸出對象名,默認是調用toString方法的

toString存在的意義:

  • 默認返回對象的地址其實是沒有意義的

  • 真實存在的意義是被子類重寫,以便返回子類對象的內容。

Object類:equals方法

public boolean equals(Object o )

  • 默認是比較2個對象的地址是否一樣,返回true 或者false

equals存在的意義

  • 默認比較對象的地址其實是沒有意義的,因為== 號可以更簡單的完成

  • 存在的的真實意義是被子類重寫,以便比較對象的內容。

Object類:clone方法

protected Object clone()

當某個對象調用這個方法時,這個方法會復制一個一模一樣的新對象返回。

分類:

  1. 淺克?。嚎截惓龅男聦ο螅c原對象中的數(shù)據(jù)一模一樣(引用類型拷貝的只是地址)

  2. 深克隆:

    對象中基本類型的數(shù)據(jù)直接拷貝。

    對象中的字符串數(shù)據(jù)拷貝的還是地址。

    對象中還包含的其他對象,不會拷貝地址,會創(chuàng)建新對象。

Objects

Objects是一個工具類,提供了更安全的方式比較2個對象。

Student s = null;

  • s.equals(s2); 空指針異常

  • Objects.equals(s, s2); 返回false

Objects常見方法:

方法名 說明
public static boolean equals(Object a, Object b) 比較兩個對象的,底層會先進行非空判斷,從而可以避免空指針異常。再進行equals比較
public static boolean isNull(Object obj) 判斷變量是否為null ,為null返回true ,反之返回false

StringBuilder

StringBuilder稱為可變字符串容器,操作字符串的性能優(yōu)于String類。

StringBuilder拼接操作字符串的手段:性能好

String才是我們的目的:結果數(shù)據(jù)的類型

StringJoiner

JDK8開始才有的,跟StringBuilder一樣,也是用來操作字符串的,也可以看成是一個容器,創(chuàng)建之后里面的內容是可變的。

好處:不僅能提高字符串的操作效率,并且在有些場景下使用它操作字符串,代碼會更簡潔

public static String getArrayData(int[] arr) {
    // 拼接最終的結果:[11, 22, 33, 44, 55]
    // 1.判斷arr是否為null
    if (arr == null) {
        return null;
    }
    StringJoiner sj = new StringJoiner(", ", "[", "]");
    for (int i = 0; i < arr.length; i++) {
        sj.add(arr[i] + "");
    }
    return sj.toString();
}

?

Math

Math相當于是一個工具類,提供的方法全部是完成數(shù)學操作的靜態(tài)方法,直接用類名調用即可。

目標:熟悉Math類的方法就行了。

// 目標:看看Math類的方法就行了。
// 1、取絕對值(拿到的結果一定是正數(shù))
System.out.println(Math.abs(-12));
System.out.println(Math.abs(-12.2));
System.out.println(Math.abs(1443));
?
// 2、向上取整
System.out.println(Math.ceil(3.000001)); // 4.0
System.out.println(Math.ceil(4.0)); // 4.0
?
// 3、向下取整
System.out.println(Math.floor(3.9999999)); // 3.0
System.out.println(Math.floor(3.0)); // 3.0
?
// 4、四舍五入
System.out.println(Math.round(3.45555)); // 3
System.out.println(Math.round(3.500001)); // 4
?
// 5、取較大值
System.out.println(Math.max(10, 20));
?
// 6、取次方
System.out.println(Math.pow(2, 4)); // 16.0
System.out.println(Math.pow(3, 2)); // 9.0
?
// 7、取隨機數(shù)(用的少)
System.out.println(Math.random()); // [0.0 , 1.0) (包前不包后)

?

System

System代表系統(tǒng),也是一個工具類的形式,里面的方法都是與系統(tǒng)操作相關的靜態(tài)方法。

// 目標:了解下System類的幾個方法。
// 1、終止虛擬機(干掉全部Java程序的執(zhí)行)
System.out.println("程序開始。。。");
// System.exit(0); // 0代表是人為認為的正常終止的 (慎用)
?
// 2、獲取當前系統(tǒng)的時間信息的。(時間毫秒值:從1970-1-1 0:0:0開始走到此刻的總的毫秒值。1s = 1000ms)
long time = System.currentTimeMillis();
System.out.println(time);
?
// 通常用來統(tǒng)計程序執(zhí)行的性能問題。
for (int i = 0; i < 2000; i++) {
    System.out.println("輸出:" + i);
}
?
long time2 = System.currentTimeMillis();
System.out.println("耗時:" + (time2 - time) / 1000.0 + "s");

?

Runtime

public static void main(String[] args) throws IOException, InterruptedException {
    // 目標:了解下Runtime的幾個常見方法。
?
    // 1、public static Runtime getRuntime() 返回與當前Java應用程序關聯(lián)的運行時對象。
    Runtime r = Runtime.getRuntime();
?
    // 2、public void exit(int status) 終止當前運行的虛擬機,該參數(shù)用作狀態(tài)代碼; 按照慣例,非零狀態(tài)代碼表示異常終止。
    // r.exit(0);
?
    // 3、public int availableProcessors(): 獲取虛擬機能夠使用的處理器數(shù)。
    System.out.println(r.availableProcessors());
?
    // 4、public long totalMemory() 返回Java虛擬機中的內存總量。
    System.out.println(r.totalMemory() / 1024.0 / 1024.0 + "MB"); // 1024 = 1K     1024 * 1024 = 1M
?
    // 5、public long freeMemory() 返回Java虛擬機中的可用內存量
    System.out.println(r.freeMemory() / 1024.0 / 1024.0 + "MB");
?
    // 6、public Process exec(String command) 啟動某個程序,并返回代表該程序的對象。
//        r.exec("C:\\SoftWare\\XMind2020\\XMind.exe");
    Process p = r.exec("QQ");
    Thread.sleep(5000); // 讓程序在這里暫停5s后繼續(xù)往下走??!
    p.destroy(); // 銷毀!關閉程序!
}

?

BigDecimal

封裝double類型的數(shù)據(jù)進行運算的,為了解決計算精度問題

目前:浮點型 double直接運算是不精準的。

  • double a1 = 0.1

  • double b1 = 0.2;

  • double c1 = a1 + b1;

    c1: 0.3000000000000001

把浮點型數(shù)據(jù)進行封裝后再運算

double a = 0.1;
double b = 0.2;
double c = a + b;
System.out.println(c);
System.out.println("--------------------------");
// 使用BigDecimal規(guī)避浮點數(shù)運算過程中可能出現(xiàn)的精度失真問題
BigDecimal a1 = BigDecimal.valueOf(a);
BigDecimal b1 = BigDecimal.valueOf(b);
// BigDecimal c1 = a1.add(b1);
// BigDecimal c1 = a1.subtract(b1);
// BigDecimal c1 = a1.multiply(b1);
BigDecimal c1 = a1.divide(b1);
System.out.println(c1); // 0.3
BigDecimal c2 = a1.divide(b1, 2, RoundingMode.Half_Up);

?

日期與時間

Date

  • 作用:代表當前此刻日期和時間的。

  • 構建對象和常用方法:

    Date d = new Date();
    long time = d.getTime();
    Date  d2 = new Date(time) // 把時間毫秒值轉換成日期對象。
    ?
    public void setTime(long time): // 設計日期對象為當前時間毫秒值對應的日期。
    d2.setTime(time);

    ?

SimpleDateFormat

  • 作用:格式化、解析時間的。

  • 構建對象:public SimpleDateFormat(String pattern)

  • 方法

    • public String format(Date d)

      • 格式化日期對象

    • public String format(Object o)

      • 格式化時間毫秒值

    • public Date parse(String date):

      • 把字符串時間解析成日期對象

    // 目標:掌握簡單日期格式化類:SimpleDateFormat的使用。
    // 1、創(chuàng)建一個簡單日期格式化對象:封裝時間格式。
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss:SSS EEE a");
    ?
    // 2、創(chuàng)建日期對象
    Date d = new Date();
    System.out.println(d);
    ?
    // 3、開始使用簡單日期格式化對象負責格式化日期成為我們喜歡的字符串時間形式
    String rs = sdf.format(d);
    System.out.println(rs);
    ?
    // 4、可以格式化時間毫秒值
    long time = d.getTime() + 121 * 1000;
    System.out.println(sdf.format(time));

    ?

    • 字符串日期解析

    public class SimpleDateFormatDemo2 {
        public static void main(String[] args) throws ParseException {
            // 目標2:掌握簡單日期格式化的解析操作。
            // 需要:把字符串時間解析成日期對象
            String dateStr = "2022-11-11 11:11:12";
            // 1、創(chuàng)建簡單日期格式化對象。
            // 注意、注意、注意: 解析時間的格式必須與被解析時間的格式一模一樣,否則報錯!
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    ?
            // 2、開始解析了(會報錯的,把異常拋出去,什么意思,今天會詳細講解)
            Date d = sdf.parse(dateStr);
            System.out.println(d);
        }
    }

    ?

Calendar

  • 作用:代表的是系統(tǒng)此刻時間對應的日歷,通過它可以單獨獲取、修改時間中的年、月、日、時、分、秒等

  • 構建對象和常用方法:

    // 目標:掌握日歷類的使用。
    // 1、得到日歷對象
    Calendar c = Calendar.getInstance();
    System.out.println(c);
    
    // 2、獲取信息:public int get(int field):
    int year = c.get(Calendar.YEAR);
    System.out.println(year);
    
    int days = c.get(Calendar.DAY_OF_YEAR);
    System.out.println(days);
    
    // 3、獲取日期對象(了解)
    Date d = c.getTime();
    System.out.println(d);
    
    long time0 = d.getTime();
    
    // 4、時間毫秒值(了解)
    long time = c.getTimeInMillis();
    System.out.println(time);
    
    // 5、修改日歷的時間(需求:問89天后是什么日子)
    // 參數(shù)一:信息字段:一年中的第幾天
    // 參數(shù)二:往后加多少天。
    c.add(Calendar.DAY_OF_YEAR, 89);
    Date d1 = c.getTime();
    System.out.println(d1);
    
    c.set(Calendar.DAY_OF_YEAR, 364); // 直接修改日歷到某一天!
    Date d2 = c.getTime();
    System.out.println(d2);

    ?

JDK8新增日期類

LocalDate、LocalTime、LocalDateTime

LocalDate:代表本地日期(年、月、日、星期) LocalTime:代表本地時間(時、分、秒、納秒) LocalDateTime:代表本地日期、時間(年、月、日、星期、時、分、秒、納秒)

ZoneId、ZonedDateTime

提供了一些帶時區(qū)的相關方法。

Instant

代表時間線上的某個時刻/時間戳

通過獲取Instant的對象可以拿到此刻的時間,該時間由兩部分組成:從1970-01-01 00:00:00 開始走到此刻的總秒數(shù) + 不夠1秒的納秒數(shù)

DateTimeFormatter

可以用來格式化或者解析日期時間

public class Demo {
    // 目標:掌握JDK 8新增的DateTimeFormatter格式化器的用法。
    public static void main(String[] args) {
        // 1、創(chuàng)建一個日期時間格式化器對象出來。
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");

        // 2、對時間進行格式化
        LocalDateTime now = LocalDateTime.now();
        System.out.println(now);

        String rs = formatter.format(now); // 正向格式化
        System.out.println(rs);

        // 3、格式化時間,其實還有一種方案。
        String rs2 = now.format(formatter); // 反向格式化
        System.out.println(rs2);

        // 4、解析時間:解析時間一般使用LocalDateTime提供的解析方法來解析。
        String dateStr = "2029年12月12日 12:12:11";
        LocalDateTime ldt = LocalDateTime.parse(dateStr, formatter);
        System.out.println(ldt);
    }
}

?

Period、Duration

Period(一段時期)

l可以用于計算兩個 LocalDate對象 相差的年數(shù)、月數(shù)、天數(shù)。

public class PeriodDemo1 {
    public static void main(String[] args) {
        //張二狗的生日是1998年12月3日,請問到今天張二狗活了多長時間? => 基于Period進行差值計算
        LocalDate ergouBirthday = LocalDate.of(1998, 12, 3);
        LocalDate now = LocalDate.now();

        //public static Period between(LocalDate l1,LocalDate l2)
        Period period = Period.between(ergouBirthday, now);

        //基于get方法獲取差額信息的數(shù)據(jù)信息 getMonths:獲取的差額信息中的月份【必須和年搭配在一起看】
        //如果想查看總月份可以基于toTotalMonth進行獲取
        int years = period.getYears();
        int months = period.getMonths();
        int days = period.getDays();

        System.out.println(years + " " + months + " " + days);
    }
}

?

Duration(持續(xù)時間)

可以用于計算兩個時間對象相差的天數(shù)、小時數(shù)、分數(shù)、秒數(shù)、納秒數(shù);支持LocalTime、LocalDateTime、Instant等時間。

public class DurationDemo1 {
    public static void main(String[] args) {
        //晚上7:30開始考試,小明9:25:30秒交卷了 【計算小明總共答卷的耗時時間】
        LocalTime startTime = LocalTime.of(19, 30, 0);
        LocalTime mingTime = LocalTime.of(21, 25, 30);

        //獲取兩個時間的差值
        Duration duration = Duration.between(startTime, mingTime);

        //可以基于get方法來獲取差值中的相關信息
        long seconds = duration.getSeconds();
        System.out.println("【seconds】:" + seconds);

        //可以基于to方法來獲取差值中的不同單位的總信息【總共幾小時】【總共多少分鐘】【總共多少秒】
        long hours = duration.toHours();
        System.out.println("【hours】:" + hours);
        long minutes = duration.toMinutes();
        System.out.println("【minutes】:" + minutes);
        long millis = duration.toMillis();
        System.out.println("【millis】:" + millis);
    }
}

?文章來源地址http://www.zghlxwxcb.cn/news/detail-807322.html

到了這里,關于Java面向對象進階第四天(常用API)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包