是否可以执行以下操作
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[],则只有Characters 可以在其中(好吧,或者任何属于 的子类,因为它是最终类Character,所以什么都不是)。Character同样,如果它是Integer,它只会包含Integers。如果是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() 方法检查对象类型。