是否可以执行以下操作
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。谢谢。
是否可以执行以下操作
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。谢谢。
如果您要做的只是检查一个字符是字母还是数字,您可以这样做:
for (int i = 0; i < chararray.length; i++) {
if (Character.isLetterOrDigit(chararray[i])) {
// this character is a letter or a digit
}
}
如果你想测试一个类是否是某个原始类,你应该这样做
Class cls = ...
if (cls == char.class) {
...
您可以使用 等获取原语的char.class
类int.class
。
也就是说,我可以告诉你,两件事之一是正确的:
chararray
是 a char[]
,那么其中的每个元素都是类型char
(从不Character
)。Achar[]
只能保存char
原语。chararray
是一个可能Character
包含对象(Object[]
,Character[]
等T[]
)的引用类型数组,那么该元素永远不会是 a char
,因为原始类型不能存储在引用类型数组中。在后一种情况下,根据数组的类型,您可能需要也可能不需要进行检查。如果它是 a Character[]
,则只有Character
s 可以在其中(好吧,或者任何属于 的子类,因为它是最终类Character
,所以什么都不是)。Character
同样,如果它是Integer
,它只会包含Integer
s。如果是Object
,它可以包含任何引用类型,您需要进行反射检查或提出不同的设计。
装箱和自动装箱可以隐藏引用类型和原始类型之间的区别,但它们确实不同,并且两者都不是子类型(或可分配给,除非通过自动装箱/拆箱)。
一个 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)
您还可以使用 .instanceOf() 方法检查对象类型。