主頁 > 後端開發 > java常用類

java常用類

2023-05-19 08:09:09 後端開發

java常用類

Object類

基類,超類,所有類的直接或間接父類

object類定義的方法是所有物件都具有的方法

object型別可以存盤任何物件

  • 作為引數,可以接受任何物件
  • 作為回傳值,可以回傳任何物件

getClass()

回傳參考中存盤的實際物件型別

public class  Student  {
 public static void main(String[] args) {
	Student student = new Student();
	System.out.println(student.getClass());
	System.out.println(student.getClass().getName());
	System.out.println(student.getClass().getSimpleName());
    }
}
/* out:
class com.xxx.Student
com.xxx.Student
Student

hashCode()

回傳該物件的哈希碼值(int)

哈希值:根據物件的地址或字串或數字使用hash演算法計算出來的int型別的數值,

一般情況下相同物件回傳相同哈希碼

Student student = new Student();
System.out.println(student.hashCode());
Student student1 = new Student();
System.out.println(student.hashCode()==student1.hashCode());
/*
1435804085
false

toString()

回傳物件的字串表現形式

可以進行重寫,自己來覺得展示的字串形式

Student student = new Student();
System.out.println(student.toString());
//com.xxx.Student@5594a1b5

equals()

比較兩個物件地址是否相同

也可以重寫,自己覺得比較方式

Student student = new Student();
Student student1 = new Student();
System.out.println(student.equals(student1));
//false

finalize()

當物件被判定為垃圾物件時,由JVM自動呼叫此方法,用來標記,進入回收佇列

垃圾物件:沒有有效參考指向此物件,

垃圾回收:釋放資料存盤空間

自動回識訓制:JVM記憶體耗盡,一次性回收所有垃圾物件

手動回識訓制:使用System.gc();通知JVM回收

垃圾回收時呼叫finalize(),本身為空需要重寫

public static void main(String[] args) {
    Student student = new Student();
    //后兩者為垃圾
    new Student();
    new Student();
    System.gc();
}

@Override
protected void finalize() throws Throwable {
    System.out.println("一個垃圾被回收了");
}
/*一個垃圾被回收了
一個垃圾被回收了

包裝類

為解決基本資料型別沒有相應方法,設計了基本資料型別對應的參考資料型別,這就是包裝類

包裝類默認值:null

基本資料型別 包裝資料型別
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character

包裝類的方法可以自行查閱java的官方檔案

型別轉換和裝箱、拆箱

裝箱:基本型別轉換成參考型別

拆箱:參考型別轉換為基本型別

Number類

Number類是六個包裝類以及一些其他類的子類

基本型別轉參考型別

int a = 2;
Integer integer = new Integer(a);
Integer integer1 =  Integer.valueOf(2);

自動裝箱(jdk1.5之后)

int a = 2;
Integer integer = a;

參考型別轉基本型別

int b = integer.intValue();

自動拆箱(jdk1.5之后)

int a = 2;
Integer integer = a;
Integer integer1 = integer;

parseXXX()靜態方法

基本型別轉字串

int n1=100;
String s1 = n1+"";
//或者
String s2 = Integer.toString(n1);
//十六進制
String s2 = Integer.toString(n1,16);

字串轉基本型別

字串轉int:Integer.parseInt(String)

字串轉其他:包裝類.praseXXX(String)

boolean字串轉基本型別,除了"true"是true全是false

Integer緩沖區

//因為左邊創建變數在堆疊,堆疊存放堆里地址,兩者地址不同不相等
Integer integer1 = new Integer(100);
Integer integer2 = new Integer(100);
System.out.println(integer1==integer2);
//自動裝箱,自動裝箱本質是呼叫Integer.ValueOf方法,可以直接看一下Integer.ValueOf方法,因為該方法中有判斷條件為:如果值大于等于-128,小于等于127直接回傳緩沖區(堆中)物件值,否則new一個新的Integer回傳,綜上所以后兩者結果不同
integer1 =100;
integer2 =100;
System.out.println(integer1==integer2);

integer1 =200;
integer2 =200;
System.out.println(integer1==integer2);
//地址相等了
Integer integer3 = new Integer(100);
Integer integer4 = integer3;
System.out.println(integer3==integer4);
/*
false
true
false
true

String類

String的一些特性

字串是常量,創建之后不可改變:

什么意思呢?當我們修改字串時并不是把舊的字串的值改成了新的值,而是在字串池開辟新空間存盤新增,并且把堆疊中的宣告地址指向新的值,舊的值成了“垃圾”

與此同時,當我們再次什么一個新的字串變數,并且把他賦值為和剛才已有變數相同的值,那么直接指向已有變數值的字串池空間,不再開辟新的空間存值

使用new創建字串時又有所不同,他是在堆中創建了的空間存盤物件然后堆中空間又指向(可能說指向不對但可以這樣理解)字串池(相同值依舊指向同一個字串池空間),總的來說創建了兩個物件分別在方法區和堆中

String s = "name";
String s1 = "name";
System.out.println(s==s1);
//true

String s = "name";
String s1 = new String("name");
System.out.println(s==s1);
//equals比較的是資料
System.out.println(s.equals(s1));
//false
//true

字串字面值(右邊)存盤在字串池(在方法區中(方法區邏輯上獨立,物理上屬于堆))中,可以共享

java常用方法

這些方法應該不用我一行行的演示吧

可變字串

由于上面描述的String的不可變性質,我們需要通過其他的類來解決這個特性帶來的一些問題(效率低等)

StringBuffer類:可變長字串在String的基礎上加上了緩沖區,運行效率慢、執行緒安全

StringBuilder:可變長字串,運行效率快、執行緒不安全

兩者相對于String,效率更高,更加節省記憶體

StringBuffer sb = new StringBuffer();
//追加
sb.append("hello");
System.out.println(sb.toString());
sb.append("world");
System.out.println(sb.toString());
   //添加
   sb.insert(0,"最前面");
   System.out.println(sb.toString());
   //replace();左閉右開
   sb.replace(0,3,"hello");
   System.out.println(sb.toString());
   //delete()
   sb.delete(0,5);
   System.out.println(sb.toString());
   //其他方法如翻轉清空自己搜索
/*
hello
helloworld
最前面helloworld
hellohelloworld
helloworld

//StringBuider和StringBuffer相同,單執行緒用前者,否則后者

BigDecimal

關于double存在精度丟失(存盤的實際上是近似值)

double d1 = 1.0;
double d2 = 0.9;
double d3 = d1-d2;
System.out.println(d3);

//0.09999999999999998

需要精確計算或是小數比較時用BigDecimal類,可以精確計算浮點數

        BigDecimal bigDecimal = new BigDecimal("1.0");
        BigDecimal bigDecimal1 = new BigDecimal("0.9");
        //減法
        System.out.println(bigDecimal.subtract(bigDecimal1));
        //加法
        bigDecimal.add(bigDecimal1);
//        乘法
        bigDecimal.multiply(bigDecimal1);
//        除法
        bigDecimal.divide(bigDecimal1);
        
        bigDecimal.subtract(bigDecimal1).divide(bigDecimal1);
//+保留幾位,四舍五入
bigDecimal.subtract(bigDecimal1).divide(bigDecimal1,1,BigDecimal.ROUND_HALF_EVEN);
//0.1

Data

很多方法已經過時或者被Calendar類替代

不想多說自己看檔案

Date date = new Date();
System.out.println(date.toString());
//Thu May 18 19:41:35 CST 2023

Calendar

Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime().toLocaleString());
//2023年5月18日 下午7:46:33
 //年
        int year = Calendar.get(Calendar.YEAR);
        //月,比實際小1
        calendar.get(Calendar.MONTH);
//        日
        calendar.get(Calendar.DAY_OF_MONTH);
//        小時
        calendar.get(Calendar.HOUR_OF_DAY);//HOUR12小時,HOUR_OF_DAY24小時
//        分鐘
        calendar.get(Calendar.MINUTE);
//        秒
        calendar.get(Calendar.SECOND);

其他自己查檔案

SimpleDataFormat

與語言環境有關的方式來格式化和決議日期的具體類

實作日期-->文本或者文本-->日期

SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
        Date date = new Date();
        //格式化
        String string = sdf.format(date);
        System.out.println(string);
        //決議
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
        Date date2 = sdf1.parse("1990-05-01");
        System.out.println(date2);
/*2023年05月18日20:09:03
Tue May 01 00:00:00 CDT 1990

System類

構造方法私有,方法是靜態的

int[] arr={20,18,15,8,45,90,1,65};
int[] dest=new int[8];
//源陣列-開始復制位置下標-目標陣列-目標陣列的位置-復制長度
System.arraycopy(arr,0,dest,0,arr.length);
for(int i=0;i<dest.length;i++){
    System.out.println(dest[i]);
}
/*
20
18
15
8
45
90
1
65

currentTimeMillis():現在到1970毫秒數

后兩者用過不多說

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/552822.html

標籤:其他

上一篇:python包管理工具:Conda和pip比較

下一篇:返回列表

標籤雲
其他(159280) Python(38156) JavaScript(25435) Java(18070) C(15228) 區塊鏈(8267) C#(7972) AI(7469) 爪哇(7425) MySQL(7197) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5871) 数组(5741) R(5409) Linux(5340) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4573) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2433) ASP.NET(2403) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1975) 功能(1967) Web開發(1951) HtmlCss(1938) python-3.x(1918) C++(1917) 弹簧靴(1913) xml(1889) PostgreSQL(1878) .NETCore(1861) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • java常用類

    java常用類 Object類 基類,超類,所有類的直接或間接父類 object類定義的方法是所有物件都具有的方法 object型別可以存盤任何物件 作為引數,可以接受任何物件 作為回傳值,可以回傳任何物件 getClass() 回傳參考中存盤的實際物件型別 public class Student ......

    uj5u.com 2023-05-19 08:09:09 more
  • python包管理工具:Conda和pip比較

    Conda和pip通常被認為幾乎完全相同。雖然這兩個工具的某些功能重疊,但它們設計用于不同的目的。 Pip是Python Packaging Authority推薦的用于從Python Package Index安裝包的工具。 Pip安裝打包為wheels或源代碼分發的Python軟體。后者可能要求 ......

    uj5u.com 2023-05-19 08:08:55 more
  • Java設計模式-外觀模式

    簡介 在軟體開發程序中,經常會遇到復雜的系統和龐大的類別庫。這些系統往往包含了大量的類和子系統,給開發人員帶來了挑戰。為了簡化介面設計和提高系統的可用性,設計模式提供了一種名為外觀模式的解決方案。 外觀模式是一種結構型設計模式,旨在為復雜系統提供一個簡化的介面。該模式通過隱藏底層系統的復雜性,提供一個 ......

    uj5u.com 2023-05-19 08:08:50 more
  • python標準模塊介紹 -Base64: Base64, Base85等資料編碼

    簡介 功能:RFC 3548: Base16, Base32, Base64 資料編碼。轉換二進制資料為適合明文協議傳輸的 ASCII 序列。轉換 8bits 為每個位元組包含 6,5 或 4bits 的有效資料,比如 SMTP, URL 的一部分或者 HTTP POST 的一部分。參考: RFC 3 ......

    uj5u.com 2023-05-19 08:08:47 more
  • 2023最佳python編輯器和IDE

    IDE沒有統一的標準,自己習慣就是最好的。本文列出一些較常用的IDE,供大家參考。 一般而言,WingIDE、PyCharm、Spyder、Vim是比較常用的IDE。 Spyder Spyder是Python(x,y)的作者為它開發的一個簡單的集成開發環境。和其他的Python開發環境相比,它最大的 ......

    uj5u.com 2023-05-19 08:08:13 more
  • Nacos必知必會:這些知識點你一定要掌握!

    Nacos 是一個開源的服務發現、配置管理和服務治理平臺,是阿里巴巴開源的一款產品。
    Nacos 可以幫助開發者更好地管理微服務架構中的服務注冊、配置和發現等問題,提高系統的可靠性和可維護性。 ......

    uj5u.com 2023-05-19 08:07:52 more
  • Python字串替換的3種方法

    Python字串替換筆記主要展示了如何在Python中替換字串。Python中有以下幾種替換字串的方法,本文主要介紹前三種。 replace方法(常用) translate方法 re.sub方法 字串切片(根據Python字串切片方法替換字符) 1.replace方法 Python rep ......

    uj5u.com 2023-05-19 08:07:47 more
  • Python從零到壹丨影像增強的頂帽運算和底帽運算

    摘要:這篇文章詳細介紹了頂帽運算和底帽運算,它們將為后續的影像分割和影像識別提供有效支撐。 本文分享自華為云社區《[Python從零到壹] 四十九.影像增強及運算篇之頂帽運算和底帽運算》,作者:eastmount。 數學形態學(Mathematical Morphology)是一種應用于影像處理和模 ......

    uj5u.com 2023-05-19 08:06:18 more
  • 35基于java的校園二手交易系統或跳蚤市場設計與實作

    基于java的校園二手交易系統或跳蚤市場設計與實作,java二手交易平臺,二手商城,交易商城,大學生交易平臺,springboot二手交易系統,二手交易平臺,購物平臺,大學生跳蚤平臺設計與實作,閑置物品交易平臺,校園閑置二手。 ......

    uj5u.com 2023-05-19 08:06:10 more
  • 這10個Lambda運算式必須掌握,簡化你的代碼,提高生產力

    Lambda 運算式(lambda expression)是一個匿名函式,Lambda運算式基于數學中的λ演算得名,直接對應于其中的lambda抽象(lambda abstraction),是一個匿名函式,即沒有函式名的函式。Lambda運算式可以表示閉包,和傳統數學上的意義有區別。 文末有本文重點 ......

    uj5u.com 2023-05-19 08:06:06 more