char c = '陈';
这样子不可以嘛?
我这样的理解错了吗?:一个英文字母占一个字节,一个中文字母占两个字节。
如果这样的话,那为什么 char c = 'AB'或者char c = '陈' 会发生错误呢?
等待

解决方案 »

  1.   

    public class Student1Test {
    public static void main(String[] args){

    char a='康';//这个是正确的
    char b='AB';//报错,里面只能是单个字符

    System.out.println(a);
     
    }
    }
      

  2.   

    java中char占两个字节,可以存放一个中文字符
    char c = '陈'; 是可以的
    但 char c = 'AB' 就不对了,AB虽然也占用两个字节,但是两个字符,不是一个字符。
    char类型只能存放一个字符,一个字符可以占两个字节。
      

  3.   

    但是我这里char c = '陈';提示错误...呜呜呜呜~~~
      

  4.   

    警告: 编码 GBK 的不可映射字符
      

  5.   

    java 中char类型可以赋值为Unicode-16里编码的任何一个代码点汉字英文特殊符号都可以
    只要它是单个的  比如 一个汉字 一个英文字母 一个美元符号
      

  6.   

    是JDK问题吗??
    我在用JDK1.5
      

  7.   

    cmd编译也有错误。
     char a='康';//警告: 编码 GBK 的不可映射字符
      

  8.   

    那你把编码设成UTF-8或者UTF-16看看
    我这里GBK编码的时候没提示错误啊
      

  9.   

    package com;public class CharTest { public static void main(String[] args) {

    char a = '陈';
    System.out.println(a);
    }}
    我这里也是GBK的编码
      

  10.   

    不知道楼主用的什么编辑器,
    如果是eclipse
    1.最简单的,只针对当前页面有效
    Edit -> Set Encoding,设置为GBK就可以了
    2.通用的,设置eclispe默认编码格式
    Window -> Prefrences -> General -> Editors -> Text Editors -> Spellings, 有个Encoding设置选项list
      

  11.   

    恩  我的是eclipse就是这样的
    楼主的是什么编辑器啊
      

  12.   

    Jcreator.
    我用cmd编译.
    javac -encoding utf-8 XX
    就可以了.不会弄Jcreator的编译器。
      

  13.   

    注意!
    java中的char与c中的char是不同的。
    java中的char占两个字节,不管这个字符是英文的,还是中文的,都是占两个字符。
    即char c="a";与char c="陈";占据的内存容量是相等的。
    这也说明了java中的字符编码与c是不同的。
    java的好像是unicode编码。
      

  14.   

    补充,
    char c='ab'占据的是4个字节,而不是2个字节。这是不符合java的规范的,故错误。
    不好意思,上贴不该是双引号,应该是单引号。
      

  15.   

    Jcreator弄到了.
    网上答案:/*
    解决办法是:应该使用-encoding参数指明编码方式:javac -encoding UTF-8 XX.java,这下没警告了,运行也正确了在JCreator 4中设置:菜单:Configure --> Options --> JDK Tools --> Compiler,选中<Default>,然后选Edit,Parameters里面,最前面添加:-encoding UTF-8。 Parameters原来的 默认值为:-classpath "$[ClassPath]" -d "$[OutputPath]" $[ModJavaFiles] 修改后为:-encoding UTF-8 -classpath "$[ClassPath]" -d "$[OutputPath]" $[ModJavaFiles] 
    */
      

  16.   

    网上这样说道:/*
    这是因为:由于JDK是国际版的,在编译的时候,如果我们没有用-encoding参数指定我们的JAVA源程序的编码格式,则javac.exe首先获得我们操作系统默认采用的编码格式,也即在编译java程序时,若我们不指定源程序文件的编码格式,JDK首先获得操作系统的file.encoding参数(它保存的就是操作系统默认的编码格式,如WIN2k,它的值为GBK),然后JDK就把我们的java源程序从file.encoding编码格式转化为JAVA内部默认的UNICODE格式放入内存中。然后,javac把转换后的unicode格式的文件进行编译成.class类文件,此时.class文件是UNICODE编码的,它暂放在内存中,紧接着,JDK将此以UNICODE编码的编译后的class文件保存到我们的操作系统中形成我们见到的.class文件。对我们来说,我们最终获得的.class文件是内容以UNICODE编码格式保存的类文件,它内部包含我们源程序中的中文字符串,只不过此时它己经由file.encoding格式转化为UNICODE格式了。当我们不加设置就编译时,相当于使用了参数:javac -encoding gbk XX.java,当然就会出现不兼容的情况。 
    */慢慢理解一下~~~
    谢谢大家陪我熬夜了,我先睡觉了,你们也尽早吧。88~~