java运行中汉子也算字母吗

Python010

java运行中汉子也算字母吗,第1张

不是,汉字是符号。java里采用的是Unicode编码,其中我们熟知的utf-8是其的一种实现,在这种编码格式下,汉字一般占用3个字节。UTF-8最大的一个特点,就是它是一种变长的编码方式。1~6个汉字是一个符号,根据不同的符号而变化字节长度。Unicode编码长度是固定的,无论是数字、英文还是火星文。所以Unicode编码有点浪费空间。UTF8是针对unicode的空间浪费现象,它的字符的长度是动态的。

【实例描述】

字符串中可以包含数字,字母、汉字或者其他字符。使用Character类的isDigit()方法可以判断字符中的某个字符是否为数字,使用Character类的isLetter()方法可以判断字符中的某个字符是否为字母。实例中将介绍一种方法用来判断字符串中的某个字符是否为汉字,通过此方法可以计算字符串中汉字的数量。实例的运行效果如图4.24所示。

【实现过程】

在Eclipse中新建项目ChineseCharacter,并在其中创建一个ChineseCharacter.java文件。在该类的主方法中创建标准输入流的扫描器对象,接收用户输入的字符串。我们在程序中使用matches()方法来统计该字符串中汉字的个数。核心代码如下所示:

protectedvoiddo_button_actionPerformed(ActionEvente){Stringtext=chineseArea.getText()//获取用户输入intamount=0//创建汉字数量计数器for(inti=0i<text.length()i++){//遍历字符串每一个字符//使用正则表达式判断字符是否属于汉字编码booleanmatches=Pattern.matches("^[\u4E00-\u9FA5]{0,}$",""+text.charAt(i))if(matches){//如果是汉字amount++//累加计数器}}umField.setText(amount+"")//在文本框显示汉字数量}

【代码解析】

本实例的关键点在于正则表达式的使用。Java提供了Pattern用于正则表达式的编译表示形式,该类提供的静态方法matches()可以执行正则表达式的匹配。该方法编译给定正则表达式并尝试给定输入与其匹配。如果要匹配的字符序列与正则表达式匹配则返回true,否则返回false。其声明语法如下:

publicstaticbooleanmatches(Stringregex,CharSequenceinput)【知识扩展】

使用正则表达式可以方便地进行字符串操作,正则表达式经常被用来验证用户输入的信息,如可以判断用户输入的格式是否正确。本实例中使用正则表达式来判断用户输入的字符串是否为汉字,如果为汉字则计数器加1,最后得到字符串中所有汉字的数量。

可能是2个、3个、4个字节。不同的编码格式占字节数是不同的,UTF-8编码下一个中文所占字节也是不确定的。

1 java中,只要是字符,不管是数字还是英文还是汉字,都占两个字节,都是一个char。

char c1 = '中'char c2 = 'A'char c3 = '1'

确切说,Unicode编码是指一类编码的统称,而非某个具体编码。

utf-8跟unicode是不一样的。

2 以utf8为例,utf8是一个变长编码标准,可以以1~4个字节表示一个字符,而中文占3个字节,ascII字符占1个字节。

3  因为java是以unicode作为编码方式的。unicode是一个定长的编码标准,每个字符都是2个字节,也就是1个char类型的空间。