String類和正則表達(dá)式

String類和正則表達(dá)式

今天的主要內(nèi)容

  • Scanner類概述

    • Scanner獲取數(shù)據(jù)出現(xiàn)的小問題及解決方案
  • String類概述

    • String類的構(gòu)造方法

    • String面試題之"=="和equals的區(qū)別

    • Sring類的判斷功能

    • String類的獲取功能

    • 字符串的遍歷

    • 統(tǒng)計(jì)不同類型字符個(gè)數(shù)

    • String類的轉(zhuǎn)換功能

    • 把一個(gè)字符串的首字母轉(zhuǎn)成大寫,其余為小寫。(只考慮英文大小寫字母字符)

    • 字符串反轉(zhuǎn)

    • 在大串中查找小串出現(xiàn)的次數(shù)思路

  • 正則表達(dá)式

一、Scanner的概述和方法介紹(掌握)

  • A:Scanner的概述

  • B:Scanner的構(gòu)造方法原理

    • Scanner(InputStream source)
    • System類下有一個(gè)靜態(tài)的字段:
      • public static final InputStream in; 標(biāo)準(zhǔn)的輸入流,對(duì)應(yīng)著鍵盤錄入。
  • C:一般方法

    • hasNextXxx() 判斷是否還有下一個(gè)輸入項(xiàng),其中Xxx可以是Int,Double等。如果需要判斷是否包含下一個(gè)字符串,則可以省略Xxx
    • nextXxx() 獲取下一個(gè)輸入項(xiàng)。Xxx的含義和上個(gè)方法中的Xxx相同,默認(rèn)情況下,Scanner使用空格,回車等作為分隔符

二、常見對(duì)象(Scanner獲取數(shù)據(jù)出現(xiàn)的小問題及解決方案)(掌握)

  • A:兩個(gè)常用的方法:

    • public int nextInt():獲取一個(gè)int類型的值

    • public String nextLine():獲取一個(gè)String類型的值

  • B:案例演示

    • b:再演示先獲取int值,然后獲取String值出現(xiàn)問題

      • 當(dāng)nextInt()與nextLine()一起使用時(shí),可能會(huì)出現(xiàn)問題
        1. nextInt()方法是鍵盤錄入整數(shù)的方法,當(dāng)我們錄入10的時(shí),其實(shí)是在鍵盤錄入了10和\r\n,nextInt()方法只獲取10就結(jié)束了

        2. nextLine()是鍵盤錄入字符串的方法,遇到\r\n時(shí)證明一行結(jié)束

        3. 因此此時(shí)產(chǎn)生沖突

    • c:問題解決方案

      • 第一種:先獲取一個(gè)數(shù)值后,在創(chuàng)建一個(gè)新的鍵盤錄入對(duì)象獲取字符串。

      • 第二種:把所有的數(shù)據(jù)都先按照字符串獲取,然后要什么,你就對(duì)應(yīng)的轉(zhuǎn)換為什么。(后面講)

三、常見對(duì)象(String類的概述)(掌握)

  • A:String類的概述

    • 通過JDK提供的API,查看String類的說明

    • 可以看到這樣的兩句話。

      • a:字符串字面值"abc"也可以看成是一個(gè)字符串對(duì)象。

      • b:字符串是常量,一旦被賦值,就不能被改變。

四、常見對(duì)象(String類的構(gòu)造方法)(掌握)

  • A:常見構(gòu)造方法

    • public String():空構(gòu)造

    • public String(byte[] bytes):把字節(jié)數(shù)組轉(zhuǎn)成字符串

    • public String(byte[] bytes,int index,int length):把字節(jié)數(shù)組的一部分轉(zhuǎn)成字符串

    • public String(char[] value):把字符數(shù)組轉(zhuǎn)成字符串

    • public String(char[] value,int index,int count):把字符數(shù)組的一部分轉(zhuǎn)成字符串

    • public String(String original):把字符串常量值轉(zhuǎn)成字符串

  • B:案例演示

    • 演示String類的常見構(gòu)造方法

