No_16_0307 Java基礎(chǔ)學(xué)習(xí)第十三天

文檔版本 開發(fā)工具 測(cè)試平臺(tái) 工程名字 日期 作者 備注
V1.0 2016.03.07 lutianfei none

[TOC]


StringBuffer類

StringBuffer類概述及其構(gòu)造方法

  • StringBuffer類概述

    • 線程安全的可變字符序列。
    • 用字符串做拼接,比較耗時(shí)并且也耗內(nèi)存,而這種拼接操作又是比較常見的,為了解決這個(gè)問題,Java就提供了一個(gè)字符串緩沖區(qū)類StringBuffer供我們使用。
  • StringBuffer和String的區(qū)別?

    • 前者長(zhǎng)度和內(nèi)容可變,后者不可變。
    • 如果使用前者做字符串的拼接,不會(huì)浪費(fèi)太多的資源。
  • 構(gòu)造方法

    • public StringBuffer():無參構(gòu)造方法。
    • public StringBuffer(int capacity):指定容量的字符串緩沖器對(duì)象。
    • public StringBuffer(String str):指定字符串內(nèi)容的字符串緩沖器對(duì)象。
  • StringBuffer的方法:

    • public int capacity():返回當(dāng)前容量。(初始值16個(gè)字符) 理論值
    • public int length():返回長(zhǎng)度(字符數(shù))。 實(shí)際值
public class StringBufferDemo {
    public static void main(String[] args) {
        // public StringBuffer():無參構(gòu)造方法
        StringBuffer sb = new StringBuffer();
        System.out.println("sb:" + sb);
        System.out.println("sb.capacity():" + sb.capacity());
        System.out.println("sb.length():" + sb.length());
        System.out.println("--------------------------");

        // public StringBuffer(int capacity):指定容量的字符串緩沖區(qū)對(duì)象
        StringBuffer sb2 = new StringBuffer(50);
        System.out.println("sb2:" + sb2);
        System.out.println("sb2.capacity():" + sb2.capacity());
        System.out.println("sb2.length():" + sb2.length());
        System.out.println("--------------------------");

        // public StringBuffer(String str):指定字符串內(nèi)容的字符串緩沖區(qū)對(duì)象
        StringBuffer sb3 = new StringBuffer("hello");
        System.out.println("sb3:" + sb3);
        System.out.println("sb3.capacity():" + sb3.capacity());
        System.out.println("sb3.length():" + sb3.length());
    }
}

/*
運(yùn)行結(jié)果:
sb:
sb.capacity():16
sb.length():0
--------------------------
sb2:
sb2.capacity():50
sb2.length():0
--------------------------
sb3:hello
sb3.capacity():21 // 16+5
sb3.length():5
*/

