日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

常用类(二)

發布時間:2025/3/15 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常用类(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

10.3 可變字符序列:字符串緩沖區

10.3.1 StringBuffer、StringBuilder、String的區別

?

1、一個類似于 String 的字符串緩沖區,但能被修改。雖然在任意時間點上它都包含某種特定的字符序列,但通過某些方法調用可以改變該序列的長度和內容,所有對StringBuffer或StringBuilder對象的字符序列的修改不會產生新的StringBuffer或StringBuilder對象,這點和String很大的不同。

?

value沒有final聲明,value可以不斷擴容,count記錄有效字符的個數。

2、StringBuilder:線程安全,效率低;StringBuffer:線程不安全,效率高

10.3.2 StringBuffer和StringBuilder不同的API

1、構造器

StringBuffer或StringBuilder對象的創建必須用new+構造器。

StringBuffer()?? 初始容量為16的字符串緩沖區

StringBuffer(int size)?? 構造指定容量的字符串緩沖區

StringBuffer(String str)? 將內容初始化為指定字符串內容

2、和字符序列改變有關的方法

而且所有這些方法支持方法鏈

StringBuffer append(xx):提供了很多的append()方法,用于進行字符串拼接

StringBuffer delete(int start,int end):刪除指定位置的內容

StringBuffer insert(int offset, xx):在指定位置插入xx

StringBuffer replace(int start, int end, String str):把[start,end)位置替換為str

StringBuffer reverse() :把當前字符序列逆轉

??? public static void main(String[] args) {

??????? StringBuffer sf = new StringBuffer();

??????? sf.append("hello").append("world").append("java");

??????? System.out.println(sf);

??? }

?

方法鏈的原理

?

當append和insert時,如果原來value數組長度不夠,可擴容

?

?

?

10.3.3 效率測試

package com.api.string;

?

public class TestStringBuilder {

?

??? public static void main(String[] args) {

??????? testStringBuilder();

??????? testStringBuffer();

??????? testString();

??? }

??? public static void testString(){

??????? long start = System.currentTimeMillis();

??????? String s = new String("0");

??????? for(int i=1;i<=10000;i++){

??????????? s += i;

??????? }

??????? System.out.println(s);

??????? long end = System.currentTimeMillis();

??????? System.out.println("String拼接+用時:"+(end-start));

??????? long memory = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();

??????? System.out.println("String拼接+memory: " + memory);

??? }

??? public static void testStringBuilder(){

??????? long start = System.currentTimeMillis();

??????? StringBuilder s = new StringBuilder("0");

??????? for(int i=1;i<=10000;i++){

??????????? s.append(i);

??????? }

??????? System.out.println(s);

??????? long end = System.currentTimeMillis();

??????? System.out.println("StringBuilder拼接+用時:"+(end-start));

??????? long memory = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();

??????? System.out.println("StringBuilder拼接+memory: " + memory);

??? }

??? public static void testStringBuffer(){

??????? long start = System.currentTimeMillis();

??????? StringBuffer s = new StringBuffer("0");

??????? for(int i=1;i<=10000;i++){

??????????? s.append(i);

??????? }

??????? System.out.println(s);

??????? long end = System.currentTimeMillis();

??????? System.out.println("StringBuffer拼接+用時:"+(end-start));

??????? long memory = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();

??????? System.out.println("StringBuffer拼接+memory: " + memory);

??? }

}

10.4 System系統類

System 類包含一些有用的類字段和方法。它不能被實例化。

在 System 類提供的設施中,有標準輸入、標準輸出和錯誤輸出流;對外部定義的屬性和環境變量的訪問;加載文件和庫的方法;還有快速復制數組的一部分的實用方法。

10.4.1 標準輸入、標準輸出和錯誤輸出流對象

PrintStream err:“標準”錯誤輸出流。

InputStream in:“標準”輸入流。

PrintStream out:“標準”輸出流。

import java.util.Scanner;

?

class TestSystem{

???????? public static void main(String[] args){

?????????????????? Scanner input = new Scanner(System.in);

?????????????????? System.out.print("請輸入成績:");

?????????????????? int score = input.nextInt();

??????????????????

?????????????????? if(score>=0 && score<=100){

??????????????????????????? System.out.println("成績是:" + score);

?????????????????? }else{

??????????????????????????? System.err.println("輸入有誤,成績應該在[0,100]");

?????????????????? }

???????? }

}

10.4.2 常用方法

l? void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) :從指定源數組中復制一個數組,復制從指定的位置開始,到目標數組的指定位置結束。

l? long currentTimeMillis() :返回以毫秒為單位的當前時間。?

l? void exit(int status) :終止當前正在運行的 Java 虛擬機。

l? void gc():運行垃圾回收器。?

l? Properties getProperties():確定當前的系統屬性。

l? String getProperty(String key):獲取指定鍵指示的系統屬性。

l? void setErr(PrintStream err) :重新分配“標準”錯誤輸出流。

l? void setIn(InputStream in):重新分配“標準”輸入流。

