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()
方法。