Discuss / Java / 关于String一点小问题,求大佬解答

关于String一点小问题,求大佬解答

Topic source

public static void main(String[] args) {

        String g = "\u0048";

        String n="\\u"+"0048";

        System.out.println(g);

        System.out.println(n);

    }

输出结果是

H

\u0048

为什么呢?

String n="\\u"+"0048";这里如果用"\u"会报错Unicode无效

public static void main(String[] args) {

        // 请将下面一组int值视为字符的Unicode码,把它们拼成一个字符串:

        int a = 72;

        int b = 105;

        int c = 65281;

        // FIXME:

        String x=String.format("%04x", Integer.valueOf(a));

        String y=String.format("%04x", Integer.valueOf(b));

        String z=String.format("%04x", Integer.valueOf(c));

        String n="\\u"+x+"\\u"+y+"\\u"+z;

        System.out.println(n);

    }

上面是我出现这个疑问的源头,要怎么改?求指教

Samoyelover

#4 Created at ... [Delete] [Delete and Lock User]

第一个问题,g的字符串赋值的是unicode码,所以被认为是字,n的赋值是因为“0048”为字符串,而“\\u”被认为是对\转义再加上u的字符串,根据字符串相加原理,得出的。第二个问题因为\是转义的意思,对字母u转义自然会出现错误,所以表示\必须写为\\。


  • 1

Reply