StringBuffer類的成員方法

  • ** 添加**功能

    • public StringBuffer** append**(String str)

      • 可以把任意類型數(shù)據(jù)添加到字符串緩沖區(qū)里面,并返回字符串緩沖區(qū)本身
      // 創(chuàng)建字符串緩沖區(qū)對(duì)象
      StringBuffer sb = new StringBuffer();
      
      //public StringBuffer append(String str)
      StringBuffer sb2 = sb.append("hello");//將hello添加到StringBuffer緩沖器
      System.out.println("sb:" + sb);
      System.out.println("sb2:" + sb2);
      System.out.println(sb == sb2); // true
      
      StringBuffer sb = new StringBuffer();
      // 鏈?zhǔn)骄幊?sb.append("hello").append(true).append(12).append(34.56);
      System.out.println("sb:" + sb);
      sb.insert(5, "world");
      System.out.println("sb:" + sb);
      
    • public StringBuffer insert(int offset,String str)

      • 在指定位置把任意類型的數(shù)據(jù)插入到字符串緩沖區(qū)里面,并返回字符串緩沖區(qū)本身
  • 刪除功能

    • public StringBuffer deleteCharAt(int index)
      • 刪除指定位置的字符,并返回本身
    • public StringBuffer delete(int start,int end)
      • 刪除從指定位置開始指定位置結(jié)束的內(nèi)容,并返回本身(包左不包右
      // public StringBuffer delete(int start,int
      // end):刪除從指定位置開始指定位置結(jié)束的內(nèi)容,并返回本身
      // 需求:我要?jiǎng)h除world這個(gè)字符串
      // sb.delete(5, 10);
      
      // 需求:我要?jiǎng)h除所有的數(shù)據(jù)
      sb.delete(0, sb.length());
      System.out.println("sb:" + sb);
      
  • 替換功能

    • public StringBuffer replace(int start,int end,String str)
      • 從start開始到end用str替換
      // 需求:我要把world這個(gè)數(shù)據(jù)替換為"節(jié)日快樂"
      sb.replace(5, 10, "節(jié)日快樂");
      System.out.println("sb:" + sb);
      
  • 反轉(zhuǎn)功能

    • public StringBuffer reverse()
        // 添加數(shù)據(jù)
        sb.append("霞青林愛我");
        System.out.println("sb:" + sb);
    
        // public StringBuffer reverse()
        sb.reverse();
        System.out.println("sb:" + sb);
    

/*
result:
sb:霞青林愛我
sb:我愛林青霞
*/
```

  • 截取功能 : 注意返回值類型不再是StringBuffer本身,而是String類型
    • public String substring(int start)
    • public String substring(int start,int end)
      • 截取功能和前面幾個(gè)功能的不同:返回值類型是String類型,本身沒有發(fā)生改變
    public class StringBufferDemo {
    public static void main(String[] args) {
        // 創(chuàng)建字符串緩沖區(qū)對(duì)象
        StringBuffer sb = new StringBuffer();

        // 添加元素
        sb.append("hello").append("world").append("java");
        System.out.println("sb:" + sb);

        // 截取功能
        // public String substring(int start)
        String s = sb.substring(5);
        System.out.println("s:" + s);
        System.out.println("sb:" + sb);

        // public String substring(int start,int end)
        String ss = sb.substring(5, 10);
        System.out.println("ss:" + ss);
        System.out.println("sb:" + sb);
    }
}


StringBuffer類練習(xí)

  • String和StringBuffer的相互轉(zhuǎn)換
    • 注意:不能把字符串的值直接賦值給StringBuffer,可通過以下兩種方式進(jìn)行賦值:
  • String轉(zhuǎn)StringBuffer方法:
    • 方式1:通過構(gòu)造方法
      • StringBuffer sb = new StringBuffer(s);
    • 方式2:通過append()方法
      • StringBuffer sb2 = new StringBuffer();
      • sb2.append(s);
  • StringBuffer轉(zhuǎn)String方法:
    • 注:任何引用類型調(diào)用toString方法都可以轉(zhuǎn)為String類型。
    • 方式1:通過構(gòu)造方法
      • String str = new String(buffer);
    • 方式2:通過toString()方法
      • String str2 = buffer.toString();
public class StringBufferTest {
    public static void main(String[] args) {
        // String -- StringBuffer
        String s = "hello";
        StringBuffer sb2 = new StringBuffer();
        sb2.append(s);
        System.out.println("sb:" + sb);
        System.out.println("sb2:" + sb2);
        System.out.println("---------------");

        // StringBuffer -- String
        StringBuffer buffer = new StringBuffer("java");
        // String(StringBuffer buffer)
        // 方式1:通過構(gòu)造方法
        String str = new String(buffer);
        // 方式2:通過toString()方法
        String str2 = buffer.toString();
        System.out.println("str:" + str);
        System.out.println("str2:" + str2);
    }
}


  • 把數(shù)組拼接成一個(gè)字符串
public class StringBufferTest2 {
    public static void main(String[] args) {
        // 定義一個(gè)數(shù)組
        int[] arr = { 44, 33, 55, 11, 22 };

        //用StringBuffer做拼接的方式
        String s2 = arrayToString2(arr);
        System.out.println("s2:" + s2);
    }

    // 用StringBuffer做拼接的方式
    public static String arrayToString2(int[] arr) {
        StringBuffer sb = new StringBuffer();
        sb.append("[");
        for (int x = 0; x < arr.length; x++) {
            if (x == arr.length - 1) {
                sb.append(arr[x]);
            } else {
                sb.append(arr[x]).append(", ");
            }
        }
        sb.append("]");

        return sb.toString();
    }
}


  • 把字符串反轉(zhuǎn)
public class StringBufferTest3 {
    public static void main(String[] args) {
        // 鍵盤錄入數(shù)據(jù)
        Scanner sc = new Scanner(System.in);
        System.out.println("請(qǐng)輸入數(shù)據(jù):");
        String s = sc.nextLine();

        // 方式1:用String做拼接
        String s1 = myReverse(s);
        System.out.println("s1:" + s1);
        // 方式2:用StringBuffer的reverse()功能
        String s2 = myReverse2(s);
        System.out.println("s2:" + s2);
    }

    // 用StringBuffer的reverse()功能
    public static String myReverse2(String s) {
        // StringBuffer sb = new StringBuffer();
        // sb.append(s);

        // StringBuffer sb = new StringBuffer(s);
        // sb.reverse();
        // return sb.toString();

        // 簡(jiǎn)易版
        return new StringBuffer(s).reverse().toString();
    }

    // 用String做拼接
    public static String myReverse(String s) {
        String result = "";

        char[] chs = s.toCharArray();
        for (int x = chs.length - 1; x >= 0; x--) {
            // char ch = chs[x];
            // result += ch;
            result += chs[x];
        }

        return result;
    }
}


  • 判斷一個(gè)字符串是否是對(duì)稱字符串
    • 例如"abc"不是對(duì)稱字符串,"aba"、"abba"、"aaa"、"mnanm"是對(duì)稱字符串
public class StringBufferTest4 {
    public static void main(String[] args) {
        // 創(chuàng)建鍵盤錄入對(duì)象
        Scanner sc = new Scanner(System.in);
        System.out.println("請(qǐng)輸入一個(gè)字符串:");
        String s = sc.nextLine();

        // 一個(gè)一個(gè)的比較
        boolean b = isSame(s);
        System.out.println("b:" + b);
        
        //用字符串緩沖區(qū)的反轉(zhuǎn)功能
        boolean b2 = isSame2(s);
        System.out.println("b2:"+b2);
    }
    
    public static boolean isSame2(String s) {
        return new StringBuffer(s).reverse().toString().equals(s);
    }

    public static boolean isSame(String s) {
        boolean flag = true;

        // 把字符串轉(zhuǎn)成字符數(shù)組
        char[] chs = s.toCharArray();

        for (int start = 0, end = chs.length - 1; start <= end; start++, end--) {
            if (chs[start] != chs[end]) {
                flag = false;
                break;
            }
        }
        return flag;
    }
}


StringBuffer類面試題

  • 通過查看API了解一下StringBuilder類

    • 此類提供一個(gè)與 StringBuffer 兼容的 API,但不保證同步。該類被設(shè)計(jì)用作 StringBuffer 的一個(gè)簡(jiǎn)易替換,用在字符串緩沖區(qū)被單個(gè)線程使用的時(shí)候(這種情況很普遍)。如果可能,建議優(yōu)先采用該類,因?yàn)樵诖蠖鄶?shù)實(shí)現(xiàn)中,它比 StringBuffer 要快。
  • String , StringBuffer , StringBuilder的區(qū)別

    • A:String是內(nèi)容不可變的,而StringBuffer,StringBuilder都是內(nèi)容可變的。
    • B:StringBuffer同步的,數(shù)據(jù)安全,效率低;
    • C:StringBuilder不同步的,數(shù)據(jù)不安全,效率高
  • StringBuffer數(shù)組的區(qū)別?

    • 二者都可以看出是一個(gè)容器,裝其他的數(shù)據(jù)。
    • StringBuffer的數(shù)據(jù)最終是一個(gè)字符串數(shù)據(jù)。
    • 數(shù)組可以放置多種數(shù)據(jù),但必須是同一種數(shù)據(jù)類型的。
  • 看程序?qū)懡Y(jié)果:
    • String作為參數(shù)傳遞
    • StringBuffer作為參數(shù)傳遞
  • 注意:
    • String作為參數(shù)傳遞,效果和基本類型作為參數(shù)傳遞是一樣的。
    • StringBuffer類型調(diào)用append方法時(shí)內(nèi)存值會(huì)改變
public class StringBufferDemo {
    public static void main(String[] args) {
        String s1 = "hello";
        String s2 = "world";
        System.out.println(s1 + "---" + s2);// hello---world
        change(s1, s2);
        System.out.println(s1 + "---" + s2);// hello---world

        StringBuffer sb1 = new StringBuffer("hello");
        StringBuffer sb2 = new StringBuffer("world");
        System.out.println(sb1 + "---" + sb2);// hello---world
        change(sb1, sb2);
        System.out.println(sb1 + "---" + sb2);// hello---worldworld

    }

    public static void change(StringBuffer sb1, StringBuffer sb2) {
        sb1 = sb2;//StringBuffer類型用`=`賦值的特殊點(diǎn)。
        sb2.append(sb1);
    }

    public static void change(String s1, String s2) {
        s1 = s2;
        s2 = s1 + s2;
    }
}


數(shù)組高級(jí)(排序和查找)

排序

  • 冒泡排序(必須掌握)
    • 相鄰元素兩兩比較,大的往后放,第一次完畢,最大值出現(xiàn)在了最大索引處
public class ArrayDemo {
    public static void main(String[] args) {
        // 定義一個(gè)數(shù)組
        int[] arr = { 24, 69, 80, 57, 13 };
        System.out.println("排序前:");
        printArray(arr);

        //由于我可能有多個(gè)數(shù)組要排序,所以我要寫成方法
        bubbleSort(arr);
        System.out.println("排序后:");
        printArray(arr);
    }
    
    //冒泡排序代碼
    public static void bubbleSort(int[] arr){
        for (int x = 0; x < arr.length - 1; x++) {
            for (int y = 0; y < arr.length - 1 - x; y++) {
                if (arr[y] > arr[y + 1]) {
                    int temp = arr[y];
                    arr[y] = arr[y + 1];
                    arr[y + 1] = temp;
                }
            }
        }
    }

    // 遍歷功能
    public static void printArray(int[] arr) {
        System.out.print("[");
        for (int x = 0; x < arr.length; x++) {
            if (x == arr.length - 1) {
                System.out.print(arr[x]);
            } else {
                System.out.print(arr[x] + ", ");
            }
        }
        System.out.println("]");
    }
}


  • 選擇排序
    • 從0索引開始,依次和后面元素比較,小的往前放,第一次完畢,最小值出現(xiàn)在了最小索引處


public class ArrayDemo {
    public static void main(String[] args) {
        // 定義一個(gè)數(shù)組
        int[] arr = { 24, 69, 80, 57, 13 };
        System.out.println("排序前:");
        printArray(arr);

        //用方法改進(jìn)
        selectSort(arr);
        System.out.println("排序后:");
        printArray(arr);

    }
    
    public static void selectSort(int[] arr){
        for(int x=0; x<arr.length-1; x++){
            for(int y=x+1; y<arr.length; y++){
                if(arr[y] <arr[x]){
                    int temp = arr[x];
                    arr[x] = arr[y];
                     arr[y] = temp;
                }
            }
        }
    }

    // 遍歷功能
    public static void printArray(int[] arr) {
        System.out.print("[");
        for (int x = 0; x < arr.length; x++) {
            if (x == arr.length - 1) {
                System.out.print(arr[x]);
            } else {
                System.out.print(arr[x] + ", ");
            }
        }
        System.out.println("]");
    }
}


練習(xí)題:字符串排序
public class ArrayTest {
    public static void main(String[] args) {
        // 定義一個(gè)字符串
        String s = "dacgebf";

        // 把字符串轉(zhuǎn)換為字符數(shù)組
        char[] chs = s.toCharArray();

        // 把字符數(shù)組進(jìn)行排序
        bubbleSort(chs);

        //把排序后的字符數(shù)組轉(zhuǎn)成字符串
        String result = String.valueOf(chs);
        
        //輸出最后的字符串
        System.out.println("result:"+result);
    }

    // 冒泡排序
    public static void bubbleSort(char[] chs) {
        for (int x = 0; x < chs.length - 1; x++) {
            for (int y = 0; y < chs.length - 1 - x; y++) {
                if (chs[y] > chs[y + 1]) {
                    char temp = chs[y];
                    chs[y] = chs[y + 1];
                    chs[y + 1] = temp;
                }
            }
        }
    }
}


查找

基本查找: 數(shù)組元素?zé)o序
public static int getIndex(int[] arr,int value) {
    int index = -1;
    for(int x=0; x<arr.length; x++) {
        if(arr[x] == value) {
            index = x;
            break;
        }
    }
    return index;
}


二分查找(折半查找) : 數(shù)組元素有序
public class ArrayDemo {
    public static void main(String[] args) {
        //定義一個(gè)數(shù)組
        int[] arr = {11,22,33,44,55,66,77};
        
        //寫功能實(shí)現(xiàn)
        int index = getIndex(arr, 33);
        System.out.println("index:"+index);
        
        //假如這個(gè)元素不存在后有什么現(xiàn)象呢?
        index = getIndex(arr, 333);
        System.out.println("index:"+index);
    }
    
    /*
     * 兩個(gè)明確:
     * 返回值類型:int
     * 參數(shù)列表:int[] arr,int value
     */
    public static int getIndex(int[] arr,int value){
        //定義最大索引,最小索引
        int max = arr.length -1;
        int min = 0;
        
        //計(jì)算出中間索引
        int mid = (max +min)/2;
        
        //拿中間索引的值和要查找的值進(jìn)行比較
        while(arr[mid] != value){
            if(arr[mid]>value){
                max = mid - 1;
            }else if(arr[mid]<value){
                min = mid + 1;
            }
            //加入判斷
            if(min > max){
                return -1;
            }
            mid = (max +min)/2;
        }
        return mid;
    }
}


數(shù)組高級(jí)練習(xí)題

  • 把字符串中的字符進(jìn)行排序。
  • 舉例:”dacgebf”
  • 結(jié)果:”abcdefg”

Arrays類

Arrays類概述

  • 針對(duì)數(shù)組進(jìn)行操作的工具類。提供了排序查找等功能。

Arrays類常用方法

  • public static String toString(int[] a):把數(shù)組轉(zhuǎn)為字符串
  • public static void sort(int[] a):對(duì)數(shù)組進(jìn)行排序
  • public static int binarySearch(int[] a,int key):二分查找
常用方法源碼詳細(xì)解釋
  • public static String toString(int[] a)
  • public static int binarySearch(int[] a,int key)

基本類型包裝類

基本類型包裝類概述

  • 將基本數(shù)據(jù)類型封裝成對(duì)象的好處在于可以在對(duì)象中定義更多的功能方法操作該數(shù)據(jù)。
  • 常用的操作之一:用于基本數(shù)據(jù)類型與字符串之間的轉(zhuǎn)換。
  • 基本類型包裝類的對(duì)應(yīng)
    • byte <---> Byte
    • short <---> Short
    • int <---> Integer
    • long <---> Long
    • float <---> Float
    • double <---> Double
    • char <---> Character
    • boolean <---> Boolean

Integer類

Integer類概述

  • Integer類概述
    • Integer 類在對(duì)象中包裝了一個(gè)基本類型 int 的值
    • 該類提供了多個(gè)方法,能在 int 類型和 String 類型之間互相轉(zhuǎn)換,還提供了處理 int 類型時(shí)非常有用的其他一些常量和方法。

Integer類構(gòu)造方法

  • public Integer(int value)
  • public Integer(String s)
    • 注:這個(gè)字符串必須是由數(shù)字字符串組成。

Integer類成員方法

  • int類型和String類型的相互轉(zhuǎn)換:String.valueOf

    • int –-> String
        int number = 100;
        // 方式1
        String s1 = "" + number;
        System.out.println("s1:" + s1);
    
        // 方式2(最優(yōu))
        String s2 = String.valueOf(number);
        System.out.println("s2:" + s2);
    
        // 方式3
        // int -- Integer -- String
        Integer i = new Integer(number);
        String s3 = i.toString();
        System.out.println("s3:" + s3);
    
        // 方式4
        // public static String toString(int i)
        String s4 = Integer.toString(number);
        System.out.println("s4:" + s4);
        System.out.println("-----------------");
    
    • String –-> int: Integer.parseInt
        // String -- int
        String s = "100";
        // 方式1
        // String --> Integer --> int
        Integer ii = new Integer(s);
        // public int intValue()
        int x = ii.intValue();
        System.out.println("x:" + x);
        //方式2(非常重要)
        //public static int parseInt(String s)
        int y = Integer.parseInt(s);
        System.out.println("y:"+y);
    
  • public int intValue()
  • public static int parseInt(String s)
  • public static String toString(int i)
  • public static Integer valueOf(int i)
  • public static Integer valueOf(String s)
  • 常用的基本進(jìn)制轉(zhuǎn)換
    • public static String toBinaryString(int i)
    • public static String toOctalString(int i)
    • public static String toHexString(int i)
  • 十進(jìn)制到其他進(jìn)制
    • public static String toString(int i,int radix)
  • 其他進(jìn)制到十進(jìn)制
    • public static int parseInt(String s,int radix)

JDK5的新特性

  • 自動(dòng)裝箱:把基本類型轉(zhuǎn)換為包裝類類型

  • 自動(dòng)拆箱:把包裝類類型轉(zhuǎn)換為基本類型

  • JDK1.5以后,簡(jiǎn)化了定義方式。

    • Integer x = new Integer(4);可以直接寫成
    • Integer x = 4;//自動(dòng)裝箱。
    • x = x + 5;//自動(dòng)拆箱。通過intValue方法。
  • 需要注意:

    • 在使用時(shí),Integer x = null;上面的代碼就會(huì)出現(xiàn)NullPointerException。
public class IntegerDemo {
    public static void main(String[] args) {
        // 定義了一個(gè)int類型的包裝類類型變量i
        // Integer i = new Integer(100);
        Integer ii = 100;
        ii += 200;
        System.out.println("ii:" + ii);

        // 通過反編譯后的代碼
        // Integer ii = Integer.valueOf(100); //自動(dòng)裝箱
        // ii = Integer.valueOf(ii.intValue() + 200); //自動(dòng)拆箱,再自動(dòng)裝箱
        // System.out.println((new StringBuilder("ii:")).append(ii).toString());

        Integer iii = null;
        // NullPointerException
        if (iii != null) {
            iii += 1000;
            System.out.println(iii);
        }
    }
}


Integer的面試題

  • Integer i = 1; i += 1;做了哪些事情
  • 緩沖池(看程序?qū)懡Y(jié)果)
    • 注意:Integer的數(shù)據(jù)直接賦值,如果在-128到127之間,會(huì)直接從緩沖池里獲取數(shù)據(jù)
public class IntegerDemo {
    public static void main(String[] args) {
        Integer i1 = new Integer(127);
        Integer i2 = new Integer(127);
        System.out.println(i1 == i2);
        System.out.println(i1.equals(i2));
        System.out.println("-----------");

        Integer i3 = new Integer(128);
        Integer i4 = new Integer(128);
        System.out.println(i3 == i4);
        System.out.println(i3.equals(i4));
        System.out.println("-----------");

        Integer i5 = 128;
        Integer i6 = 128;
        System.out.println(i5 == i6);
        System.out.println(i5.equals(i6));
        System.out.println("-----------");

        Integer i7 = 127;
        Integer i8 = 127;
        System.out.println(i7 == i8);
        System.out.println(i7.equals(i8));

        // 通過查看源碼,我們就知道了,針對(duì)-128到127之間的數(shù)據(jù),做了一個(gè)數(shù)據(jù)緩沖池,如果數(shù)據(jù)是該范圍內(nèi)的,每次并不創(chuàng)建新的空間
        // Integer ii = Integer.valueOf(127);
    }
}

Character類

Character類概述

  • Character類概述
    • Character 類在對(duì)象中包裝一個(gè)基本類型 char 的值,此外,該類提供了幾種方法,以確定字符的類別(小寫字母,數(shù)字,等等),并將字符從大寫轉(zhuǎn)換成小寫,反之亦然

Character類構(gòu)造方法

  • 構(gòu)造方法
    • public Character(char value)

Character類成員方法

  • public static boolean isUpperCase(char ch)
  • public static boolean isLowerCase(char ch)
  • public static boolean isDigit(char ch)
  • public static char toUpperCase(char ch)
  • public static char toLowerCase(char ch)

練習(xí)題:

  • 統(tǒng)計(jì)一個(gè)字符串中大寫字母字符,小寫字母字符,數(shù)字字符出現(xiàn)的次數(shù)。(不考慮其他字符)
    public static void main(String[] args) {
        // 定義三個(gè)統(tǒng)計(jì)變量。
        int bigCount = 0;
        int smallCount = 0;
        int numberCount = 0;

        // 鍵盤錄入一個(gè)字符串。
        Scanner sc = new Scanner(System.in);
        System.out.println("請(qǐng)輸入一個(gè)字符串:");
        String line = sc.nextLine();

        // 把字符串轉(zhuǎn)換為字符數(shù)組。
        char[] chs = line.toCharArray();

        // 歷字符數(shù)組獲取到每一個(gè)字符
        for (int x = 0; x < chs.length; x++) {
            char ch = chs[x];

            // 判斷該字符
            if (Character.isUpperCase(ch)) {
                bigCount++;
            } else if (Character.isLowerCase(ch)) {
                smallCount++;
            } else if (Character.isDigit(ch)) {
                numberCount++;
            }
        }

        // 輸出結(jié)果即可
        System.out.println("大寫字母:" + bigCount + "個(gè)");
        System.out.println("小寫字母:" + smallCount + "個(gè)");
        System.out.println("數(shù)字字符:" + numberCount + "個(gè)");
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,428評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,024評(píng)論 3 413
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,285評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,548評(píng)論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,328評(píng)論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,878評(píng)論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,971評(píng)論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,098評(píng)論 0 286
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,616評(píng)論 1 331
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,554評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,725評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,243評(píng)論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 43,971評(píng)論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,361評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,613評(píng)論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,339評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,695評(píng)論 2 370

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,707評(píng)論 18 399
  • 一、 1、請(qǐng)用Java寫一個(gè)冒泡排序方法 【參考答案】 public static void Bubble(int...
    獨(dú)云閱讀 1,402評(píng)論 0 6
  • java中String的常用方法 1、length()字符串的長(zhǎng)度 例:char chars[]={'a','b'...
    赤赤有名閱讀 2,080評(píng)論 0 10
  • 【程序1】 題目:古典問題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子長(zhǎng)到第三個(gè)月后每個(gè)月又生一對(duì)兔...
    葉總韓閱讀 5,146評(píng)論 0 41
  • 一、git安裝及基本操作1、安裝gitLinux - 打開控制臺(tái),然后通過包管理安裝,在Ubuntu上命令是: W...
    奮擼小菜鳥閱讀 149評(píng)論 0 0