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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java常用class类_java常用类

發(fā)布時(shí)間:2025/3/12 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java常用class类_java常用类 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

java常用類

內(nèi)部類

1.成員內(nèi)部類:在一個(gè)類的內(nèi)部定義一個(gè)完整的類

例如:外部類public class Body{

內(nèi)部類class Header{

}

}

內(nèi)部類可以直接訪問外部類的私有成員,而且不破壞封裝

內(nèi)部類可以為外部類提供必要的功能組件,

成員內(nèi)部類 在類的內(nèi)部定義,與實(shí)例變量,實(shí)例方法同級(jí)別的類,

在外部類的一個(gè)實(shí)例部分,創(chuàng)建內(nèi)部類對(duì)象時(shí),必須依賴外部類對(duì)象

Outer outer = new outer();

Inner inner = new Inter();

一步到位: Inner inner = new Outer().new Inner();

inner.show();

當(dāng)外部類、內(nèi)部類存在重命名屬性時(shí)、會(huì)優(yōu)先訪問內(nèi)部類屬性 例如(外部類 .this.屬性)

成員內(nèi)部類不能定義靜態(tài)成員static、但可以定義靜態(tài)常量final。

private static final String name ="li";

private static String name ="li"; 錯(cuò)誤

打印外部類屬性時(shí) 內(nèi)部類屬性和外部類的名字相同,要想訪問外部類屬性O(shè)uter.this . name

靜態(tài)內(nèi)部類

相當(dāng)于在成員內(nèi)部類的基礎(chǔ)上 加上一個(gè)static關(guān)鍵字 也當(dāng)相當(dāng)于外部類

不依賴外部類對(duì)象,可直接創(chuàng)建或通過類名訪問,可聲明靜態(tài)成員

packageaa;//外部類

public classOuter {private String name = "ww";//靜態(tài)內(nèi)部類;和外部類相同

static classInner{private String address="上海";private String phone="888";//靜態(tài)成員

private static String maths = "數(shù)學(xué)";public voidshow() {//調(diào)用外部類的屬性//1.先創(chuàng)建外部類對(duì)象

Outer outer = newOuter();

System.out.print(outer.name);//調(diào)用靜態(tài)內(nèi)部類屬性方法

System.out.print(address);//調(diào)用靜態(tài)內(nèi)部類的靜態(tài)屬性

System.out.print(Inner.maths);

}

?

}

?

}

只能直接訪問外部類的靜態(tài)成員(實(shí)例化成員需實(shí)例化外部類對(duì)象)

Outer.Inner inner = new Outer.Inner();

Outer.Inner.show();

public classTestOuter {public static voidmain(String[] args) {

Outer.Inner inner= newOuter. Inner();

inner.show();

}

}

3.局部內(nèi)部類 (定義在方法內(nèi)的)

package com.jun.li.pritact;

//外部類

public class Outer {

private String name ="劉德華";

private int age =55;

public void show() {

// 定義局部變量、局部變量是不能帶修飾符的

String address = "上海";

//局部內(nèi)部類 注意前面不能加任何訪問修飾符

class Inner{

//局部內(nèi)部類的屬性

private String phone="19999999";

private String email="999999@.qq.com";

public void show2() {

//訪問外部類的屬性

System.out.println(Outer.this.name);

System.out.println(Outer.this.age);

System.out.println(address);

}

}

步驟(1) ?//在此方法內(nèi)創(chuàng)建內(nèi)部類對(duì)象

Inner inner = new Inner();

inner.show2();

}

}

package com.jun.li.pritact;

public class OuterTest {

public static void main(String[] args) {

Outer outer = new Outer();

outer.show();

//想運(yùn)行show方法中的局部內(nèi)部類 需只能在其方法內(nèi)創(chuàng)建對(duì)象 上步驟 (1)

}

}

?

?

局部內(nèi)部類訪問外部類當(dāng)前方法中的局部變量時(shí),因無法保障變量的生命周期與自身相同,

變量必須修飾為final final String address = "上海";

有限的范圍 當(dāng)前方法內(nèi)

4.匿名內(nèi)部類(接口 抽象類用的多)

*沒有類名的局部內(nèi)部類(一切特征都與局部內(nèi)部類相同)

*繼承一個(gè)父類或者實(shí)現(xiàn)一個(gè)接口常使用

Usb usb = new Usb(){

//Usb()可以是父類,抽象類 再重寫方法就行

@Override

public void service(){

System.out.println("連接成功");

}

};

object類

超類、基類、所有類的直接或間接父類,位于繼承樹的頂層

任何類、沒有寫extends繼承某個(gè)類 都默認(rèn)繼承Object類,否則間接繼承

Object類的所定義的方法,是所繼承對(duì)象都具備的

Object類可以存儲(chǔ)任何對(duì)象 1.作為參數(shù):接收任何對(duì)象