五、常見對(duì)象(String類的常見面試題)(掌握)

  • ==可以比較基本數(shù)據(jù)類型和引用數(shù)據(jù)類型

    • 當(dāng)比較基本數(shù)據(jù)類行時(shí),比較的是值
    • 當(dāng)比較引用時(shí),比較的是地址
    • String屬于引用類型
  • String重寫了equals方法,因此比較的是值

  • 1.判斷定義為String類型的s1和s2是否相等*****

    • String s1 = "abc";

    • String s2 = "abc";

    • System.out.println(s1 == s2); //true

    • System.out.println(s1.equals(s2)); //true

    • image
  • 2.下面這句話在內(nèi)存中創(chuàng)建了幾個(gè)對(duì)象?*****

    • String s1 = new String("abc"); //兩個(gè)對(duì)象

    • 創(chuàng)建兩個(gè)對(duì)象,一個(gè)在常量池中,一個(gè)在堆中

    • image
  • 3.判斷定義為String類型的s1和s2是否相等

    • String s1 = new String("abc");

    • String s2 = "abc";

    • System.out.println(s1 == s2); //false

      • s1指向的是堆中的字符串
      • s2指向的是常量池中的字符串
    • System.out.println(s1.equals(s2)); //true

  • 4.判斷定義為String類型的s1和s2是否相等

    • String s1 = "a" + "b" + "c";

    • String s2 = "abc";

    • System.out.println(s1 == s2); //true

      • 在編譯時(shí),java中有常量?jī)?yōu)化機(jī)制
    • System.out.println(s1.equals(s2)); //true

  • 5.判斷定義為String類型的s1和s2是否相等

    • String s1 = "ab";

    • String s2 = "abc";

    • String s3 = s1 + "c";

    • System.out.println(s3 == s2); //false

    • System.out.println(s3.equals(s2)); //true

    • image

六、常見對(duì)象(String類的判斷功能)(掌握)

  • A:String類的判斷功能

    • boolean equals(Object obj):比較字符串的內(nèi)容是否相同,區(qū)分大小寫

    • boolean equalsIgnoreCase(String str):比較字符串的內(nèi)容是否相同,忽略大小寫

    • boolean contains(String str):判斷大字符串中是否包含小字符串

    • boolean startsWith(String str):判斷字符串是否以某個(gè)指定的字符串開頭

    • boolean endsWith(String str):判斷字符串是否以某個(gè)指定的字符串結(jié)尾

    • boolean isEmpty():判斷字符串是否為空。

    • 若字符串常量和字符串變量進(jìn)行比較,通常都是字符串常量調(diào)用方法,防止空指針異常

七、常見對(duì)象(String類的獲取功能)(掌握)

  • A:String類的獲取功能

    • int length():獲取字符串的長(zhǎng)度。

    • char charAt(int index):獲取指定索引位置的字符

    • int indexOf(int ch):返回指定字符在此字符串中第一次出現(xiàn)處的索引。

    • int indexOf(String str):返回指定字符串在此字符串中第一次出現(xiàn)處的索引。

    • int indexOf(int ch,int fromIndex):返回指定字符在此字符串中從指定位置后第一次出現(xiàn)處的索引。

    • int indexOf(String str,int fromIndex):返回指定字符串在此字符串中從指定位置后第一次出現(xiàn)處的索引。

    • lastIndexOf

    • String substring(int start):從指定位置開始截取字符串,默認(rèn)到末尾。

      • subString方法會(huì)返回新的字符串,不會(huì)改變?cè)醋址欢ㄒ⒁?/li>
    • String substring(int start,int end):從指定位置開始到指定位置結(jié)束截取字符串。

八、常見對(duì)象(字符串的遍歷)(掌握)

  • A:案例演示
    • 需求:遍歷字符串
    • 分析:
      • 循壞獲取每一個(gè)字符
      • 用到charAt(int index)方法