l? void setOut(PrintStream out):重新分配“標準”輸出流。

l? String setProperty(String key, String value) :設置指定鍵指示的系統屬性。

?

?

?

10.5 JDK1.8之前日期時間類

?

10.5.1 java.lang.System類

?

System類提供的public static long currentTimeMillis()用來返回當前時間與1970年1月1日0時0分0秒GMT之間以毫秒為單位的時間差。此方法適于計算時間差。

10.5.2 java.util.Date

它的對象表示一個特定的瞬間,精確到毫秒。

Java中時間的表示說白了也是數字,是從標準紀元1970年1月1日0時0分0秒GMT到某個時刻的毫秒數,類型是long

理解:一維的時間軸,選擇1970年1月1日0時0分0秒時間為0刻度,1毫秒一刻度

構造方法:

l? Date():????? 源代碼:this(System.currentTimeMillis());

l? Date(long date)

常用方法:

l? getTime():返回自 1970 年 1 月 1 日 00:00:00 GMT 以來此 Date 對象表示的毫秒數。

l? toString():把此 Date 對象轉換為以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中:

?? dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat), zzz是時間標準。

?

已過時的方法:

l? public Date(int year,int month,int date,int hrs,int min,int sec)

參數:

year - 減 1900 的年份。

month - 0-11 之間的月份。

date - 一月中 1-31 之間的某一天。

hrs - 0-23 之間的小時數。

min - 0-59 之間的分鐘數。

sec - 0-59 之間的秒數。

l? getYear() 從 JDK 1.1 開始,由 Calendar.get(Calendar.YEAR) - 1900 取代。

l? getMonth()從 JDK 1.1 開始,由 Calendar.get(Calendar.MONTH) 取代。返回的值在 0 和 11 之間,值 0 表示 1 月。

l? getDate() JDK 1.1 開始,由 Calendar.get(Calendar.DAY_OF_MONTH) 取代。返回的值在 1 和 31 之間

l? getDay()從 JDK 1.1 開始,由 Calendar.get(Calendar.DAY_OF_WEEK) 取代。 返回值 (0 = Sunday, 1 = Monday, 2 = Tuesday, 3 = Wednesday, 4 = Thursday, 5 = Friday, 6 = Saturday) 表示一周中的某一天

l? getHours()從 JDK 1.1 開始,由 Calendar.get(Calendar.HOUR_OF_DAY) 取代。返回值是一個數字(0 至 23)

l? getMinutes()從 JDK 1.1 開始,由 Calendar.get(Calendar.MINUTE) 取代。 返回值在 0 和 59 之間。

l? getSeconds()從 JDK 1.1 開始,由 Calendar.get(Calendar.SECOND) 取代?;氐闹翟?0 和 61 之間。值 60 和 61 只可能發生在考慮了閏秒的 Java 虛擬機上。

10.5.3 java.util.TimeZone和Locale

Locale 對象表示了特定的地理、政治和文化地區。需要 Locale 來執行其任務的操作稱為語言環境敏感的 操作,它使用 Locale 為用戶量身定制信息。例如,顯示一個數值,日期就是語言環境敏感的操作,應該根據用戶的國家、地區或文化的風俗/傳統來格式化該數值。

獲取Locale對象:

?Locale(String language)

?Locale(String language, String country)

?Locale.CHINA、Locale.US等

???????? public static void main(String[] args) {

?????????????????? Locale loc = Locale.CHINA;

?????????????????? System.out.println(loc);//zh_CN

?????????????????? System.out.println(Locale.US);//en_US

?????????????????? System.out.println(Locale.JAPAN);//ja_JP

??????????????????

?????????????????? Locale c = new Locale("zh","CN");

?????????????????? System.out.println(c);

???????? }

通常,使用 TimeZone的getDefault 獲取 TimeZone,getDefault 基于程序運行所在的時區創建 TimeZone。例如,對于在日本運行的程序,getDefault 基于日本標準時間創建 TimeZone 對象。

?

也可以用TimeZone的 getTimeZone 及時區 ID 獲取 TimeZone 。例如美國太平洋時區的時區 ID 是 "America/Los_Angeles"。因此,可以使用下面語句獲得美國太平洋時間 TimeZone 對象:

?

?TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");

???????? public static void main(String[] args) {

?????????????????? TimeZone t = TimeZone.getDefault();

?????????????????? System.out.println(t);

??????????????????

?????????????????? TimeZone t1 = TimeZone.getTimeZone("America/New_York");

?????????????????? System.out.println(t1);

??????????????????

?????????????????? TimeZone t2 = TimeZone.getTimeZone("Asia/Shanghai");

?????????????????? System.out.println(t2);

???????? }

?????????????????? String[] all = TimeZone.getAvailableIDs();

?????????????????? for (String id : all) {

??????????????????????????? System.out.println(id);

?????????????????? }

轉載于:https://www.cnblogs.com/sunpengblog/p/10321392.html

總結

以上是生活随笔為你收集整理的常用类(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。