A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Kristy_Li 中级黑马   /  2012-4-9 18:32  /  1777 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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)));在内存中的每一步是什么??

4 个回复

倒序浏览
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 参数为负或小于此字符串的长度。
回复 使用道具 举报
Integer.toHexString()//调用Integer中的toHexString()方法,需要传入一个int类型的参数,返回该参数的十六进制无符号整数形式的字符串形式,
(int)str.charAt(i)//返回传入字符串参数指定索引处(i)的 char 值,并将char值强转为int类型
回复 使用道具 举报
哥们们能不能具体一点,把这个程序执行的时候内存中的每一步都详细的写出来啊??这些函数我也查阅了api,知道是嘛意思,但是这个程序执行的过程不清晰。
回复 使用道具 举报
System.out.println(Integer.toHexString((int)str.charAt(i)));
这句代码里面的(int) 去掉可以啊  我刚试了试 可以
有Integer,后面就不用int了吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马