‘壹’ java中的“char”指的是什么
char是Java中的保留字,表示一种数据类型。与别的语言不同的是,char在Java中是16位的,因为Java用的是Unicode编码。不过8位的ASCII码包含在Unicode编码中,其值对应于0~127。
char初始化方式
char c='c'; //字符,可以是汉字,因为是Unicode编码
char c=十进制数,八进制数,十六进制数等等; //可以用整数赋值
char c='\u数字'; //用字符的编码值来初始化,如:char='\0',表示结束符,它的ascll码是0,这句话的意思和 char c=0 是一个意思。
‘贰’ java中的char与C++中的char的区别
java的char是Unicode(UCS-2)编码,所以是双字节的,C++中的wchar_t类似于此。C++里的char是指ASCII编码的字符,就只有一个字节了。
‘叁’ java中的“char”指的是什么
char是Java中的保留字,表示一种数据类型。与别的语言不同的是,char在Java中是16位的,因为Java用的是Unicode编码。不过8位的ASCII码包含在Unicode编码中,其值对应于0~127。
‘肆’ java char的用法
这是java编译器的一个缺陷,
你不能使用 Unicode的换行,斜杠等字符,至于为什么,举个例子:
public static void main(String[] args) {
if ( false == true ) { //these characters are magic: \u000a\u007d\u007b
System.out.println("false is true!");
}
}
你可以运行上面的方法,会输出 false is true!
java在编译时会先将Unicode字符进行 呈现(或翻译),然后再进行编译 ,上面的方法会变成
public static void main(String[] args) {
if ( false == true ) { //these characters are magic:
}{
System.out.println("false is true!");
}
}
再来看你的代码
char a='\U000d';
会变成:
char a='
';
这样就会产生语法错误。
这就是原因了
下面的代码是可以通过编译的
char c=' ';\u000d;
可以这样理解,代码中的 Unicode并不能理解为单纯的 字符或字符串,他们本身就是你的代码
如:
System.out.println("Unicode print ");
这一行代码你可以写成
\u0053\u0079\u0073\u0074\u0065\u006d\u002e\u006f\u0075\u0074\u002e\u0070\u0072\u0069\u006e\u0074\u006c\u006e\u0028\u0022\u0055\u006e\u0069\u0063\u006f\u0064\u0065\u0020\u0070\u0072\u0069\u006e\u0074\u0020\u0022\u0029\u003b\u0020
其实都是一样的,只是书写和查看都很不方便 。
建议不要在代码中书写Unicode形式的字符,很容易产生奇怪的错误,而且不方便查看和修改
‘伍’ 初学Java不能理解char c =(char)(Math.random()*26+'a')
首先你要知道,random()产生的随机数的范围是0—1,乘以26之后这个范围就扩大到0—26(这是按我们的需要人为将其扩大);
然后,你要搞清楚数字与字符之间的转换关系以及运算时的原理,小写字母的ASCII码是97—122;
现在分析一下这行代码具体是怎么运行的:
首先,Math.random()*26产生了一个0—26之间的数,这个就不解释了,开始已经提到了,然后这个数要与字符a做运算,可是字符怎么能与数字运算呢?我们知道,字符在计算机中是以ASCII码的形式存储的(其实也就是数字),所以,前边的运算,就是数字与数字的运算,表面上整型数字与字符的运算;
好了,现在运算关系搞清楚了,那么,前面产生的0—26的随机数加上一个a(也就是加上a的ASCII码97),就对应到26个字母中了,这个可以这样理解,比如产生的随机数就是0,那么0加97还是97,就是字母a,如果随机数是1,那加上97就变成98,对应的字母就是b,以此类推,后边都是一样的;
最后再将这个运算后的数字强制转换成字符就行了:
随机数 a的ASCII 字符(ASCII)
0****************** 97*************** a(97)
1 ******************97 ******************b(98)
2 ******************97 ******************c(99)
后边的就不写了!
‘陆’ Java中,char+c=‘\\‘,c输出什么,为什么
char c = '\';
输出:
在Java 中,\ 叫转义字符,用来输入不可见或特殊的字符,在java 中 就是特殊字符,需要转义输入。
Java 中还有其他转义字符,例如双引号(")
java 中字符串的赋值是String text = "hello"; 以双引号开始,双引号结束的字符串,输出:hello。但是如果我想输出:he"llo ,中间出现双引号怎么办呢?可以:String text = "he"llo"; 录入转义字符"。
其他字符参见:Java 转义字符表
‘柒’ java中char占几个字节C和C++中char占几个字节
C/C++:
char始终都是一个字节。Java:
因为是跨平台的,无论在哪里字符是用Unicode编码的,所以char是两个字节。
‘捌’ java中如何输入char型数据
java如果从控制端输入char类型数据,可以使用scanner来扫描用户输入的字符,实例如下:
Scannerin=newScanner(System.in);
inttemp=in.nextInt();
charc=(char)temp;
System.out.println("thecis:"+c);
如果是输出为char类型,可以通过转义字符来替代,形如:/n、/d等。
‘玖’ 关于JAVA中char的用法不是很明白,为什么c
char c='a'+1中'a'是字符型常量,1是数字常量。在编译器编译的时候,会自动合并,不会做类型转换。在编译阶段就完成。
char c='a'+x中'a'是字符型常量,但x是变量,在编译阶段无法合并,只能在运行时编译,运行时发现x是整型,'a'+x自动转换成整型,无法直接赋值给char型。需要进行强转。(char)('a'+x)
‘拾’ 在java中如何输入一个char型字符。
方法一:
Scanner cin=new Scanner(System.in);
String s=cin.nextLine();
char ans=s.charAt(0);
这样即可获取一个字符。
方法二:
byte[] b=new byte[2];
try{
System.in.read(b)
}catch(Exception e){}
char ans=new String(b).charAt(0);
这样即可获取一个字符