栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

数据类型以及转换

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据类型以及转换

数据类型 变量
  1. 声明

    int a;//声明一个整数型的变量,命名为a
    int d,b;//声明了两个整数型的变量,名为d,b
    //注意:变量不能同名  例:int  a;这样会编译错误
    
  2. 初始化

    int a = 520;//声明变量并赋值为520
    //初始化相当于给变量进行赋值
    int b;//声明整数型变量b
    b=123;//给变量b赋值123
    b=234;//修改变量b的值为234
    
  3. 使用

    int a = 5;
    int j = i + 10; //将a的值取出然后相加最后赋值给整数型变量j
    //System.out.println(m); 编译错误,变量m未声明
     int m;
    //System.out.println(m); //编译错误,变量m未初始化
    
  4. 命名:

    • 只能包含字母,数字,_和$符,并且不能以数字开头。

      int a1, a_5,$_1;
      //int a*; 编译错误 不能包含其他特殊符号
      //int  1a; 编译错误,不能以数字进行开头  
      
    • 严格区分大小写

      int aa =5;
      // System.out.println(aA);  编译错误  严格区分大小写
      
    • 不能使用关键字

      // int class,public; 编译错误  不能使用关键字
      
    • 允许中文命名,但不建议,建议“英文的见名知意”,“小驼峰命名法”。

数据类型以及类型转换 基本数据类型 整数类型
  • byte : 占一个字节 取值范围为【-128,127】

  • short :占两个字节 【-32768,32767】

  • int :整型 占四个字节 (最常用) 取值范围约21亿

    • 整数的直接量默认为int类型,不能超出范围,若超出范围则会发生编译错误

    • 两个整数相除,结果还是整数,小数位无条件舍弃(没有四舍五入)

    • 若运算超出范围,则会溢出,溢出是需要避免的

      int a =20; //20为整数直接量,在int范围内
      //int b = 10000000000;  编译错误,100亿默认为int型,但超出int范围了
      //int c = 23.12; 编译错误,数据类型不匹配
      System.out.println(5/2);   //2
      System.out.println(2/5);   //0
      int d = 2147483647; //int的最大值
      d = d+1;
      System.out.println(d); //-2147483648,发生溢出了
      
  • long :长整型 占八个字节

    • 长整型需要在数字后加L或l

    • 运算可能会溢出,建议在第一个数字后加L

      long a = 233L;  //233L为长整型的直接量
      //long b = 10000000000;  编译错误,100亿默认为int型,但超出了int范围 
      long b1 = 10000000000L;
      //运算时若有可能溢出,建议在第1个数字后加L
      long e = 1000000000*2*10L;
      System.out.println(e); //200亿
      long f = 1000000000*3*10L;
      System.out.println(f); //不是300亿  (100000000 * 3)超出了int范围 溢出处理
      long g = 1000000000L*3*10;
      System.out.println(g); //300亿
      
      
浮点型

浮点型 : 数据参与运算时,有可能会出现舍入误差,精确场合不能使用

  • float : 占四个字节 需要在数字后加F或f

  • double :占八个字节(双精度浮点型)

    double a = 4.3;//4.3为浮点数直接量,默认为double型
    float b = 5.21F;// 3.14F为float型直接量
      double c = 3.0, d = 2.9;
      System.out.println(c - d); //0.10000000000000009   有可能发生舍入误差
      double c1 = 6.0, d1 = 1.9;
      System.out.println(c1 - d1);//4.1
    
布尔型

布尔型:boolean 只能存储true或false

boolean a = true;  //true为布尔型直接量
boolean b = false;//false为布尔型直接量
int a = 5;
boolean b = a-1>0;
System.out.print(b);   //结果:true
字符型
  • char :占两个字节

    • 字符类型事实上是一个2字节(16位)无符号整数,这个值对应字符的编码。Java字符类型采用Unicode字符集编码,Unicode是世界通用的定长字符集,所有的字符都是16位。

    • ASCII码:‘a’----97 ‘A’----65 ‘0’----48

    • 字符直接量通过单引号表示,如‘中’,也可以采用16进制表示形式,如‘u4e2d’。

      char c1 = '中';  //内存中存的是'中'的编码
      char c2 = 'u4e2d';  //‘4e2d’是‘中’对应的16位Unicode编码的16进制表示形式
      System.out.println(c1); //中
      System.out.println(c2); //中
      
    • 字符型直接量必须放在单引号中,并且只能有一个。

      char x = '你';
      //char a4=女;  //编译错误  字符型直接量必须放在单引号中 //char a5=''; //编译错误  单引号中必须有字符
      //char a6='25';  //编译错误  只能有一个字符
      
    • 特殊字符需要通过来转义

      转义字符含义
      ‘n’表示回车符
      ‘r’表示换行符
      ‘’表示反斜杠()
      ‘’’表示单引号(')
      ‘"’表示双引号(")
      char x = '"';
      char y = '\';
      System.out.println(x);   //结果: "
      System.out.println(y);   //结果:  
      
类型转换

数据类型由小到大依次为:byte----short/char----int----long----float-----double

两种方式
  • 自动/隐式类型转换:小类型到大类型

    int a = 5;
    long b = a;//自动类型转换  
    long d = 5;//自动类型转换  这里的5是int型  小转大  自动
    double e = 5;//自动类型转换
    
  • 强制类型转换:大类型到小类型

    int a = 5;
    long b = a;//自动类型转换
    int c = (int) b;//强制类型转换  b为长整型需要强制转换为整型
    long f = 1000000000000L;
    int g = (int) f;//强制类型转换
    System.out.println(g);//-727379968  强转有可能发生溢出
    double h = 23.14;
    int i = (int) h;
    System.out.println(i);//23  强转有可能丢失精度
    

    语法:(要转换成为的数据类型)变量
    注意:强转有可能溢出或丢失精度

两点规则
  • 整数直接量可以直接赋值给byte,short,char,但不能超出范围

  • byte,short,char型数据参与运算时,系统会将其自动转换为int再运算

    byte b1 = 5;
    byte b2 = 6;
    byte b3 = (byte) (b1 + b2);//(b1+b2)为int型运算 然后强制转换
    System.out.println(b3);
    
    System.out.println(2 + 2); //4
    //char型数据参与运算时,系统会将其自动转换为int再运算
    System.out.println('2' + '2');//100  '2'的码50,加上'2'的码50
    System.out.println(2 + '2');//52
    System.out.println('2');//2  没有运算直接输字符
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/936399.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号