首先,我的问题是关于如何将原始类型int
转换为String
而无需成为Object,从而没有toString()
方法来获取String
值。我非常了解您如何看似“在Java中将原始类型int
的变量转换为String
。我使用的最简单方法是:
int x = 5;
String y = "" + x;
这很好,但是我的问题是:
由于原始类型int
不是对象,因此没有任何方法,例如toString()
方法,据我所知,这样才能获取变量的String
值...如果没有此方法,如何识别变量的值基本方法?
参考方案
通常,通过调用以下两种方法之一将int
值转换为String
:
StringBuilder.append(int i)
String.valueOf(int i)
对于其他原始值,将使用这两种方法的相应重载。
StringBuilder.append()
编译器将"" + x
表达式实现为:
new StringBuilder().append("").append(x).toString()
将x
声明为int
,这意味着将调用带有append()
参数的int
重载。
append(int)
的源代码(Java 1.8.0_65)为:
@Override
public StringBuilder append(int i) {
super.append(i);
return this;
}
super
调用导致:
public AbstractStringBuilder append(int i) {
if (i == Integer.MIN_VALUE) {
append("-2147483648");
return this;
}
int appendedLength = (i < 0) ? Integer.stringSize(-i) + 1
: Integer.stringSize(i);
int spaceNeeded = count + appendedLength;
ensureCapacityInternal(spaceNeeded);
Integer.getChars(i, spaceNeeded, value);
count = spaceNeeded;
return this;
}
String.valueOf()
在不使用字符串连接的情况下将值转换为String时,通常是通过调用String.valueOf()
来完成的。对于表示 int
的valueOf(int)
值:
public static String valueOf(int i) {
return Integer.toString(i);
}
Integer.toString()
调用为:
public static String toString(int i) {
if (i == Integer.MIN_VALUE)
return "-2147483648";
int size = (i < 0) ? stringSize(-i) + 1 : stringSize(i);
char[] buf = new char[size];
getChars(i, size, buf);
return new String(buf, true);
}
Integer.getChars()
如您所见,两者都是通过实际调用package-private方法Integer.getChars(int i, int index, char[] buf)
来实现的。
它们实际上都没有创建Integer
实例,即使JLS暗示会这样做。
java有没有办法将int转换为ascii符号? 参考方案 您是否要将int转换为char?:int yourInt = 33; char ch = (char) yourInt; System.out.println(yourInt); System.out.println(ch); // Output: // 33 // ! 还是要将int转换为Stri…
Java:我可以在Hashmaps中使用数组吗? - java我可以在Hashmaps中使用数组吗?如果是这样,则声明这种哈希图的确切语法是什么?谢谢 参考方案 数组也是对象。甚至像int[]这样的原始数组。Map<String,String[]> map = new HashMap<String,String[]>();
Java:找到特定字符并获取子字符串 - java我有一个字符串4.9.14_05_29_16_21,我只需要获取4.9。数字各不相同,所以我不能简单地获得此char数组的前三个元素。我必须找到最正确的.并将其子字符串化直到那里。我来自Python,因此我将展示Python的实现方法。def foobar(some_string): location = some_string.rfind('.&…
Java string.hashcode()提供不同的值 - java我已经在这个问题上停留了几个小时。我已经注释掉所有代码,认为这与数组超出范围有关,但是这种情况仍在发生。我正在尝试使用扫描仪从文件中读取输入,存储数据并稍后使用哈希码获取该数据。但是哈希值不断变化。public static void main(String[] args) { //only prior code is to access data char…
Java:正则表达式模式匹配器是否有大小限制? - java我的模式类似于OR:“word1 | word2 | word3”我大约有800个字。可能有问题吗? 参考方案 您仅受记忆和理智的限制。 :)