2.作為返回值:可以返回任何對(duì)象

object類常用方法

1.getClass()方法 返回當(dāng)前類的實(shí)際對(duì)象類型

應(yīng)用:通話常用于判斷兩個(gè)引用中實(shí)際存儲(chǔ)對(duì)象類型是否一致

Class class1=s1.getclass();

Class class2=s2.getclass();

if(class1==class2){

System.out.print("相同類型")

}else{

System.out.print("不相同類型")

}

2.hashCode()方法 返回int類型

public int hashCode(){}

System.out.println(s1.hashCode());

System.out.println(s2.hashCode());//s1與s2地址不同所以hash值不同

Student s3=s1 //把s1地址賦給s3 所以相同

System.out.println(s3.hashCode());//相同

返回哈希碼值、根據(jù)對(duì)象的地址或字符串或者數(shù)字使用hash算法計(jì)算出來的int類型的數(shù)值

3.toString()方法

eclipse中重寫方法 Alt+Enter+s

public String toString(){

return name+":"+age;

}

4.equals()方法 默認(rèn)實(shí)現(xiàn)為(this==obj)。比較兩個(gè)對(duì)象地址是否相同。可覆蓋 為比較兩個(gè)對(duì)象的內(nèi)容是否為相同、通過重寫。

重寫equals方法 改變equals的判斷條件方法

public class Outer {

@Override

public boolean equals(Object obj) {

//1.判斷兩個(gè)對(duì)象是否為同一個(gè)引用 一樣就不需要比ture

if(this==obj) {

return true;

}//2.判斷是否為空值

if(obj==null) {

return false;}//3.判斷是否為同一類型

//if(this.getClass()==obj.getClass()) {//}

if(obj instanceof Student ) {

//4.強(qiáng)制類型轉(zhuǎn)換

Student s =(Student)obj;

//5.比較屬性

if(this.name.equals(s.getName())&&this.age==s.getAge()) {

return true;

}

}

return false;

}

}

5.finalize()方法

當(dāng)對(duì)象被判定為垃圾對(duì)象時(shí) ,由JVM自動(dòng)調(diào)用此方法,用于標(biāo)記垃圾對(duì)象,計(jì)入回收隊(duì)列

垃圾對(duì)象:指沒有有效引用指向此對(duì)對(duì)象

垃圾回收:由GC銷毀對(duì)象,釋放數(shù)據(jù)存儲(chǔ)空間

自動(dòng)回收機(jī)機(jī)制:JVM的內(nèi)存耗盡,一次性回收所有垃圾對(duì)象。

手動(dòng)回收機(jī)制,使用System.gc(); 通知JVM執(zhí)行垃圾回收。

Student s1 = new Student("aaa",20);//不會(huì)被當(dāng)作垃圾回收

new Student("aaa",20);//會(huì)被當(dāng)做垃圾回收

System.gc();

包裝類

基本數(shù)據(jù)類型 byte、char、short、int、long、float、double、boolean,

基本數(shù)據(jù)類型都存在棧中,引用類型都在堆中

從而只能通過運(yùn)算符對(duì)基本數(shù)據(jù)類型操作,

為了讓基本數(shù)據(jù)類型提供更強(qiáng)大的功能所以創(chuàng)造出:基本數(shù)據(jù)類型所對(duì)應(yīng)的引用數(shù)據(jù)類型

包裝類 是 引用類型默認(rèn)值為null

基本數(shù)據(jù)類型包裝類型

byte

Byte

short

Short

int

Integer

long

Long

float

Float

double

Double

boolean

Boolean

char

Character

包裝類將對(duì)應(yīng)的基本數(shù)據(jù)類型包裝在一個(gè)對(duì)象中(對(duì)象則變?yōu)槎阎?#xff0c;就可以使用方法。。。)

類型轉(zhuǎn)換與裝箱、拆箱

裝箱:把棧(基本類型)拿到堆(引用類型)中,反之拆箱。

裝箱:

//基本類型

int n =18;

//使用Integer類創(chuàng)建對(duì)象、valueof()方法返回一個(gè) Integer指定的 int值的 Integer實(shí)例

1.Integer integer = new Integer(n);//把傳入的數(shù)字

2.Integer integer1 = Integer.valueof(n);

拆箱:

//intvalue()方法返回int值

Integer integer2 = new Integer(n);

int num2 = integer2.intvalue();

JDk1.5后自動(dòng)提供裝箱拆箱

//自動(dòng)裝箱

int a = 15;

Integer integre1=a;

//自動(dòng)拆箱

int a2=integer1;

基本類型和字符串之間的轉(zhuǎn)換

//基本類型轉(zhuǎn)換字符串轉(zhuǎn)

int n1 =100;//使用toString()方法

1.String s1 = n1+"";

2.String s2 = Integer.toString(n1);

