Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当另一项为原始数据类型时与getClass()比较_Java - Fatal编程技术网

Java 当另一项为原始数据类型时与getClass()比较

Java 当另一项为原始数据类型时与getClass()比较,java,Java,是否可以执行以下操作 for (int i = 0; i < chararray.length; i++) { Character myChar = new Character (chararray[i]); if (myChar.getClass() == char) { body of method; } } for(int i=0;i

是否可以执行以下操作

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

    if (myChar.getClass() == char) {
        body of method;
    }
}
for(int i=0;i

基本上,我想测试存储在
chararray
I
位置的值是否属于特定的数据类型,例如,是a-Z还是数字1-100。谢谢。

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

Class cls = ...
if (cls == char.class) {
   ...

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

假设
ch
属于
char
类型。 如果您想知道Unicode解释是否实际上是一个字母,可以使用以下命令:
Character.isleter(ch)

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

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

for (int i = 0; i < chararray.length; i++) {
    if (Character.isLetterOrDigit(chararray[i])) {
        // this character is a letter or a digit
    }
}
for(int i=0;i
您还可以使用.instanceOf()方法检查对象类型。

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

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

  • 如果
    chararray
    char[]
    ,则其中的每个元素都将是
    char
    (从不
    Character
    )类型。
    char[]
    只能保存
    char
    原语
  • 如果
    chararray
    是可能包含
    Character
    对象(
    Object[]
    Character[]
    T[]
    等)的引用类型数组,那么元素将永远不会是
    char
    ,因为基元类型不能存储在引用类型数组中
在后一种情况下,根据数组的类型,您可能需要也可能不需要进行检查。如果是
Character[]
,则只有
Character
s可以在其中(或者是
Character
的子类,因为
Character
是最后一个类,所以它什么都不是)。类似地,如果它是
Integer
,它将只包含
Integer
s。如果它是
对象
,它可以保存任何引用类型,您需要进行反射检查或提出不同的设计


装箱和自动装箱可以隐藏引用类型和基元类型之间的区别,但它们确实是不同的,并且子类型(或可分配给其他子类型,除非通过自动装箱/取消装箱)。

chararray的类型是什么?它是如何声明的?A-Z和1-100不是“数据类型”。它们是值范围。你提出的问题没有意义。呃,不。字符是2字节。舒尔,我的错误,纠正了它。你纠正了部分错误,但主要错误仍然存在。它可以有
0..65535中的值。
它们不是ASCII,而是Unicode。Java中没有
.instanceOf()
方法。