001-Character类的使用实例

在字符串操作中,底层大量使用了Character类,在日常开发中,也经常用到如:toTitleCase、isSpaceChar、toUpperCaseCharArray等方法,以下就以简单实例来展示Character类的使用。

实例中同时用到Scanner类,使用此类时要注意以下几点:

        1、next方法只能获取非空信息:从第一个非空字符开始获取,直到空字符结束(\t、\r、\f、空格等空字符)

        2、代码中有多个Scanner实例,但只能在主方法用完后关闭输入流,原因在后面的博文中介绍

package com.javademo.datatype;

import java.io.PrintStream;
import java.util.Scanner;

/**
 * Character类使用示例
 * @author 王刚
 */
public class CharacterDemo {
    static PrintStream out = System.out;
    String strPrompt = "请输入字符(直接回车返回菜单):";

    public static void main(String[] args) {
        CharacterDemo charDemo = new CharacterDemo();

        String strMenu = "****************************" +
                "\n* 1:大小写转换" +
                "\n* 2:输出ASSIC码和十进制数值" +
                "\n* 3:与前一输入是否相等" +
                "\n* 4:是否是空字符" +
                "\n* 5:是否可组成java标识符,是否可作为java标识符的首字母" +
                "\n* 其它:退出" +
                "\n*****************************";
        out.println(strMenu);

        Scanner sc = new Scanner(System.in);
        int in = sc.nextInt();
        while(true){
            switch (in){
                case 1:
                    charDemo.caseInterchange();
                    break;
                case 2:
                    charDemo.printAssicAndNum();
                    break;
                case 3:
                    charDemo.equalPre();
                    break;
                case 4:
                    charDemo.isWhitespace();
                    break;
                case 5:
                    charDemo.legitimacy();
                    break;
                default:
                    sc.close();
                    System.exit(0);
            }
            out.println(strMenu);
            in = sc.nextInt();
        }
    }

    /**
     * description:
     *      isLowerCase方法:判断字符是否是小写,是小写返回true
     *      toUpperCase方法:将字符转换成大写
     *      toLowerCase方法:将字符转换成小写
     */
    public void caseInterchange(){
        Scanner sc = new Scanner(System.in);
        Character ch = null;
        String strIn = null;

        out.println(strPrompt);
        while(true){
            strIn=sc.nextLine();
            if(null == strIn || "".equals(strIn)){
                break;
            }
            ch = strIn.charAt(0);
            if(!Character.isLetter(ch)){
                out.println("要进行大小写转换的字符必须是a-z或A-Z的字母");
            }else {
                char result = Character.isLowerCase(ch) ? Character.toUpperCase(ch) : Character.toLowerCase(ch);
                out.println(result);
            }

            out.println(strPrompt);
        }
    }

    /**
     * description:
     *      isDigit方法:判断是否是数字
     *      isLetter方法:判断是否是字符
     *      getNumericValue方法:获取字符对应的十进制数
     */
    public void printAssicAndNum(){
        Scanner sc = new Scanner(System.in);
        Character ch = null;
        String strIn = null;

        out.println(strPrompt);
        while(true){
            strIn=sc.nextLine();
            if(null == strIn || "".equals(strIn)){
                break;
            }
            ch = strIn.charAt(0);
            boolean isNum = Character.isDigit(ch) || Character.isLetter(ch);
            out.printf("字符%c的ASSIC码是:%d, 十进制数值是:%d\n", ch, (int)ch, isNum? Character.getNumericValue(ch):-1);

            out.println(strPrompt);
        }
    }

    /**
     *  Description:
     *      ASSIC码转字符:(char)64
     *      字符转ASSIC码:(int)'c'
     *      valueOf方法:将char字符转换成Character
     */
    public void equalPre() {
        Scanner sc = new Scanner(System.in);
        Character oldCh = null;
        Character ch = null;
        int in = -1;

        out.println("请输入字符的ASSIC码");
        while(true){
            in = sc.nextInt();
            if(-1 == in){
                break;
            }
            ch = Character.valueOf((char)in);
            if (null != oldCh) {
                if (ch.equals(oldCh)) {
                    out.println("与前一字符相同");
                } else {
                    out.println("与前一字符不相同");
                }
            }

            oldCh = ch;
            out.println("请输入字符的ASSIC码");
        }
    }
    /**
     * description:
     *     isWhitespace方法:判断字符是否为\t、\r、\f、空格等空字符
     *     注:
     *          Scanner的next方法无法空字符,nextLine方法无法获取本次输入的回车符,但可能会上次输入的回车符
     */
    public void isWhitespace(){
        Scanner sc = new Scanner(System.in);
        String strIn = null;

        out.println(strPrompt);
        while(true){
            strIn=sc.nextLine();
            if(null == strIn || "".equals(strIn)){
                break;
            }
            out.println(Character.isWhitespace(strIn.charAt(0)));

            out.println(strPrompt);
        }
    }

    /**
     * Description:
     *      isJavaIdentifierStart方法:判断是否可以作为标识符的首字符
     *      isJavaIdentifierPart方法:判断是否可以作为标识符首字符外的其它字符
     */
    public void legitimacy(){
        Scanner sc = new Scanner(System.in);
        Character ch =null;
        String strIn = null;

        out.println(strPrompt);
        while(true){
            strIn=sc.nextLine();
            if(null == strIn || "".equals(strIn)){
                break;
            }
            ch = strIn.charAt(0);
            boolean isIdentifierStart = Character.isJavaIdentifierStart(ch);
            boolean isIdentifierPart = Character.isJavaIdentifierPart(ch);
            out.printf("%c是否可做标识符的首字母:%b,是否可做标识的其它部分:%b\n", ch, isIdentifierStart, isIdentifierPart);

            out.println(strPrompt);
        }
    }
}

                

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值