1、Object類
1、概念:
1.1 所有類在創建時都默認繼承了java.lang.Object
1.2 所有類對象都可以聲明爲類對象的引用
Object ob1=new String();
Object ob2=new Integer();
2、子類繼承了其方法:
2.1 equals
類似於”==”,比較對象的引用
ps:具體前面blog有詳講,這裏就不贅述了
2.2 toString():
返回一個對象的字符串表示形式(可改寫)
源碼如下:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
2.3、getClass():
返回一個對象的實際類型
ps:
- 其返回的是具體實例化的類型
- instanceof判斷的是其是否實例化了,包括其父類的判斷
2、包裝類
1、概念:
包裝類是對基本類型的包裝:所以也是8個
2、列舉表:
基本類型 | 包裝類 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
3、包裝類的轉換:
包裝類、String、基本類型間兩兩轉換
具體可參考我前一篇關於String的blog,中有詳解
3、內部類*
1、成員內部類
1.1 訪問權限:
可以訪問外部內的靜態或非靜態的屬性和方法
1.2 實例:
先實例化外部類,再實例化內部類
2、靜態內部類
1.1 訪問權限:
可以訪問外部內的靜態的屬性和方法
1.2實例:
先實例化外部類,再調用靜態類
3、局部內部類
1.1 訪問權限:
可以訪問外部內的靜態或非靜態的屬性和方法
1.2 實例:
在方法中實例化,接着實例化外部類,調用方法
4、匿名內部類
1.使用情況:
1.1 只實例化一次的對象
1.2 局部內部類要實現接口或繼承某些父類
最後貼上練習代碼君:
package com.jacob.javase;
/*
* 內部類分類:
* 1.成員內部類
* 2.靜態內部類
* 3.局部內部類
* 4.匿名內部類
*/
public class InnerClass {
public static void main(String[] args) {
// 成員內部類的實例
// MemberInner.Inner2 mi=(new MemberInner()).new Inner2();
// mi.doSomething();
// MemberInner mi1=new MemberInner();
// mi1.method();
// 靜態內部類的實例(可直接通過類調用)
// StaticInner.Inner si=new StaticInner.Inner();
// si.test();
// 實例局部類
// LocalInner li = new LocalInner();
// li.doSomething();
// 4.匿名內部類:使用條件:
// 4.1 局部內部類可能就需要創建一個對象
// 4.2 局部內部類需要實現外部接口或繼承某些父類
new InnerClass();
new Test() {
@Override
public void m1() {
// TODO Auto-generated method stub
System.out.println("匿名類test");
}
}.m1();
}
}
interface Test {
void m1();
}
// 1.成員內部類:
class MemberInner {
private int a = 4;
// 訪問權限:可訪問外部類的的靜態與非靜態的屬性和方法
public class Inner2 {
private int a = 5;
public void doSomething() {
System.out.println("Hello World!");
System.out.println(this.a);// 5
System.out.println(MemberInner.this.a);// 4
}
}
public void method() {
// 實例化成員內部類
Inner2 inner = new Inner2();
System.out.println(inner.a);
}
}
// 2.靜態內部類:
class StaticInner {
private static int a = 4;
// 訪問權限:只能訪問外部類的靜態屬性和方法
public static class Inner {
public void test() {
System.out.println(a);
}
}
}
// 3.局部內部類
// 訪問權限:可以訪問外部內的靜態或非靜態屬性和方法:
class LocalInner {
public void doSomething() {
int b = 1;
final int a = 4;
class Inner3 {
int c = 1;
public void test() {
System.out.println(a + b);
}
}
// 只能在方法塊中實例
Inner3 li1 = new Inner3();
li1.test();
System.out.println(li1.c);
}
}