java语言基础--数据类型:详解

2021-06-05 06:01

阅读:408

标签:原理   超出   a+b   补码   不同   现在   ascii码   程序   转译   

数据类型--char

一、char

1.1

  1. char占用2个字节
  2. char取值范围:【0~65535】
  3. char采用unicode编码方式
  4. char类型的字面量用单引号括起来
  5. char可以存储一个汉字
 1 public class Test{
 2     
 3       public static void main(String[] args){
 4    
 5        //定义一个char类型的变量,起名c,同时赋值字符‘a’
 6         char c1 = ‘a‘;
 7         System.out.println(c);//结果为:a
 8  
 9         //一个中文字符占用2个字节,char类型刚好是2个字节
10        //所以java中的char类型可以存储一个中文字符
11         char c2 =‘果‘;
12         System.out.println(c2);//结果为:果
13 
14         //如果加上单引号0就不是数字0了
15          char c3 = ‘0‘;
16           System.out.println(c3);
17 
18         //编译报错:类型不兼容
19         char c4 = "a";
20         System.out.println(c4);
21 
22         //错误:未结束的字符文字
23          char  c5 = ‘ab‘;
24          System.out.println(c5);
25  
26      }
27  }
 

1.2 数据类型-- 转义字符 ‘\’

 1 public  class Test{
 2     public static void main(Stirng[]  args){
 3   
 4     //普通的n字符
 5     char  c1 = ‘n‘;
 6     System.out.println(c1);//结果为:n
 7 
 8     //经过编译,发现编译通过,这说明以下并不是一个字符串,而是一个字符
 9     //这是一个“换行符”,属于char类型的数据
10      //反斜杠在java语言中具有转义功能
11      char  c2 = ‘\n‘;
12     
13      System.out.print("A");
14      System.out.print(c2);
15      System.out.println("B");
16      输出结果:
17      A
18      B
19 
20 
21 
22      //制表符\t(tab)
23       //强调:制表符和空格不同,它们的ASCII码不同,体现在键盘上两个不同的“按键”
24      char y = ‘\t‘;
25      System.out.print("A");
26      System.out.print(y);
27      System.out.println("B");
28      输出结果:
29      A        B
30 
31 
32 
33      //要求控制台上输出“反斜杠字符”
34       //反斜杠将后面的单引号转义成不具备特殊含义的普通单引号字符
35       //左边的单引号缺少了结束的单引号字符,编译报错
36       /*
37        char k = ‘\‘;
38        System.out.println(k); //编译报错       
39      */
40 
41         //第一个\具有转义功能,将后面的反斜杠转译为普通的反斜杠字符
42         //结论:java当中两个反斜杠代表一个普通的反斜杠字符
43        char k = ‘\\‘;
44        System.out.println(k);
45 
46          //输出"HelloWorld!"
47         //System.out.println("\"HelloWorld!\"");
48        
49     }
50 }

数据类型--整数型

1、java语言当中的“整数型字面值”被默认当作int类型来处理,要让这个“整数型字面值”被当作long类型来处理的话,需要在“整数型字面值”后面添加1/L,建议使用大写L

2、java语言当中的整数型字面值有三种表示方式:

十进制【是一种缺省默认的方式】

八进制【在编写八进制整数型字面值的时候需要以0开始】

十六进制【在编写十六进制整数型字面值的时候需要以0x开始】

 1 public class Test{
 2 
 3         public static void main(Stirng[] args){
 4 
 5         int  a=10;
 6         int  b=010;//整数型字面值以0开头,后面那一串数字就是八进制形式
 7         int  c=0x10;//整数型字面值以0x开头,后面那一串数字就是十六进制形式
 8  
 9         System.out.println(a); //10
10         System.out.println(b); //8
11         System.out.println(c); //16
12         System.out.println(a+b+c); //34
13 
14 
15 
16         //123这个整数型字面值是int类型
17         //i变量声明的时候也是int类型
18         //int类型的123赋值给int类型的变量i,不存在类型转换
19         int i=123;
20         System.out.println(i);
21 
22         //456整数型字面值被当作int类型,占用4个字节
23         //x变量被声明的时候是long类型,占用8个字节
24         //int类型的字面值456赋值给long类型的x,存在类型转换
25         //int类型转换成long类型
26         //int类型是小容量
27         //long类型是大容量
28         //小容量可以自动转换成大容量,称为自动类型转换机制
29         long  x=45630         System.out.println(x);
31 
32 
33         //2147483647是int类型,占用4个字节
34         //y是long类型占用8个字节,自动类型转换
35          long  y=2147483647;
36          System.out.println(y);
37 
38          //编译错误:过大整数:2147483648
39          //2147483648被当作int类型4个字节处理,但是这个字面值超出int类型范围
40         // long   z=2147483648;
41        //  System.out.println(z);
42          
43          //解决错误
44          //2147483648字面值一上来就当作long类型来处理,在字面值后面添加L
45          //2147483648L是8个字节的long类型
46          //z是long类型变量,以下程序不存在类型转换
47          long   z=2147483648L48          System.out.println(z);      
49         }
50 }
 1 public  class  Test{
 2 
 3       public static void main(Stirng[] args){
 4 
 5       //100L是long类型字面值
 6       //x是long类型变量
 7       //不存在类型转换,直接赋值
 8       long x=100L 9 
10        //x变量是long类型,8个字节
11        //y变量是int类型,4个字节
12        //以下程序可以编译通过吗
13        //编译报错,大容量不可以直接赋值给小容量
14         int  y=x;
15 
16        //大容量转换成小容量,需要进行强制类型转换
17        //强制类型转换需要加“强制类型转换符”
18        //加上强制类型转换符之后编译通过了,但是运行阶段可能损失精度
19        //所以强制类型转换谨慎使用,因为损失精度之后可能损失严重
20        //强制类型转换原理:
21    //原始数据:00000000  00000000   00000000  00000000  00000000  00000000   00000000   01100100
22     //强制转换后的数据:00000000  00000000   00000000   01100100
23        //将左边的二进制砍掉【所有数据强转的时候都是这样完成的】
24        int  y=(int)x;
25        System.out.println(y);
26        
27 
28      //原始数据:00000000  00000000   00000000  00000000  10000000  00000000   00000000   00000000
29     //强制转换后的数据:10000000  00000000   00000000   00000000
30     //10000000  00000000   00000000   00000000目前存储在计算机内部,计算机存储数据都是采用补码的形式存储
31     //所以以上为补码形式
32     //将以上补码转换为原码就是最终结果
33      long  k=2147483648L34      int  e=(int)k;
35      System.out.println(e);//损失精度严重,结果是负数【-2147483648】
36         
37 
38 
39 
40      }
41 }

 

java语言基础--数据类型:详解

标签:原理   超出   a+b   补码   不同   现在   ascii码   程序   转译   

原文地址:https://www.cnblogs.com/llrra/p/14628384.html


评论


亲,登录后才可以留言!