当前位置: 首页 > 面试题库 >

Java中Character.isAlphabetic和Character.isLetter有什么区别?

宋嘉懿
2023-03-14
问题内容

Java中Character.isAlphabetic()和Character.isLetter()有什么区别?一个人何时应使用一个,何时应使用另一个?


问题答案:

根据API文档,如果字符具有以下任何常规类别类型,则isLetter()返回true:UPPERCASE_LETTER(Lu),LOWERCASE_LETTER(Ll),TITLECASE_LETTER(Lt),MODIFIER_LETTER(Lm),OTHER_LETTER(Lo)。如果比较isAlphabetic(),则它具有相同的内容,但添加LETTER_NUMBER(Nl),以及具有Other_Alphabetic属性的任何字符。

在实践中这意味着什么?每个字母都是字母,但并非每个字母都是字母-在Java 7(使用Unicode
6.0.0)中,BMP中有824个字符是字母,而不是字母。一些示例包括0345(用于多调希腊语的组合器),始于05B0的希伯来语元音点(niqqud),诸如0610的锯(“愿他安息”)之类的阿拉伯语敬语,阿拉伯语元音点……等等。

但基本上,对于英文文本而言,区别没有区别。对于其他一些语言,这种区别可能会有所作为,但是很难预先预测出实际可能会有什么区别。如果可以选择,最好的答案可能是isLetter()-将来可以随时更改以允许添加其他字符,但是减少可接受的字符集可能会更困难。



 类似资料:
  • 问题内容: 我只是想知道为什么我们通常在两个布尔之间使用逻辑OR 而不是按位OR ,尽管它们都运行良好。 我的意思是,请看以下内容: 我们可以代替使用吗?与和相同。 问题答案: 如果您使用和形式,而不是这些运算符的和形式,则Java不会费心地单独评估右手操作数。 这是您是否希望缩短评估时间的问题-在 大多数情况 下都是如此。 说明短路好处的一个好方法是考虑以下示例。 正如Jeremy和Peter提

  • 问题内容: 我一直认为Java 中的运算符用于验证其两个布尔操作数是否均为,并且该&运算符用于对两种整数类型进行按位运算。 最近我知道,也可以使用运算符来验证其两个布尔操作数是否均为,唯一的区别是即使LHS操作数为false,它也会检查RHS操作数。 Java中的运算符是否在内部重载?还是在这背后有其他概念? 问题答案: <-验证两个操作数 <-停止评估第一个操作数是否为false,因为结果为fa

  • 问题内容: 我在看一些模拟的OCJP问题。我遇到了一个非常令人困惑的语法。这里是: 为什么输出在和之间变化? 问题答案: 问题只是和您玩弄混乱的空格。 是通常的(不等于)比较。 另一方面: 最好写成如下形式: 因此,这是两个运算符。 首先反转。 然后将其分配回。 赋值运算符返回分配的值。因此,计算结果为true-这就是您要打印的内容。

  • 问题内容: 在线查看职位空缺时,我注意到某些职位需要“核心Java”知识。什么是核心Java,它与Java有何不同? 问题答案: “核心Java”是Sun的术语,用于指 Java SE,标准版 和一组相关技术,例如Java VM,CORBA等。这主要是为了区别于Java ME或Java EE。 还要注意,他们在谈论的是一组库,而不是编程语言。也就是说,无论使用什么库,编写Java的基本方式都不会改

  • 问题内容: 例如,为什么可以这样做: 但不是: 你可以执行以下操作: 但不是: 问题答案: 是原始类型。类型的变量int存储要表示的整数的实际二进制值。没有意义,因为int它不是类,因此没有任何方法。 是一个类,与Java语言中的其他类没有什么不同。类型变量存储对对象的引用,就像存储任何其他引用(对象)类型一样。是对类的静态方法的调用(请注意,此方法实际上返回而不是)。 更具体地说,是一个具有单个

  • 问题内容: PS:我了解“真实”与真实之间的区别。 编辑:我也明白Boolean.TRUE是原始true的包装,然后我的问题是-为什么原始boolean接受Boolean.TRUE作为值?例如, 似乎是一个有效的声明。 问题答案: 原因 之所以 起作用 ,是因为 autounboxing 是Java 5的一项功能,该功能允许包装器对象在需要时自动转换为其等效的原始对象。相反, autoboxing