//字符串轉(zhuǎn)換成基本類型

`String str ="100";

//使用Integer.parseXXX()

int n2 = Integer.parseInt(str);

//boolean字符串行式轉(zhuǎn)換成基本類型 "true"都是true 非 true 都是false

String str2 = "false";

boolean b = Boolean.parseBoolean(str2);

Integer緩沖區(qū)

//面試題

Integer integer1 = new Integer(100);

Integer integer2 = new Integer(100);

System.out.printin(integer1==integer2);//false

//比的是地址

Integer integer3 = 100;//自動(dòng)裝箱 =Integer integer3 = Integer.valueof(100);

Integer integer4 = 100;//從在Cache[] 數(shù)組-128——127中找到 直接給棧內(nèi)的對(duì)象 堆地址相同唯一

System.out.printin(integer3==integer4);//true

Integer integer5 = 200;

Integer integer6 = 200;

System.out.printin(integer5==integer6);//false

//Intrger.valueof(i) i 是有范圍的-128——127 超出范圍會(huì) new Integer(i); 從而使地址不同

String類

字符串是常量,創(chuàng)建之后不可改變

字符串字面值存儲(chǔ)在字符串池(方法區(qū)內(nèi)的)中,可以共享。

實(shí)例:

String name ="Hello";//"hello"常量存儲(chǔ)在常量池中

name ="zhangsan"; ? ?//把zhangsan賦值給name變量,給字符賦值時(shí),并沒有修改數(shù)據(jù),而是重新開辟空間

String name2 = "zhangsan";

String s ="Hello"; 產(chǎn)生一個(gè)對(duì)象,字符串池中存儲(chǔ)。

String s = new String(“Hello”);產(chǎn)生兩個(gè)對(duì)象,堆、常量池個(gè)存儲(chǔ)一個(gè)。

//展示字符串的另一個(gè)創(chuàng)建方式

String str = new Strinf("java");//new 在堆中一個(gè)對(duì)象

String str2 = new Strinf("java");

System.out,printin(str==str2); //false 都在堆中new 所以地址不同

System.out,printin(str.equals(str2));//true 因?yàn)檫@是比的是數(shù)據(jù)而不是地址

字符串常用的方法

1.public int length() :返回字符串的長度

2.public char charAt(int index) :根據(jù)下標(biāo)獲取字符

3.public boolean contains(String str) : 判斷當(dāng)前字符串是否包含str

String name = "java最好";

System.out.printin(name.length()); //6

System.out.printin(name.charAt(name.length()-1)); ?//好

System.out.printin(name.contains("java"));//true

4.public char[ ] toCharArray( ) :將字符串轉(zhuǎn)換成數(shù)組

5.public int indexOf(String str) :查找str首次出現(xiàn)的下標(biāo),存在,則返回該下標(biāo),不存在,則返回-1.

6.public int lastIndexOf(String str) :查找字符串在當(dāng)前字符串中最后一次出現(xiàn)的下標(biāo)索引

String name = "java最好,java真香";

System.out.printin(Arrays.toString(name.toCharArray()));// [j,a,v,a,......]

System.out.printin(name.indexOf("java"));// 0

System.out.printin(name.lastIndexOf("java"));//7

split() 方法中 拆分split(“[ ,]+”)可以表示多個(gè)空格或 , 都能拆分

equalsIgnoreCase( )忽略大小寫的比較

比較大小 兩個(gè)字符串依次相同位置且依次往后比較,直至沒有則比較長度

案例演示

toUpperCase( )可以變?yōu)榇髮?/p>

截取 :subString(int beginIndex )

subString(int beginIndex ,int endIndex)

String增強(qiáng)類 StringBuffer:可變長字符串,運(yùn)行效率慢,線程安全

(單線程)StringBuilder: 可變長字符串,運(yùn)行效率快,線程不安全

/**

* StringBuffer和StringBuilser的使用

* 比String 1.效率高

2.節(jié)省內(nèi)存

*/

StringBuffer sb = new StringBuffer();

1.//append();追加

sb.append("java世界第一");

System.out.print(sb.toString());

2.//insert();添加 可以在某個(gè)位置添加

sb.insert(0,"dddddd");

3.// replace(); 可以再指定位置替換

sb.replace(0,5,"DDDDDD");

4.// delete();刪除 也可指定位置

sb.delete(0,5);

BigDecimal類

位置:java.math包中

作用:精確計(jì)算浮點(diǎn)數(shù)。

創(chuàng)建方式: BigDecimal bd = new BigDecimal(“字符串”);字符串精確

//面試題

double result =(1.4-0.5)/0.9;

//求結(jié)果 卻為0.0999999999...

BigDecimal bd1 = new BigDecimal("1.0");

BigDecimal bd2 = new BigDecimal("0.9");

//減法 subtract()

BigDecimal r1 = bd1.subtract(bd2);

//加法 add()

BigDecimal r2 = bd1.add(bd2);

//乘法 multiply()

BigDecimal r3 = bd1.multiply(bd2);

//除法 divide() 面試題例題

BigDecimal r4 = new Bigdecimal("1.4")

.subtract(new Bigdecimal("0.5"))

.divide(new Bigdecimal("0.9"));

//除不盡保留幾位小數(shù) divide(Bigdecimal bd,int scal(保留幾位),RoudingMode mode(取舍模式四舍五入等等))

四舍五入:Bigdecimal.ROUND_HALF_UP

Date類

Date表示特定的瞬間,精確到毫秒,Date類中的大部分方法都已經(jīng)被Calender類中的方法所取代。

時(shí)間單位

1秒=1000毫秒

1毫秒=1000微秒

1微秒= 1000納秒

toLocalString() 時(shí)間格式 xxxx - x - x

Calendar類

Calendar提供了獲取或設(shè)置各種日歷字段的方法

構(gòu)造方法: protected Calendar() 由于修飾符是protected,所以無法直接創(chuàng)建該對(duì)象

1.//創(chuàng)建Calendar對(duì)象

Calendar calendar = Calendar.getInstance();

System.out.println(calendar.getTime().toLocalString());//現(xiàn)在時(shí)間2020-10-1

System.out.println(calendar.getTimeInMillis());//獲取毫秒值

2.//獲取時(shí)間信息

年、月、日、時(shí)、分、秒

int year = calendar.get(Calendar.YEAR);

int month = calendar.get(Calendar.MONTH); // 月是從0-11開始 所以要加1

int day = calendar.get(Calendar.DAY_OF_MONTH);

int hour = calendar.get(Calendar.HOUR_OF_DAY);// HOUR 12小時(shí)、HOUR_OF_DAY24小時(shí)

int minute = calendar.get(Calendar.MINUTE);

int second = calendar.get(Calendar.SECOND);

3.//修改時(shí)間

Calendar calendar2 = Calendar.getInstance();

calendar2.set(Calendar.DAY_OF_MONTH,5)//修改當(dāng)日為5

calendar2.add(Calendar.HOUR,+/-1);//增加或減少1個(gè)小時(shí)

4.//獲取最大值最小值

int max = claendar2.getActualMaximum(Calendar.DAY_OF_MONTH);

int min = claendar2.getActualMinimum(Calendar.DAY_OF_MONTH);

SimpleDateFormat類

SimpleDateFormat是一個(gè)與語言環(huán)境有關(guān)的方式來格式化和解析日期的具體類,

進(jìn)行格式化(日期->文本)、解析(文本->日期) .

常用的時(shí)間模式字母

字母日期或時(shí)間示例

y

2019

M

年中月份

08

d

月中天數(shù)

10

H

一天中小時(shí)數(shù)

24

m

分鐘

25

s

60

S

毫秒

666

1.//創(chuàng)建SimpleDateFormat對(duì)象 y年M月s天H時(shí)m分s秒

SimpleDateFormat sdf =new SimpleDateFormat(patter);//pattern表示參數(shù)

SimpleDateFormat sdf =new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");

2.//創(chuàng)建Date

Date date = new Date();

//格式化date,把日期轉(zhuǎn)成字符串

String str = sdf.format(date);

System.out.print(str);

//解析,把字符串轉(zhuǎn)成日期

Date date = sdf.parse("1990/5/1")

System類

System是系統(tǒng)類,主要用于獲取系統(tǒng)的屬性數(shù)據(jù)和其他操作,構(gòu)造方法私有的

方法名說明

static void arraycopy(......)

復(fù)制數(shù)組

static long currentTimeMillis();

獲取當(dāng)前系統(tǒng)時(shí)間,返回毫秒值

static void gc();

建議JVM趕快啟動(dòng)垃圾回收器回收垃圾

static void exit (int status);

退出JVM,如果參數(shù)是0表示正常退出JVM,非0表示異常退出JVM

1.

//src :源數(shù)組

//srcPos:從哪個(gè)位置開始復(fù)制

//dest :目標(biāo)數(shù)組

//destPos:目標(biāo)位置

public class Test1 {

public static void main(String[] args) {

int[] arr1 = {2,5,6,4,5};

int [] arr2 = new int[10];

//System.arraycopy(src, srcPos, dest, destPos, length);

System.arraycopy(arr1, 0, arr2, 1, 2);

for (int i = 0; i < arr2.length; i++) {

System.out.print(arr2[i]+",");

}

}

}

2.

// System.out.println(System.currentTimeMillis());

// 也可以用來計(jì)時(shí)

long start = System.currentTimeMIllis();

long end = System.currentTimeMIllis();

3.

//System.gc();垃圾回收

4.System.exit(0)

#

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。