黑马程序员技术交流社区
标题:
字符串以及char型之间的问题
[打印本页]
作者:
Kristy_Li
时间:
2012-4-9 18:32
标题:
字符串以及char型之间的问题
public class TestSort{
/**
* @param args
*/
public static void main(String[] args) throws Exception{
// TODO 自动生成方法存根
String str="中国";
//System.out.println(str.length());
for(int i=0;i<str.length();i++)
{
System.out.println(Integer.toHexString((int)str.charAt(i)));
}
}
}
请问这句代码System.out.println(Integer.toHexString((int)str.charAt(i)));在内存中的每一步是什么??
作者:
王永旺
时间:
2012-4-9 19:20
1、通过str.charAt,将i所指向的字符返回,并通过(int)将字符转换为int类型也就是转换为对应的编码值。
2、将int类型传给Integer.toHexString(),换算为十六进制。
以下为
toHexString和charAt
的使用方法
toHexString
public static String toHexString(int i)以十六进制的无符号整数形式返回一个整数参数的字符串表示形式。
如果参数为负,那么无符号整数值为参数加上 232;否则等于该参数。将该值转换为十六进制(基数 16)的无前导 0 的 ASCII 数字字符串。如果无符号数的大小值为零,则用一个零字符 '0' (’\u0030’) 表示它;否则,无符号数大小的表示形式中的第一个字符将不是零字符。用以下字符作为十六进制数字:
0123456789abcdef
这些字符的范围是从 '\u0030' 到 '\u0039' 和从 '\u0061' 到 '\u0066'。如果希望得到大写字母,可以在结果上调用 String.toUpperCase() 方法:
Integer.toHexString(n).toUpperCase()
参数:
i - 要转换成字符串的整数。
返回:
用十六进制(基数 16)参数表示的无符号整数值的字符串表示形式。
从以下版本开始:
JDK1.0.2
charAt
public char charAt(int index)返回指定索引处的 char 值。索引范围为从 0 到 length() - 1。序列的第一个 char 值在索引 0 处,第二个在索引 1 处,依此类推,这类似于数组索引。
如果索引指定的 char 值是代理项,则返回代理项值。
指定者:
接口 CharSequence 中的 charAt
参数:
index - char 值的索引。
返回:
此字符串指定索引处的 char 值。第一个 char 值在索引 0 处。
抛出:
IndexOutOfBoundsException - 如果 index 参数为负或小于此字符串的长度。
作者:
adison
时间:
2012-4-9 19:30
Integer.toHexString()//调用Integer中的toHexString()方法,需要传入一个int类型的参数,返回该参数的十六进制无符号整数形式的字符串形式,
(int)str.charAt(i)//返回传入字符串参数指定索引处(i)的 char 值,并将char值强转为int类型
作者:
Kristy_Li
时间:
2012-4-9 19:55
哥们们能不能具体一点,把这个程序执行的时候内存中的每一步都详细的写出来啊??这些函数我也查阅了api,知道是嘛意思,但是这个程序执行的过程不清晰。
作者:
高铭
时间:
2012-4-9 20:35
System.out.println(Integer.toHexString((int)str.charAt(i)));
这句代码里面的(int) 去掉可以啊 我刚试了试 可以
有Integer,后面就不用int了吧
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2