九、常見對(duì)象(統(tǒng)計(jì)不同類型字符個(gè)數(shù))(掌握)

  • A:案例演示

    • 需求:統(tǒng)計(jì)一個(gè)字符串中大寫字母字符,小寫字母字符,數(shù)字字符出現(xiàn)的次數(shù),其他字符出現(xiàn)的次數(shù)。

    • ABCDEabcd123456!@#$%^

    • 分析:

      1. for循壞遍歷字符串中的每一個(gè)字符,charAt()方法

        1. for循壞中對(duì)每一個(gè)字符進(jìn)行判斷

          • 大寫字母:ch >= 'A' && ch <= 'Z'

          • 小寫字母:ch >= 'a' && ch <= 'z'

          • 數(shù)字字符:ch >= '0' && ch <= '9'

          • 其他字符

      2. 其中需要定義常量,統(tǒng)計(jì)個(gè)數(shù)

    • 程序:

        public static void main(String[] args) {
            //定義常量
            int upperCount = 0;
            int lowerCount = 0;
            int numCount = 0;
            int elseCount = 0;
            
            //定義字符串
            String string = "ABCDEabcd123456!@#$%^";
            
            //1. for循壞遍歷字符串中的每一個(gè)字符,charAt()方法
            for(int i = 0;i < string.length();i++) {
                char ch = string.charAt(i);
                
                //2. for循壞中對(duì)每一個(gè)字符進(jìn)行判斷
                if(ch >= 'A' && ch <= 'Z')
                    upperCount++;
                else if(ch >= 'a' && ch <= 'z')
                    lowerCount++;
                else if(ch >= '0' && ch <= '9')
                    numCount++;
                else
                    elseCount++;                    
            } 
            
            System.out.println("大寫字母?jìng)€(gè)數(shù):" + upperCount + "\n小寫字母?jìng)€(gè)數(shù):" + lowerCount
                                + "\n數(shù)字字符個(gè)數(shù):" + numCount + "\n其他字符個(gè)數(shù):" + elseCount);    
        }
      

十、常見對(duì)象(String類的轉(zhuǎn)換功能)(掌握)

  • A:String的轉(zhuǎn)換功能:

    • byte[] getBytes():把字符串轉(zhuǎn)換為字節(jié)數(shù)組。

    • char[] toCharArray():把字符串轉(zhuǎn)換為字符數(shù)組。

    • static String valueOf(char[] chs):把字符數(shù)組轉(zhuǎn)成字符串。

    • static String valueOf(int i):把int類型的數(shù)據(jù)轉(zhuǎn)成字符串。

      • 注意:String類的valueOf方法可以把任意類型的數(shù)據(jù)轉(zhuǎn)成字符串
* String toLowerCase():把字符串轉(zhuǎn)成小寫。(了解)

* String toUpperCase():把字符串轉(zhuǎn)成大寫。

* String concat(String str):把字符串拼接。

