Tag: 原始类型

为什么string.indexOf方法的参数是Java中的int

我想知道为什么indexOf方法的参数为int,当描述为char时。 public int indexOf(int ch) Returns the index within this string of the first occurrence of the specified **character** http://download.oracle.com/javase/1,5.0/docs/api/java/lang/String.html#indexOf%28int%29 Also, both of these compiles fine: char c = ‘p’; str.indexOf(2147483647); str.indexOf(c); a]基本上,我很困惑的是java中的int是32位,而unicode字符是16位。 b]为什么不使用字符本身而不是使用int。 这是任何性能优化吗? 字符难以表示而不是整数吗? 怎么样 ? 我认为这应该是一个简单的推理,这让我更加了解它! 谢谢!

在原始类类型上忽略显式方法类型参数; 编译bug?

我在调用带有显式类型参数的generics方法时遇到编译器错误,就好像未考虑显式类型参数一样。 最小的例子: class CastExample { static class ThingProducer { public T getThing() { return null; } } static class ThingA {} public static void main(String… args) { ThingProducer thingProducer = new ThingProducer(); ThingA thingA = thingProducer.getThing(); // compile error here } } ThingProducer是一个原始类型,因为类有一个类型参数,但在调用getThing我们没有引用类类型参数,而是提供方法类型参数。 根据我对JLS的理解,这应该是合法的,但它给了我这个错误: incompatible types: Object cannot be converted to ThingA 如果我,错误消失 从ThingProducer删除 或使getThing静态 […]

使用generics类实现Comparable

我想定义一个实现通用Comparable接口的类。 在我的课堂上,我还定义了一个generics类型元素T 为了实现接口,我将比较委托给T 这是我的代码: public class Item<T extends Comparable> implements Comparable { private int s; private T t; public T getT() { return t; } @Override public int compareTo(Item o) { return getT().compareTo(o.getT()); } } 当我尝试编译它时,我收到以下错误信息: Item.java:11: error: method compareTo in interface Comparable cannot be applied to given types; return getT().compareTo(o.getT()); ^ required: T#1 found: […]

为什么在java中有每个基本类型的包装器

Number子类包装原始数字类型( Byte , Integer , Double , Float , Long和Short )。 他们的目的是什么?

原始类型和包装类之间的主要区别是什么?

这两行有什么区别? int pInt = 500; 和 Integer wInt = new Integer(pInt); 要么 Integer wInt = new Integer(500);

Java如何在RAM中存储原始类型?

这不是关于基元是否进入堆栈或堆,而是关于它们在实际物理RAM中保存的位置。 举一个简单的例子: int a = 5; 我知道5会被存储到内存块中。 我感兴趣的领域是变量’a’存储在哪里? 相关子问题: ‘a’与包含原始值5的内存块关联的位置在哪里? 是否有另一个内存块来保存’a’? 但这似乎是一个指向对象的指针,但这是一个原始类型。

在Java中,原始类型和数组是否包含包含?

在Java中,原始类型和数组是否包含包含? 可能不是,但只是想确定。

Java:为什么我不能将int转换为Long

Java中的所有数字都应该是int类型。 以下行在Java> 1.5中是合法的 Short s = 1; // Will compile to Short s = Short.valueOf((short)1) – thus you can’t exceed short max value ie Short s = 4444; // is invalid for autoboxing 相同的机制用于Integer和Byte实例化。 但Long的工作完全不同。 以下代码给出了编译时错误 Long l = 10; Long使用相同的方法进行长类型的自动装箱,所以 Long l = 10L; //is valid and is translated into Long.valueOf(10L) 我不明白为什么int不能分配给Long变量。 对此事有何想法?

int.class在Java中是否等于Integer.class或Integer.TYPE?

让我们假设使用reflection检索Field的声明类型。 以下哪个测试将正确指示是否正在处理int或Integer ? Field f = … Class c = f.getDeclaringClass(); boolean isInteger; isInteger = c.equals(Integer.class); isInteger = c.equals(Integer.TYPE); isInteger = c.equals(int.class); isInteger = ( c == Integer.class); isInteger = ( c == Integer.TYPE); isInteger = ( c == int.class);

比较Java中的两个基元数组?

我知道Arrays.deepEquals(Object [],Object [])但这对原始类型不起作用(由于数组和自动装箱的限制,请参阅此相关文章 )。 考虑到这一点,这是最有效的方法吗? boolean byteArrayEquals(byte[] a, byte[] b) { if (a == null && b == null) return true; if (a == null || b == null) return false; if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { if (a[i] != b[i]) return false; } return […]