char c = '陈';
这样子不可以嘛?
我这样的理解错了吗?:一个英文字母占一个字节,一个中文字母占两个字节。
如果这样的话,那为什么 char c = 'AB'或者char c = '陈' 会发生错误呢?
等待
这样子不可以嘛?
我这样的理解错了吗?:一个英文字母占一个字节,一个中文字母占两个字节。
如果这样的话,那为什么 char c = 'AB'或者char c = '陈' 会发生错误呢?
等待
解决方案 »
- Ultraedit-32输出窗口乱码能解决吗
- 求10个数字可能的所有组合,只能用数组基本数据类型
- 怎么把String保存为xml,100分,在线等 立即结帖!!!
- eclipse 提示“Cannot refer to a non-final variable frame inside an inner class defined in a different method”
- 重复点击菜单项,jinternalframe界面打不开?
- 在线等待,顶者有分:JNI问题(怎样用JNI实现自动拨号功能?)
- IE自动下载JRE的问题
- 100分!求有关动画的程序代码。分不够另帖再加。
- 有人用过Oracle9i AS吗?
- 这个在java里怎么实现
- 关于一个new新对象耗时问题
- 一个关于坐标的算法
public static void main(String[] args){
char a='康';//这个是正确的
char b='AB';//报错,里面只能是单个字符
System.out.println(a);
}
}
char c = '陈'; 是可以的
但 char c = 'AB' 就不对了,AB虽然也占用两个字节,但是两个字符,不是一个字符。
char类型只能存放一个字符,一个字符可以占两个字节。
只要它是单个的 比如 一个汉字 一个英文字母 一个美元符号
我在用JDK1.5
char a='康';//警告: 编码 GBK 的不可映射字符
我这里GBK编码的时候没提示错误啊
char a = '陈';
System.out.println(a);
}}
我这里也是GBK的编码
如果是eclipse
1.最简单的,只针对当前页面有效
Edit -> Set Encoding,设置为GBK就可以了
2.通用的,设置eclispe默认编码格式
Window -> Prefrences -> General -> Editors -> Text Editors -> Spellings, 有个Encoding设置选项list
楼主的是什么编辑器啊
我用cmd编译.
javac -encoding utf-8 XX
就可以了.不会弄Jcreator的编译器。
java中的char与c中的char是不同的。
java中的char占两个字节,不管这个字符是英文的,还是中文的,都是占两个字符。
即char c="a";与char c="陈";占据的内存容量是相等的。
这也说明了java中的字符编码与c是不同的。
java的好像是unicode编码。
char c='ab'占据的是4个字节,而不是2个字节。这是不符合java的规范的,故错误。
不好意思,上贴不该是双引号,应该是单引号。
网上答案:/*
解决办法是:应该使用-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]
*/
这是因为:由于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~~