Java自學筆記⑪
列舉與泛型
列舉
使用列舉型別設定常量
interface Constants{ //將常量放置在介面中
public static final int Constants_A=1;
public static final int Constants_B=11;
}
public class ConstantsTest {
enum Constants2{ //將常量放置在列舉型別中
Constants_A,Constants_B; //enum是定義列舉型別的關鍵字,
}
public static void doit(int i){
switch(i){
case Constants.Constants_A:
System.out.println("doit() Constants_A");
break;
case Constants.Constants_B:
System.out.println("doit() Constants_B");
break;
}
}
public static void doit2(Constants2 c){
switch(c){
case Constants_A:
System.out.println("doit2() Constants_A");
break;
case Constants_B:
System.out.println("doit2() Constants_B");
break;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
ConstantsTest.doit(Constants.Constants_A);
ConstantsTest.doit2(Constants2.Constants_A);
ConstantsTest.doit2(Constants2.Constants_B);
ConstantsTest.doit(3);
//ConstantsTest.doit2(3);
}
}
/*
在以上程式碼中,當使用者呼叫doit()方法時,即使編譯器不接受在介面中定義的常量引數,也不會報錯;但呼叫doit2()方法,任意傳遞引數,編譯器就會報錯,因為這個方法只能接收列舉型別的常量作為其引數。·
*/
操作列舉型別成員的方法
方法名稱 | 具體含義 | 使用方法 |
---|---|---|
values() | 該方法可以將列舉型別成員以陣列的形式返回 | 列舉型別名稱.values() |
valueOf() | 該方法可以實現將普通字串轉換為列舉例項 | 列舉型別名稱.valueOf(“abc”) |
compareTo() | 該方法用於比較兩個列舉物件在定義時的順序 | 列舉物件.compareTo() |
ordinal() | 該方法用於得到列舉成員的位置索引 | 列舉物件.ordinal() |
public class ShowEnum {
enum Constants{
Constants_A,Constants_B,Constants_C,Constants_D
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Constants[] enumArray=Constants.values();
for(int i=0;i<enumArray.length;i++){
System.out.println("列舉型別成員變數: "+enumArray[i]);
}
}
}
/*輸出結果:
列舉型別成員變數: Constants_A
列舉型別成員變數: Constants_B
列舉型別成員變數: Constants_C
列舉型別成員變數: Constants_D
*/
public class EnumMethodTest {
enum Constants {
Constants_A, Constants_B, Constants_C, Constants_D
}
public static void compare(Constants c) {
Constants[] array = Constants.values();
for (int i = 0; i < array.length; i++) {
System.out.println(c + "與" + array[i] + "的比較結果為:" + c.compareTo(array[i]));
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
compare(Constants.valueOf("Constants_B"));
}
}
/*輸出結果
Constants_B與Constants_A的比較結果為:1
Constants_B與Constants_B的比較結果為:0
Constants_B與Constants_C的比較結果為:-1
Constants_B與Constants_D的比較結果為:-2
*/
注:呼叫compareTo()方法時,如果方法中引數在呼叫該方法的列舉物件位置之前,則返回正整數,;如果兩個互相比較的列舉成員的位置相同,則返回0;如果方法中引數在呼叫該方法的列舉物件之後,則返回負整數。
public class EnumIndexTest {
enum Constants2{
Constans_A,Constans_B,Constans_C
}
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i=0;i<Constants2.values().length;i++){
System.out.println(Constants2.values()[i]+"在列舉型別中位置索引值"+Constants2.values()[i].ordinal());
}
}
}
/*輸出結果
Constans_A在列舉型別中位置索引值0
Constans_B在列舉型別中位置索引值1
Constans_C在列舉型別中位置索引值2
*/
列舉型別中的構造方法
public class EnumConTest {
enum Constants2{
Constants_A("我是列舉成員A"),
Constants_B("我是列舉成員B"),
Constants_C("我是列舉成員C"),
Constants_D(3);
private String description;
private int i=4;
//定義引數為String型的構造方法
private Constants2(String description){
this.description=description;
}
private Constants2(int i){
this.i=this.i+i;
}
public String getDescription(){
return description;
}
public int getI(){
return i;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Constants2[] array=Constants2.values();
for(int i=0;i<array.length;i++){
System.out.println(array[i]+"呼叫getDscription()方法為:"+array[i].getDescription());
}
Constants2 c2=Constants2.valueOf("Constants_D");
System.out.println(c2+"呼叫getI()方法為:"+c2.getI());
}
}
/*輸出結果
Constants_A呼叫getDscription()方法為:我是列舉成員A
Constants_B呼叫getDscription()方法為:我是列舉成員B
Constants_C呼叫getDscription()方法為:我是列舉成員C
Constants_D呼叫getDscription()方法為:null
Constants_D呼叫getI()方法為:7
*/
泛型
定義泛型類
語法:類名 其中T代表一個型別的名稱
public class OverClass<T> {
private T over;
public T getOver(){
return over;
}
public void setOver(T over){
this.over=over;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
//例項化一個Boolean型的物件
OverClass<Boolean> over1=new OverClass<Boolean>();
OverClass<Float> over2=new OverClass<Float>();
over1.setOver(true);
over2.setOver(12.3f);
Boolean b=over1.getOver();
Float f=over2.getOver();
System.out.println(b);
System.out.println(f);
}
}
/*輸出結果
true
12.3
*/
泛型的常規用法
定義泛型類時宣告多個型別
//MutiOverClass<T1,T2>
//MutiOverClass:泛型類名稱
MutiOverClass<Boolean,Float>=new MutiOverClass<Boolean,Float>();
定義泛型類時宣告陣列型別
public class ArrayClass<T> {
private T[] array;
public T[] getArray(){
return array;
}
public void setArray(T[] array){
this.array=array;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayClass<String> a=new ArrayClass<String>();
String[] array={"成員a","成員b","成員c","成員d"};
a.setArray(array);
for(int i=0;i<a.getArray().length;i++){
System.out.println(a.getArray()[i]);
}
}
}
集合類宣告容器的元素
import java.util.HashMap;
import java.util.Map;
public class MutiOverClass<K, V> {
public Map<K,V> m=new HashMap<K,V>();
public void put(K k,V v){
m.put(k, v);
}
public V get(K k){
return m.get(k);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
MutiOverClass<Integer, String> mu =new MutiOverClass<Integer,String>();
for(int i=0;i<5;i++){
mu.put(i,"我是集合成員"+i);
}
for(int i=0;i<mu.m.size();i++){
System.out.println(mu.get(i));
}
}
}
/*輸出結果
我是集合成員0
我是集合成員1
我是集合成員2
我是集合成員3
我是集合成員4
*/
相關文章
- JAVA自學筆記(4)Java筆記
- Kotlin 自學筆記Kotlin筆記
- Flutter 高效自學筆記(二)Flutter筆記
- Flutter 高效自學筆記(一)Flutter筆記
- JSP自學筆記 (轉)JS筆記
- TypeScript 入門自學筆記(一)TypeScript筆記
- jQuery自學筆記(21-30)jQuery筆記
- 自學PHP筆記(一)PHP語法PHP筆記
- 自學PHP筆記(五) PHP運算子PHP筆記
- Electron小白入門自學筆記(一)筆記
- Linux C++ 自學筆記 (轉)LinuxC++筆記
- Linux C++ 自學筆記(轉)LinuxC++筆記
- 當初自學C++時的筆記記錄C++筆記
- 自學PHP筆記 (三) 型別轉換PHP筆記型別
- 自學PHP筆記(三) 型別轉換PHP筆記型別
- 自學PHP筆記(一)PHP基本語法PHP筆記
- Flutter 高效自學筆記(三)——網路請求Flutter筆記
- 自學PHP筆記(四) PHP變數和常量PHP筆記變數
- 自學PHP筆記(四) PHP常量和變數PHP筆記變數
- 自學PHP筆記(二)PHP資料型別PHP筆記資料型別
- uni-app小白入門自學筆記(一)APP筆記
- uni-app小白入門自學筆記(二)APP筆記
- Linux自學筆記——檔案共享之NFSLinux筆記NFS
- 清空系統日誌shell scripts——自學筆記筆記
- 新手java如何自學,java大神的自學路線Java
- java 筆記Java筆記
- Java筆記Java筆記
- 自學java筆記I 基本型別+轉義字元+資料型別的轉換Java筆記字元資料型別
- TypeScript 入門自學筆記 — 型別斷言(二)TypeScript筆記型別
- 自學Css3第一天筆記CSSS3筆記
- 【Java筆記】Java JDKJava筆記JDK
- TensorFlow筆記(2) 常量與變數【僅供自學】筆記變數
- android遊戲開發自學筆記3-2Android遊戲開發筆記
- Java安全筆記Java筆記
- java 筆記(草稿)Java筆記
- Java筆記02Java筆記
- Java筆記1Java筆記
- Java筆記——【Map】Java筆記