-1

是否可以执行以下操作

for (int i = 0; i < chararray.length; i++) {
    Character myChar = new Character (chararray[i]);

    if (myChar.getClass() == char) {
        body of method;
    }
}

基本上我想测试存储在位置的值是否i属于chararray某种数据类型,例如。是 AZ 还是数字 1-100。谢谢。

4

5 回答 5

1

如果您要做的只是检查一个字符是字母还是数字,您可以这样做:

for (int i = 0; i < chararray.length; i++) {
    if (Character.isLetterOrDigit(chararray[i])) {
        // this character is a letter or a digit
    }
}
于 2013-09-15T06:56:31.083 回答
0

如果你想测试一个类是否是某个原始类,你应该这样做

Class cls = ...
if (cls == char.class) {
   ...
于 2013-09-15T06:54:33.210 回答
0

您可以使用 等获取原语的char.classint.class

也就是说,我可以告诉你,两件事之一是正确的:

  • 如果chararray是 a char[],那么其中的每个元素都是类型char(从不Character)。Achar[]只能保存char原语。
  • ifchararray是一个可能Character包含对象(Object[],Character[]T[])的引用类型数组,那么该元素永远不会是 a char,因为原始类型不能存储在引用类型数组中。

在后一种情况下,根据数组的类型,您可能需要也可能不需要进行检查。如果它是 a Character[],则只有Characters 可以在其中(好吧,或者任何属于 的子类,因为它是最终类Character,所以什么都不是)。Character同样,如果它是Integer,它只会包含Integers。如果是Object,它可以包含任何引用类型,您需要进行反射检查或提出不同的设计。

装箱和自动装箱可以隐藏引用类型和原始类型之间的区别,但它们确实不同,并且两者都不是子类型(或可分配给,除非通过自动装箱/拆箱)。

于 2013-09-15T07:03:05.113 回答
-1

一个 char 以两个字节编码。它的值可以是 0-65535。这些值可以解释为 Unicode。但是由您决定是否需要数字是它的 Unicode 解释。您无法找出应该以哪种方式解释它,因为程序员如何决定值代表什么。你想做一些不必要的事情。你可以选择自己代表什么char

看看http://docs.oracle.com/javase/tutorial/i18n/text/charintro.html

假设ch是类型char。如果你想知道 Unicode 解释是否真的是一个字母,你可以使用这个:Character.isLetter(ch)

如果要检查它是否是数字使用: Character.isDigit(ch)

于 2013-09-15T06:56:24.520 回答
-1

您还可以使用 .instanceOf() 方法检查对象类型。

于 2013-09-15T06:57:47.517 回答