【Java学习笔记】 6 |
您所在的位置:网站首页 › java强制转换成char类型 › 【Java学习笔记】 6 |
一、字符型的细节
1.字符常量用单引号括起来的单个字符,例如 char c1 = 'a'; 双引号表示的是字符串类型
2.JAVA中允许使用转义字符将\后的字符转为特殊字符型常量
例如 char c1 = 'a'; char c2 = '\n';//换行字符 char c3 = '韩'; char c4 = '\t';//占位 char c5 = 97; 例如 char c1 = 97; char c1 = 97; System.out.println(c1); char c2 = 'a'; System.out.println(c2); int c3 = c2; System.out.println(c3); 可以知道,对于char类型,输出的字符其实本质上是一个int类型的整数,每一个整数对应着一个字符类型。 4.即可以给char类型赋一个整数,在输出时会按照对应的unicode字符输出对应字符 5.char类型可以进行运算,本质是一个整数,都有其对应的unicode码例如 System.out.println(‘a’ + 10); 结果为 107 注意,此时是单引号的a,不同于双引号的a,如果是双引号的“a”则会输出a10 6.小测试,char c5 = ‘b’ + 1; //’b‘值为98 +1后 此时值为99 System.out.println((int)c5);//99 System.out.println(c5);//99对应的unicode码的字符,即输出c 二、字符类型的本质 1.字符型储存到计算机中需要将字符对应的码值,比如’a‘储存:’a‘ > 码值 > 二进制 > 存储 读取:二进制 > 97 > ’a‘ > 显示 2.常用的字符编码ASCII码(128个字符 占一个字节,缺点不能表示所有字符) Unicode码 (固定大小的编码,使用两个字节来表示字符,字母和汉字统一占用两个字节) utf-8(大小可变的编码,字母使用一个字节,汉字使用三个字节) GBK(可以表示汉字,而且范围广,字母使用一个字节,汉字用两个字节) gb2312(表示汉字的,但范围比GBK小) big5码(表示繁体字) 三、布尔类型示例 bollean is pass = true; if(ispass == trus){ System.out.println(“通过”);} else { System.out.println(“没通过”);} 1.使用细节,不可以使用false和true以外的来代替变量的值 四、基本数据类型的转换以及细节 1.自动类型转换在JAVA中,进行赋值运算时,精度小的类型自动转换为精度大的数据类型,称为自动类型转换 例如 int a = ‘c’; double d = 80;都正确,会自动转换 int a = 'c'; double d = 80; System.out.println(a); System.out.println(d); int n1 = 10; float d1 = n1 + 1.1; 会报错,因为1.1在java中默认为double类型,而double无法赋予float,考虑改为 double d1 = n1 + 1.1; 或者,float d1 = n1 + 1.1f; 即在使用过程中,将精度大的变量赋值于精度小的会报错。 byte b1 = 10;//可以赋值,byte的值范围在-128~127之间 int n2 = 1;//此时n2是int,在内存中占四个字节 byte b2 = n2;//错误,byte在内存中只占一个字节,byte吃不下int,所以报错 故,在赋值时,考虑赋予的是变量还是具体的值,值在其范围内都可以生效,但变量则需要具体考虑所占的内存大小,或者说精度的大小。(自动数据类型转换会报错,但强制数据类型转换不会,参考6.2) 2.byte、short 和 char 之间不会互相自动转换byte a = 97; char d = a;//报错,byte不能自动转换成char,同理将short也无法赋值给char。 改为int也会报错,因为int占四个字节,char占两个字节,无法将占用内存大的变量赋值与小的变量,但是可以将byte a = 10;强制转换为int型,然后赋值给char,参考6.2 3.byte、short和char参与计算会自动转变精度为intbyte a = 1; short b = 1; short c = a + b; 同类型的byte运算也会转换成int,即在运算中出现这三者都会转换成int,无论是混合还是同类型。 4.布尔类型不参与任何转换 5.自动提升原则,表达式结果的类型自动提升为操作数中的最大类型。 六、强制转换的细节自动类型转换的逆过程,将容量大的数据转换为容量小的数据类型。使用是要加上强制转换付(),可能造成精度的降低或者溢出 例如 int a = (int)1.9; //此时小数点后会丢失 a = 1; int b = 2000; byte c = (byte)b;//此时数据会溢出 int x = (int)10*3.5;//会报错,因为逻辑上是对10这个数字进行int转换,3.5仍然是double类型,考虑更改为 int x = (int)(10*3.5);//逻辑上是(int)35.0 2.char类型可以保存int的常量值,但不能保存int的变量值,需要强转对于5.2,如果想更改错误可以将原代码 byte a = 97; char d = a; 改为 byte a = 97; char d = (char)a; 1.错误,9默认为int型; 2.错误,11默认int型,b为byte,无法进行运算 3.正确,可以自动转换为更大的数值 4.错误,在byte与short运算中会自动转换为int |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |