正如整型int有对应的包装整型Integer那样,字符型char也有对应的包装字符型Character。初始化字符包装变量也有三种方式,分别是:直接用等号赋值、调用包装类型的valueOf方法、使用关键字new创建新变量。倘若要把字符包装变量转换成字符变量,则调用包装变量的charValue方法即可。甚至可以对字符包装变量做加减乘除运算,就像之前对待字符变量一般,字符包装类型的基本使用代码示例如下:

		// 声明一个包装字符变量
Character character = 'A';
System.out.println("character="+character);
// 把包装字符变量转换成基本字符变量
char value = character.charValue();
System.out.println("value="+value);
// Character类型与char类型的变量之间允许直接赋值,靠的是“自动装箱”和“自动拆箱”
Character plusResult = (char) (character+1);
System.out.println("plusResult="+plusResult);

注意到上述代码里面,包装字符变量character直接加一,相加之和强制转成char类型后又直接赋给另一个包装变量plusResult。这里不免令人疑惑,整型和浮点型同属于基本类型,它们的变量相互赋值尚且需要显式的强制类型转换;如今有Character和char,一个是包装类型,另一个是基本类型,为何它们的变量相互赋值不需要强制转换类型呢?这是因为包装类型仅仅对基本类型加了一层封装而已,内部的数据格式并没有发生变化,所以为了尽量减少代码的改动,在包装变量和基本变量之间赋值的时候,编译器会自动进行装箱和拆箱操作。所谓装箱,指的是编译器会默认调用valueOf方法,将基本类型的变量转换成对应包装类型的变量;至于拆箱,指的是编译器会默认调用***Value方法,将包装类型的变量转换成对应基本类型的变量。通过自动装箱和自动拆箱,Java代码实现了包装变量与基本变量的无缝衔接,从而简化了相关处理代码。
除了上面说的基本方法,Character类型针对文本加工操作,额外提供了一些字符处理方法,主要说明如下:
isDigit:判断输入的字符是否为数字。
isLetter:判断输入的字符是否为字母。
isLowerCase:判断输入的字符是否为小写字母。
isUpperCase:判断输入的字符是否为大写字母。
isSpaceChar:判断输入的字符是否为空格。
isWhitespace:判断输入的字符是否为空白(非数字非字母非标点)。
toLowerCase:输入一个字符,如果原字符是大写字母,则返回对应的小写字母;否则原样返回该字符。
toUpperCase:输入一个字符,如果原字符是小写字母,则返回对应的大写字母;否则原样返回该字符。
以上的字符处理方法,均需按照“Character.方法名称(输入字符)”的形式调用,具体的方法调用代码举例如下:

		Character character = 'A';
// isDigit方法判断字符是否为数字
boolean isDigit = Character.isDigit(character);
System.out.println("isDigit="+isDigit);
// isLetter方法判断字符是否为字母
boolean isLetter = Character.isLetter(character);
System.out.println("isLetter="+isLetter);
// isLowerCase方法判断字符是否为小写
boolean isLowerCase = Character.isLowerCase(character);
System.out.println("isLowerCase="+isLowerCase);
// isUpperCase方法判断字符是否为大写
boolean isUpperCase = Character.isUpperCase(character);
System.out.println("isUpperCase="+isUpperCase);
Character line = '\n';
// isSpaceChar方法判断字符是否为空格
boolean isSpaceChar = Character.isSpaceChar(line);
System.out.println("isSpaceChar="+isSpaceChar);
// isWhitespace方法判断字符是否为空白(非数字非字母非标点)
boolean isWhitespace = Character.isWhitespace(line);
System.out.println("isWhitespace="+isWhitespace);
// isWhitespace方法把字符转换为大写
char lowerCase = Character.toLowerCase(character);
System.out.println("lowerCase="+lowerCase);
// isWhitespace方法把字符转换为小写
char upperCase = Character.toUpperCase(character);
System.out.println("upperCase="+upperCase);

  

更多Java技术文章参见《Java开发笔记(序)章节目录