十一、常見對(duì)象(按要求轉(zhuǎn)換字符)(鏈?zhǔn)骄幊陶莆?

  • A:案例演示

    • 需求:把一個(gè)字符串的首字母轉(zhuǎn)成大寫,其余為小寫。(只考慮英文大小寫字母字符)

    • 程序:

        public static void main(String[] args) {
            String string = "hahaWOhaoxiangJIA";
            
            String string2 = string.substring(0,1).toUpperCase().concat(string.substring(1).toLowerCase());
            
            System.out.println(string2);     //Hahawohaoxiangjia
        }
      
    • 鏈?zhǔn)骄幊蹋好恳淮握{(diào)用方法后返回的是一個(gè)對(duì)象,可以繼續(xù)調(diào)用其他方法

十二、常見對(duì)象(把數(shù)組轉(zhuǎn)成字符串)

  • A:案例演示

    • 需求:把數(shù)組中的數(shù)據(jù)按照指定的格式拼接成一個(gè)字符串

      • 舉例:

        • int[] arr = {1,2,3};
      • 輸出結(jié)果:

        • "[1, 2, 3]"
      • 分析:其實(shí)是字符串的一個(gè)拼接工作

      • 程序:

          public static void main(String[] args) {
              int[] arr = {1,2,3};
              
              String string = "[";
              
              for(int i = 0;i < arr.length;i++) {
                  int ch = arr[i];
                  if(i == arr.length-1) {
                      string = string.concat(ch + "]");
                  }else
                      string = string.concat(ch + ", ");
              }   
              
              System.out.println(string);
          }
        

十三、常見對(duì)象(String類的其他功能)

  • A:String的替換功能及案例演示

    • String replace(char old,char new)

    • String replace(String old,String new)

  • B:String的去除字符串兩空格及案例演示

    • String trim()
  • C:String的按字典順序比較兩個(gè)字符串及案例演示

    • int compareTo(String str)(暫時(shí)不用掌握)

    • int compareToIgnoreCase(String str)(了解)

十四、常見對(duì)象(字符串反轉(zhuǎn))

  • A:案例演示

    • 需求:把字符串反轉(zhuǎn)

      • 舉例:鍵盤錄入"abc"

      • 輸出結(jié)果:"cba"

    • 分析:

      1. 鍵盤錄入字符串

      2. 轉(zhuǎn)換為字符數(shù)組

      3. 將數(shù)組反轉(zhuǎn)

        • 聯(lián)系快速排序
      4. 將數(shù)組轉(zhuǎn)為字符串(new String(byte[] b))

    • 程序:

        public static void main(String[] args) {
            //1. 鍵盤錄入字符串
            Scanner input = new Scanner(System.in);
            System.out.println("請(qǐng)輸入一個(gè)字符串:");
            String string = input.nextLine();
            
            //2. 轉(zhuǎn)換為字符數(shù)組
            char[] cArr = string.toCharArray();
            
            //3. 將數(shù)組反轉(zhuǎn)
            int i;
            int j;
            
            for(i = 0,j = cArr.length - 1;i < j;i++,j--) {
                //交換cArr[i]和cArr[j]
                char temp = cArr[i];
                cArr[i] = cArr[j];
                cArr[j] = temp;
            }
            
            //4. 將數(shù)組轉(zhuǎn)為字符串(new String(byte[] b))
            System.out.println("反轉(zhuǎn)后字符串為:");
            System.out.println(new String(cArr));   
        }
      

十五、常見對(duì)象(在大串中查找小串出現(xiàn)的次數(shù)思路圖解)

  • A:畫圖演示

    • 需求:統(tǒng)計(jì)大串中小串出現(xiàn)的次數(shù)

    • 這里的大串和小串可以自己根據(jù)情況給出

  • 程序:

      //定義大串
      String max = "hahahahawoxianghuijiaxixixixiwoxianghuijiawojia";
    
      //定義小串
      String min = "woxianghuijia";
          
      //定義計(jì)數(shù)器變量
      int count = 0;
    
      //定義索引
      int index = 0;
    
      //定義循壞
      while((index = max.indexOf(min)) != -1){
          count++;
          max = max.subString(index + min.length());
      }
    
      System.out.println(count);
    

正則表達(dá)式

一、正則表達(dá)式概述

  • A:正則表達(dá)式

    • 是指一個(gè)用來描述或者匹配一系列符合某個(gè)語法規(guī)則的字符串的單個(gè)字符串。其實(shí)就是一種規(guī)則。有自己特殊的應(yīng)用。

    • 作用:比如注冊(cè)郵箱,郵箱有用戶名和密碼,一般會(huì)對(duì)其限制長(zhǎng)度,這個(gè)限制長(zhǎng)度的事情就是正則表達(dá)式做的

  • B:案例演示

    • 需求:校驗(yàn)qq號(hào)碼.

      • 1:要求必須是5-15位數(shù)字
      • 2:0不能開頭
      • 3:必須都是數(shù)字
    • a:非正則表達(dá)式實(shí)現(xiàn)

        public static void main(String[] args) {
            System.out.println(checkQQ("123456"));
        }
        
        public static boolean checkQQ(String qq) {
            boolean flag = true;        //若校驗(yàn)不合格則置為false
            
            if(qq.length() >= 5 && qq.length() <= 15) {
                if(!qq.startsWith("0")) {
                    char[] cArr = qq.toCharArray();
                    
                    for (int i = 0; i < cArr.length; i++) {
                        char ch = cArr[i];
                        
                        if(!(ch >= '0' && ch <= '9')) {
                            flag = false;
                            break;
                        }
                    }
                }else {         //以0開頭
                    flag = false;
                }
            }else {                 //不是5-15位數(shù)字
                flag = false;
            }
            
            return flag;
        }
      
    • b:正則表達(dá)式實(shí)現(xiàn)

        String regex = "[1-9]\\d{4,14}";
        
        System.out.println("123256".matches(regex));
      

二、常見對(duì)象(字符類演示)

  • A:字符類
    • [ ] 代表單個(gè)字符

    • [abc] a、b 或 c(簡(jiǎn)單類)

    • [^abc] 任何字符,除了 a、b 或 c(否定)

      • ^表否定
    • [a-zA-Z] a到 z 或 A到 Z,兩頭的字母包括在內(nèi)(范圍)

    • [a-d[m-p]] a到d或者m到p

    • [a-z&&[def]] &&交集,因此此時(shí)指的是:d或e或f

      • 等價(jià)于[def]
    • [a-z&&[^bc]] a到z之間而且不是b和c

    • [a-z&&[^m-p]] a到z之間而且不是m到p

    • [0-9] 0到9的字符都包括

三、常見對(duì)象(預(yù)定義字符類演示)

  • A:預(yù)定義字符類

    • . 任何單個(gè)字符。

    • \d 三個(gè)數(shù)字字符:[0-9]

      • \d轉(zhuǎn)義字符
    • \D [^0-9] 除0-9的單個(gè)字符

    • \w 單詞字符:[a-zA-Z_0-9]

    • \s 空白字符: [ \t\n\x0B\f\r]

    • \S 非空白字符: [^\s]

    • \w 一個(gè)單詞字符: [a-zA-Z_0-9]

    • \W 非單詞字符: [^\w]

四、常見對(duì)象(數(shù)量詞)

  • A:Greedy 數(shù)量詞

    • X? X,一次或一次也沒有

      • [abc]?

      • a或者b或者c出現(xiàn)一次或者一次也沒有

    • X* X,零次或多次

      • [abc]*

      • a或者b或者c出現(xiàn)0次或者多次

    • X+ X,一次或多次

    • X{n} X,恰好 n 次

    • X{n,} X,至少 n 次

    • X{n,m} X,至少 n 次,但是不超過 m 次

五、常見對(duì)象(正則表達(dá)式的分割功能)

  • A:正則表達(dá)式的分割功能

    • String類的功能:public String[] split(String regex)

    • 當(dāng)以'.'切割時(shí),正則表達(dá)為:regex = "\.",需要兩個(gè)\

  • B:案例演示

    • 正則表達(dá)式的分割功能

六、常見對(duì)象(把給定字符串中的數(shù)字排序)

  • A:案例演示

    • 需求:我有如下一個(gè)字符串:”91 27 46 38 50”,請(qǐng)寫代碼實(shí)現(xiàn)最終輸出結(jié)果是:”27 38 46 50 91”

    • 分析:

      1. 按照空格分割
      2. 調(diào)用排序函數(shù)
      3. 遍歷數(shù)組輸出結(jié)果
    • 程序

        public static void main(String[] args) {
            //1. 按照空格分割
            String string = "91 27 46 38 50";
            
            String[] sArr = string.split(" ");
            
            //2. 調(diào)用排序函數(shù)
            Arrays.sort(sArr);
            
            //3. 遍歷數(shù)組輸出結(jié)果
            for(String string2 : sArr) {
                System.out.print(string2 + "  ");
            }       
        }
      

七、常見對(duì)象(正則表達(dá)式的替換功能)

  • A:正則表達(dá)式的替換功能

    • String類的功能:public String replaceAll(String
      regex,String replacement)
  • B:案例演示

    • 正則表達(dá)式的替換功能
  • C:代碼實(shí)現(xiàn)

    public static void main(String[] args) {
        String string = "hahaha23hahah19";
        
        String regex = "[0-9]";         //此時(shí)使用\\d也可以
        
        System.out.println(string.replaceAll(regex, ""));  //輸出hahahahahah
    }

八、常見對(duì)象(正則表達(dá)式的分組功能)

  • A:正則表達(dá)式的分組功能

    • 捕獲組可以通過從左到右計(jì)算其開括號(hào)來編號(hào)。例如,在表達(dá)式 ((A)(B(C))) 中,存在四個(gè)這樣的組:
  •   1     ((A)(B(C))) 
      2     (A 
      3     (B(C)) 
      4     (C) 
    
      組零始終代表整個(gè)表達(dá)式。
    
  • B:案例演示

    • a:切割

      • 需求:請(qǐng)按照疊詞切割: "sdqqfgkkkhjppppkl";
    • b:替換

      • 需求:我我....我...我.要...要要...要學(xué)....學(xué)學(xué)..學(xué).編..編編.編.程.程.程..程

      • 將字符串還原成:“我要學(xué)編程”。

  • C:知識(shí)儲(chǔ)備

    • 判斷是否為疊詞

        String regex = "(.)\\1(.)\\2";  //此時(shí)\\1代表第一組出現(xiàn)一次,\\2代表第二組出現(xiàn)一次
        
        System.out.println("開開心心".matches(regex));      //true
        System.out.println("aabb".matches(regex));      //true
        System.out.println("abb".matches(regex));       //false
      
    • 需求:請(qǐng)按照疊詞切割: "sdqqfgkkkhjppppkl";

    • 程序:

        String string = "sdqqfgkkkhjppppkl";
        
        String regex = "(.)\\1+";       //第一組出現(xiàn)一次或多次
        
        String[] sArr = string.split(regex);
        
        for(String string2 : sArr) {
            System.out.print(string2);      //輸出結(jié)果為:sdfghjkl
        }
      
    • 需求:我我....我...我.要...要要...要學(xué)....學(xué)學(xué)..學(xué).編..編編.編.程.程.程..程,將字符串還原成:“我要學(xué)編程”。

    • 程序:

        String string = "我我....我...我.要...要要...要學(xué)....學(xué)學(xué)..學(xué).編..編編.編.程.程.程..程";
      
        //先把'.'去掉
        String regex = "\\.+";
        String string2 = string.replaceAll(regex,"");   //輸出:我我我我要要要要學(xué)學(xué)學(xué)學(xué)編編編編程程程程
        
        //再把疊詞去掉
        String regex2 = "(.)\\1+";
        System.out.print(string2.replaceAll(regex2,"$1"));      //$1獲得第一組數(shù)據(jù)并替換掉regex表達(dá)的內(nèi)容
      

九、常見對(duì)象(Pattern和Matcher的概述)

  • A:Pattern和Matcher的概述

  • B:模式和匹配器的典型調(diào)用順序

    • 通過JDK提供的API,查看Pattern類的說明

    • 典型的調(diào)用順序是

      • Pattern p = Pattern.compile("a*b");

        • 獲取到正則表達(dá)式
      • Matcher m = p.matcher("aaaaab");

        • 獲取匹配器
      • boolean b = m.matches()

        • 判斷是否可匹配
      • 上述等價(jià)于

        • System.out.println("aaaaab".matches("a*b"));

十、常見對(duì)象(正則表達(dá)式的獲取功能)

  • A:正則表達(dá)式的獲取功能

    • Pattern和Matcher的結(jié)合使用
  • B:案例演示

    • 需求:把一個(gè)字符串中的手機(jī)號(hào)碼獲取出來
  • C:程序

      public class TestRegular_5 {
          public static void main(String[] args) {
              String string = "我的手機(jī)號(hào)是:13345678910,哈哈哈哈,小明的手機(jī)號(hào)是:18945612300,小花的手機(jī)號(hào)是15975348621";
              
              String regex = "1[3578]\\d{9}";             //手機(jī)號(hào)碼正則表達(dá)式
              /*Pattern p = Pattern.compile(regex);
              Matcher m = p.matcher(string);
              boolean b = m.matches();*/
              
              Pattern p = Pattern.compile(regex);
              Matcher m = p.matcher(string);
              
              String s1 = null;
              while(m.find()) {       //找到就輸出
                  s1 = m.group();
                  System.out.println(s1);
              }       
          }
      }
      /*
       *  在JDK1.8中輸出結(jié)果為:
       *  -----------------
       *  13345678910
          18945612300
          15975348621
          -----------------
       * */
    

十一、常見對(duì)象(String類對(duì)正則表達(dá)式的支持)

  • public boolean matches(String regex)

  • public String replaceAll(String regex,String replacement)

  • public String replaceFirst(String regex,String replacement)

  • public String[] split(String regex)

  • public String[] split(String regex,int limit)
    * Splits this string around matches of the given regular expression.

十二、常見對(duì)象(正則表達(dá)式在反射中應(yīng)用)

  • 定義抽象超類Fruit

      abstract class Fruit {
          abstract void desc();
      }
    
  • 定義Apple繼承Fruit

      public class Apple extends Fruit{   
          @Override
          void desc() {
              // TODO Auto-generated method stub
              System.out.println("蘋果過好好吃啊");
          }   
      }
    
  • 定義Durian繼承Fruit

      public class Durian extends Fruit{
          @Override
          void desc() {
              // TODO Auto-generated method stub
              System.out.println("榴蓮過好好吃啊");
          }   
      }
    
  • 定義Orange繼承Fruit

      public class Orange extends Fruit{
          @Override
          void desc() {
              // TODO Auto-generated method stub
              System.out.println("橘子過好好吃啊");
          }       
      }
    
  • 定義Factory生產(chǎn)水果

      public class Factory {
          public static Fruit getInstance(String fruitName) {
              
              Class c1 =  null;
              try {
                  c1 = Class.forName(fruitName);
                  
                  Fruit fruit = (Fruit)c1.newInstance();
                  
                  return fruit;
              } catch (Exception e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              }       
              return null;
          }
      }
    
  • 定義測(cè)試類

      public class TestFactory {
          public static void main(String[] args) {
              Fruit fruit = Factory.getInstance("factory.Orange");
          
              fruit.desc();
          }
      }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 【程序1】 題目:古典問題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子長(zhǎng)到第三個(gè)月后每個(gè)月又生一...
    阿里高級(jí)軟件架構(gòu)師閱讀 3,384評(píng)論 0 19
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,626評(píng)論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評(píng)論 19 139
  • 一、 1、請(qǐng)用Java寫一個(gè)冒泡排序方法 【參考答案】 public static void Bubble(int...
    獨(dú)云閱讀 1,494評(píng)論 0 6
  • 對(duì)于一個(gè)從小學(xué)時(shí)代開始語文都不及格的人來說,寫作一直是我所奢望的事情。今天看《學(xué)習(xí)學(xué)習(xí)再學(xué)習(xí)》微信公眾號(hào)李笑來的講...
    新自由閱讀 128評(píng)論 0 2

友情鏈接更多精彩內(nèi)容