【Java学习笔记】 6

您所在的位置:网站首页 java强制转换成char类型 【Java学习笔记】 6

【Java学习笔记】 6

2023-11-30 08:43| 来源: 网络整理| 查看: 265

一、字符型的细节 1.字符常量用单引号括起来的单个字符,例如 char c1 = 'a'; 双引号表示的是字符串类型 2.JAVA中允许使用转义字符将\后的字符转为特殊字符型常量

        例如         char c1 = 'a';                         char c2 = '\n';//换行字符                         char c3 = '韩';                                 char c4 = '\t';//占位                         char c5 = 97;

           

3.在JAVA中,char本质是一个整数,在输出时,是unicode码对应的字符

        例如

                        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);

        

五、自动类型转换的细节 1.                     

                        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参与计算会自动转变精度为int

                        byte 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;//此时数据会溢出

        

1.强转符号只对最近的操作有效,往往会使用小括号提升优先级

                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