‘壹’ java中键盘输入char类型
如果判断是不是t的话直接使用String就可以了呀,如果非要使用Char也只能转为Char数组了,或者强制转型一下~
class Myexception extends Exception{
protected Throwable throwable;
//构造方法
public Myexception()
{
super("不应该输入T或t字符");
}
}
public class test_1{
public void test(String str) throws Myexception {
Scanner scanner = new Scanner(System.in);
String t = scanner.nextLine();
if(t.equalsIgnoreCase("t"))
{
throw new Myexception();
}
}
public static void main(String args[]){
try {
new test_1().test();
} catch (Myexception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
‘贰’ java中char的用法
char在java中称为“字符型” 占2个字节
字符常量是用单引号括起的一个字符 且字符常量在内存中存储的是该字符在Unicode字符集中的排序位置,即整数
eg:char x='a'
内存x中存储的是字符a在Unicode字符集中的排序位置97 因此允许将上面的语句写成char x=97;
‘叁’ 在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);
这样即可获取一个字符
‘肆’ 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
char表示的是字符,‘23’表示的是一个字符串而不是一个字符,23是一个数字。
‘陆’ 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
char即字符类型,表示的是基于ASCII码的字符,
字节码,为java源代码编译完成后,由JVM转换成的文件,可以在任何装有JVM的系统上,转化相应的机器语言
机器码:即机器语言,表示的就是运行字节码文件后的二进制序列
字节:即java中的byte类型,用于存放一个字节
‘玖’ char在JAVA编程里面该如何应用
字符类型char是Java原语(也称简单或基本)数据类型之一。在Java中,字符不像其他计算机语言中那样是8个二进制位的,它使用的是Unicode。Unicode定义了一个字符集合,该集合可以表示所有人类语言中的字符。因此,在Java中,char是一个无符号16位类型,取值范围为0到65535。标准的8为ASCII字符集是Unicode的子集,其取值范围为0到127。因此,ASCII字符依然是有效的Java字符。字符变量可以由一对单引号中的字符赋值。例如:class CharDemo{ public static void main(String[] args){ char ch; ch='A'; System.out.println("The char of ch is: "+ch); }}值得注意的是,Java中的char字符并非像C语言中char那样可以进行算术运算,因为在Java中,char是无符号16为类型,对char变量进行算术运算是没有意义的。但是,可以把0到65535范围内的值赋给char变量。把上面的程序中“ch='A'”改为“ch=65”,打印出来的结果是一致的。
‘拾’ Java的char类型包含哪些数据
java的char是2字节,16bit,包含所有ascii字符,而且更多,api文档里有描述
char的数据是通过 UnicodeData 文件中的信息定义的,该文件是 Unicode Consortium 维护的 Unicode Character Database 的一部分。此文件指定了各种属性,其中包括每个已定义 Unicode 代码点或字符范围的名称和常规类别。
此文件及其描述可从 Unicode Consortium 获得,网址如下:
http://www.unicode.org
Unicode 字符表示形式
char 数据类型(和 Character 对象封装的值)基于原始的 Unicode 规范,将字符定义为固定宽度的 16 位实体。Unicode 标准曾做过修改,以允许那些其表示形式需要超过 16 位的字符。合法代码点 的范围现在是从 U+0000 到 U+10FFFF,即通常所说的 Unicode 标量值。(请参阅 Unicode 标准中 U+n 表示法的定义。)
从 U+0000 到 U+FFFF 的字符集有时也称为 Basic Multilingual Plane (BMP)。代码点大于 U+FFFF 的字符称为增补字符。Java 2 平台在 char 数组以及 String 和 StringBuffer 类中使用 UTF-16 表示形式。在这种表现形式中,增补字符表示为一对 char 值,第一个值取自高代理项 范围,即 (\uD800-\uDBFF),第二个值取自低代理项 范围,即 (\uDC00-\uDFFF)。
所以,char 值表示 Basic Multilingual Plane (BMP) 代码点,其中包括代理项代码点,或 UTF-16 编码的代码单元。int 值表示所有 Unicode 代码点,包括增补代码点。int 的 21 个低位(最低有效位)用于表示 Unicode 代码点,并且 11 个高位(最高有效位)必须为零。除非另有指定,否则与增补字符和代理项 char 值有关的行为如下:
只接受一个 char 值的方法无法支持增补字符。它们将代理项字符范围内的 char 值视为未定义字符。例如,Character.isLetter('\uD840') 返回 false,即使是特定值,如果在字符串的后面跟着任何低代理项值,那么它将表示一个字母。
接受一个 int 值的方法支持所有 Unicode 字符,其中包括增补字符。例如,Character.isLetter(0x2F81A) 返回 true,因为代码点值表示一个字母(一个 CJK 象形文字)。
在 Java SE API 文档中,Unicode 代码点 用于范围在 U+0000 与 U+10FFFF 之间的字符值,而 Unicode 代码点 用于作为 UTF-16 编码的代码单元的 16 位 char 值。有关 Unicode 技术的详细信息,请参阅 Unicode Glossary。