System.out.println("***************************");
String d1="abcd";
String d2;
char m='\16';
d2=d1.replace('a',m);
System.out.println("d2="+d2);
d2=d1.replace('b',m);
System.out.println("d2="+d2);
d2=d1.replace('c',m);
System.out.println("d2="+d2);
System.out.println("***************************");打印结果为
请问:
为什么替换'c'的时候 小音乐符号出不来  而且我发现出不出来 好像没有什么规律可言另:
新手正在初学JAVA 上周看了一周JAVA培训视频 这种方式好吗

解决方案 »

  1.   

    允许下面一段代码,可能对你有所启发System.out.println("\100");
    byte []b = {0100};  //八进制表示法
    System.out.println(new String(b));
      

  2.   


    现在需要解决的是打印的问题啊 赋值没问题 
    用你的代码 System.out.println("\16");
    byte []b = {0141,0142,0016,0144};  //八进制表示法
    System.out.println(new String(b));
    打印出来 还是音乐符变方块了
      

  3.   

    public String replace(CharSequence target, CharSequence replacement) {
            return Pattern.compile(target.toString(), Pattern.LITERAL).matcher(
                this).replaceAll(Matcher.quoteReplacement(replacement.toString()));
        } public String replaceAll(String replacement) {
            reset();
            boolean result = find();
            if (result) {
                StringBuffer sb = new StringBuffer();
                do {
                    appendReplacement(sb, replacement);
                    result = find();
                } while (result);
                appendTail(sb);
                return sb.toString();
            }
            return text.toString();
        } public static String quoteReplacement(String s) {
            if ((s.indexOf('\\') == -1) && (s.indexOf('$') == -1))
                return s;
            StringBuffer sb = new StringBuffer();
            for (int i=0; i<s.length(); i++) {
                char c = s.charAt(i);
                if (c == '\\') {
                    sb.append('\\'); sb.append('\\');
                } else if (c == '$') {
                    sb.append('\\'); sb.append('$');
                } else {
                    sb.append(c);
                }
            }
            return sb.toString();
        }
    看源码实现就明白了吧。
      

  4.   

    我不知道楼主是咋编译通过的,可能是jak的版本不一样的,下面我写的测试类
    public class StringTest
    {
    public static void main(String[] args)
    {
    String str = "Helloc";
    String s1 = str.replace('o', 'b');
    String s2 = str.replace('c', '\16');

    System.out.println(s1);
    System.out.println(s2);
    String s2 = str.replace('h', 'd');
    System.out.println(s2);
    }

    }
    在第二个s2的地方是报错的,如果你把后面的两个d2分别改为d3和d4,我想应该就不会有问题,具体为什么,你应该懂吧?
      

  5.   


    .....大哥 你把第二个 "String s2" 改成 "s2"  就不会报错了好吧
      

  6.   


    不是赋值 不是REPLACE, 
    我调试看了内存 赋值没问题 就是打印的时候出的问题 打印的时候,如果char[]为:
    'a','\b','c','d' ;   第二个字母显示出来就是音乐符
    'a','b','\b','d' ;   第三个字母下试出来就是小方块
      

  7.   

    我的Netbeans在win7下不显示乐符.
    在cmd控制台下都可以显示出来.
      

  8.   

    方块代表字节转码成unicode码时,无法映射就用方块标识,方块应该是3万多吧
      

  9.   


    问题是替abcd
    替a 替b都没问题 为啥替了c 打印就有问题呢
    我仔细看了replace的过程 都成功了 关键是打印