java常用class类_java常用类
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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【深度学习】这千层transformer
- 下一篇: 【学术相关】翻倍!研究生招生规模持续扩张