Java开发笔记(三十三)字符包装类型的更多相关文章

  1. Java开发笔记(十三)利用关系运算符比较大小

    前面在<Java开发笔记(九)赋值运算符及其演化>中提到,Java编程中的等号“=”表示赋值操作,并非数学上的等式涵义.Java通过等式符号“==”表示左右两边相等,对应数学的等号“=”: ...

  2. Java开发学习(三十三)----Maven私服(一)私服简介安装与私服分类

    一.私服简介 团队开发现状分析 (1)张三负责ssm_crm的开发,自己写了一个ssm_pojo模块,要想使用直接将ssm_pojo安装到本地仓库即可 (2)李四负责ssm_order的开发,需要用到 ...

  3. Java开发笔记(序)章节目录

    现将本博客的Java学习文章整理成以下笔记目录,方便查阅. 第一章 初识JavaJava开发笔记(一)第一个Java程序Java开发笔记(二)Java工程的帝国区划Java开发笔记(三)Java帝国的 ...

  4. Java开发笔记(三十一)字符类型的表达

    前面介绍的Java编程,要么是与数字有关的计算,要么是与逻辑有关的推理,充其量只能实现计算器和状态机.若想让Java运用于更广阔的业务领域,就得使其支撑更加血肉丰满的业务场景,而丰满的前提是能够表达大 ...

  5. Java开发笔记(二十七)数值包装类型

    方法的出现缘起优化代码结构,但它的意义并不局限于此,正因为有了方法定义,编程语言才更像一门能解决实际问题的工具,而不仅仅是只能用于加减乘除的计算器.在数学的发展过程中,为了表示四则运算,人们创造了加减 ...

  6. Java开发笔记(二十八)布尔包装类型

    前面介绍了数值包装类型,因为不管是整数还是小数,它们的运算操作都是类似的,所以只要学会了Integer的用法,其它数值包装类型即可一并掌握.但是对于布尔类型boolean来说,该类型定义的是“true ...

  7. Java开发笔记(三十二)字符型与整型相互转化

    前面提到字符类型是一种新的变量类型,然而编码实践的过程中却发现,某个具体的字符值居然可以赋值给整型变量!就像下面的例子代码那样,把字符值赋给整型变量,编译器不但没报错,而且还能正常运行! // 字符允 ...

  8. Java开发笔记(一百三十三)Swing的菜单

    传统的桌面程序基本是对某种类型的文件进行加工,例如Window自带的记事本用来读写文本文件,自带的画图程序用来查看和修改位图文件.为了方便用户切换各种操作,这些程序在窗口顶端放了一排菜单栏,单击菜单栏 ...

  9. Java开发笔记(三十四)字符串的赋值及类型转换

    不管是基本的char字符型,还是包装字符类型Character,它们的每个变量只能存放一个字符,无法满足对一串字符的加工.为了能够直接操作一连串的字符,Java设计了专门的字符串类型String,该类 ...

随机推荐

  1. 盒子模型/div标签/益出处理

    /* <div></div>没有任何功能,不属于功能标签 可以放文字,图片以及各种元素的块标签 常常用来布局 span标签属于行内标签,无法设置宽高 */ <!docty ...

  2. c# 钩子类

    using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using S ...

  3. ASP.NET Core知多少(6):VS Code联调Angular + .NetCore

    ASP.NET Core知多少系列:总体介绍及目录 1. 引言 最近在看<程序员的成长课>,讲到程序员如何构建技能树,印象深刻.作为一名后台开发的程序员,深感技能单一,就别说技能树了.作为 ...

  4. 算法与数据结构(十一) 平衡二叉树(AVL树)(Swift版)

    今天的博客是在上一篇博客的基础上进行的延伸.上一篇博客我们主要聊了二叉排序树,详情请戳<二叉排序树的查找.插入与删除>.本篇博客我们就在二叉排序树的基础上来聊聊平衡二叉树,也叫AVL树,A ...

  5. vue1.0与vue2.0对于v-for的使用的区别

    vue1.0与vue2.0对于v-for的使用的区别: 1,vue1.0中有$index,而vue2.0将$index移除. 2,vue1.0中(index,item) in list 而vue2.变 ...

  6. 深入理解Spring Redis的使用 (四)、RedisTemplate执行Redis脚本

    对于Redis脚本使用过的同学都知道,这个主要是为了防止竞态条件而用的.因为脚本是顺序执行的.(不用担心效率问题)比如我在工作用,用来设置考试最高分. 如果还没有用过的话,先去看Redis脚本的介绍, ...

  7. 在Windows、Mac和 Linux系统中安装Python与 PyCharm

    “工欲善其事,必先利其器”,本文介绍 Python环境的安装和 Python的集成开发环境(IDE) PyCharn的安装.   一.Python安装( Windows.Mac和 Linux) 当前主 ...

  8. [Swift]LeetCode367. 有效的完全平方数 | Valid Perfect Square

    Given a positive integer num, write a function which returns True if num is a perfect square else Fa ...

  9. [Swift]LeetCode882. 细分图中的可到达结点 | Reachable Nodes In Subdivided Graph

    Starting with an undirected graph (the "original graph") with nodes from 0 to N-1, subdivi ...

  10. RHEL,红帽CentOS7linux进入单用户(紧急救援)模式修改密码

    centos7进入单用户模式   当我们设置用户密码时,有可能会忘记,这时如何登陆呢,单用户模式就可以 首先我们进入开机界面,按e进行选择 会进入以下界面, 然后找到图中红线标注的该行,在行尾添加 i ...