展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > Java中基本数据类型的使用方法

Java中基本数据类型的使用方法

八种基本数据类型分别是:1、4种整数类型(byte、short、int、long);2、2种浮点类型(float、double);3、1种字符类型“char”;4、1种布尔类型“boolean”。本教程操作环境:windows7系统、java8版、DELLG3电脑。8种基本数据类型java中有8种基本数据类型,分别用于存储整数、浮点数、字符数据和布尔类型数据。需要注意的是:现在所介绍的仅仅是基本数据类型,后续还会介绍很多非基本数据类型。基本数据类型主要分为4大类(整数类型、浮点类型、char、boolea

本文目录

    八种基本数据类型分别是:1、4种整数类型(byte、short、int、long);2、2种浮点类型(float、double);3、1种字符类型“char”;4、1种布尔类型“boolean”。

    本教程操作环境:windows7系统、java8版、DELL G3电脑。

    8种基本数据类型

    java中有8种基本数据类型, 分别用于存储整数、浮点数、字符数据和布尔类型数据。需要注意的是: 现在所介绍的仅仅是基本数据类型,后续还会介绍很多非基本数据类型。基本数据类型主要分为4大类 (整数类型、浮点类型、char、boolean), 整数类型又分为了4小类(byte、short、int、long), 浮点类型也分了2小类(float、double),这些数据类型的区别是怎样的?通过图– 2展示了这8种数据类型的存储空间及使用场景:

    Java中基本数据类型的使用方法

    图- 2

    在如上这8种数据类型中,最常用的有5种,分别为int、long、double、char、boolean。其余的数据类型几乎不用,要求对这5种基本数据类型重点掌握,其余的数据类型,有兴趣了解就可以了。

    2. int类型

    2.1. int类型

    int是最常用的整数类型,一个int类型的变量占用4个字节,即32位的内存空间。Int的最大表示范围为:-231~231-1,即-2147483648 ~2147483647,大约正负21个亿多些。

    2.2. 整数直接量是int类型

    所谓整数直接量(literal)就是直接写出的整数,例如:下面的语句中,100就是直接量。

    int a = 100;
    int a = 100;

    关于整数直接量,需要注意如下要点:

    整数的直接量的类型默认为int类型,如果直接写出的整数超过了int的表达范围,将会出现编译错误,下面的语句,就是因为超出了整数的范围而导致的编译错误。

    int d = 10000000000; // 编译错误10000000000这个数值写出来就是错误的,因为Java认为所有直接写出的整数都是int类型,而这个数值超过了int的表达范围。
    int d = 10000000000; // 编译错误10000000000这个数值写出来就是错误的,因为Java认为所有直接写出的整数都是int类型,而这个数值超过了int的表达范围。

    除了通常的十进制数字形式,整数直接量也可以写成16进制的形式(以0X或0x开头)或8进制的形式(以0开头),请看如下直接量三种表现形式:

    int a = 100000; // 10进制 
    int b = 0x186a0; // 16进制 
    int c = 0303240; // 8进制 
    int a = 100000; // 10进制
    int b = 0x186a0; // 16进制
    int c = 0303240; // 8进制

    2.3. 整型数据除法运算中的取整

    若对两个整数相除,会舍弃小数的部分(注意:不是四舍五入),结果也是整数。示例代码如下所示:

    int c = 5/3;
    System.out.println(c);  // c的值为1,取整
    int total = 87;    
    int error = 23;
    int percent = error / total * 100;
    System.out.println(percent+"%");  //结果为0%,23除以87整数部分为0,乘以100,为0 
    percent = 100 * error / total;
    System.out.println(percent + "%");  // 结果为26%,230除以87整数部分为26 
    int c = 5/3;
    System.out.println(c);  // c的值为1,取整
    int total = 87;    
    int error = 23;
    int percent = error / total * 100;
    System.out.println(percent+"%");  //结果为0%,23除以87整数部分为0,乘以100,为0
     
    percent = 100 * error / total;
    System.out.println(percent + "%");  // 结果为26%,230除以87整数部分为26

    2.4. 运算时要防止溢出的发生

    当两个整数进行运算时, 其结果可能会超过整数的范围而发生溢出,正数过大而产生的溢出,结果为负数;负数过大而产生的溢出,结果为正数。示例代码如下所示:

    int a = 2147483647;    //int类型整数的上限
    int b = -2147483648;    //int类型整数的下限
    a = a + 1;
    b = b - 1;
    System.out.println("a=" + a);    //输出结果: a=-2147483648 溢出,结果错误。 
    System.out.println("b=" + b);    //输出结果: b=2147483647溢出,结果错误。 
    int a = 2147483647;    //int类型整数的上限
    int b = -2147483648;    //int类型整数的下限
    a = a + 1;
    b = b - 1;
    System.out.println("a=" + a);    //输出结果: a=-2147483648 溢出,结果错误。
    System.out.println("b=" + b);    //输出结果: b=2147483647溢出,结果错误。

    3. long类型

    3.1. long类型

    在表示整数时,如果int类型的范围不够,可以使用long类型,一个long型的变量占用8个字节(即64位),最大表示范围为:-263 ~ 263-1,即 -9223372036854775808 ~ 9223372036854775807。

    如果要表示long直接量,需要以 L 或 l 结尾。示例代码如下:

    long a = 10000000000;   //会有编译错误,因为10000000000编译器认为是int类型,而这个值,已经超出了int的范围
    long b = 10000000000l;   //正确
    long a = 10000000000;   //会有编译错误,因为10000000000编译器认为是int类型,而这个值,已经超出了int的范围
    long b = 10000000000l;   //正确

    3.2. 使用long类型进行较大整数的运算

    对于较大的整数运算(超过int的表达范围),可以使用long型。示例代码如下:

    long distance1 = 10000 * 365 * 24 * 60 * 60 * 299792458l;  
    //必须有一个long型数据参与的运算结果才是long型 
    System.out.println("distance1="+distance1);//distance1=547836957965889536 结果正确 
    long distance2 = 10000 * 365 * 24 * 60 * 60 * 299792458; 
    System.out.println("distance2="+ distance2);  //distance2=-1973211136 溢出,=号后面的数据默认为int类型,超出了范围,发生溢出。
    long distance1 = 10000 * 365 * 24 * 60 * 60 * 299792458l;  
    //必须有一个long型数据参与的运算结果才是long型
    System.out.println("distance1="+distance1);//distance1=547836957965889536 结果正确
     
    long distance2 = 10000 * 365 * 24 * 60 * 60 * 299792458;
    System.out.println("distance2="+ distance2);  //distance2=-1973211136 溢出,=号后面的数据默认为int类型,超出了范围,发生溢出。

    3.3. 通过时间毫秒数来存储日期和时间

    JDK提供 System.currentTimeMillis() 方法,返回1970年1月1日零点到此时此刻所经历的毫秒数,数据太大,故其数据类型为long。示例代码如下:

    long time = System.currentTimeMillis();
    System.out.println(time);     //输出的结果为: 1383835712828
    long time = System.currentTimeMillis();
    System.out.println(time);     //输出的结果为: 1383835712828

    通过上面的代码可以看出,输出的结果已经超出int类型的最大值,因此,JDK设计的返回类型为long型,该方法常常被用于计时操作。

    4. double类型

    4.1. 使用double进行浮点数的运算

    前面所学习的int、long都是用于存储整数的,小数即为浮点数,包括: float(单精度)和double(双精度),double类型的精度值是float类型的两倍,因此而得名双精精,在实际的应用开发中,float应用极少,大多数场合使用double表示浮点数。示例代码如下:

    double pi = 3.14;
    double r = 8;
    double s = pi * r * r;
    System.out.println("s=" + s);   // 输出的结果为:s=200.96
    double pi = 3.14;
    double r = 8;
    double s = pi * r * r;
    System.out.println("s=" + s);   // 输出的结果为:s=200.96

    4.2. 浮点数直接量是double类型

    浮点数的直接量有两种写法:1)通常写法,如:3.14、314、0.1、.5。 2)科学计数法,如:1.25E2、1.25e2、1.25E-2。其中,1.25E2表示1.25乘以10的2次方。

    默认的浮点直接量为double型,如果需要表示float类型的直接量,需要加“f”或“F”后缀。例如:

    float f1 = 3.14   //编译错误,应该写成3.14f
    float f1 = 3.14   //编译错误,应该写成3.14f

    4.3. double运算时会出现舍入误差

    2进制系统中无法精确的表示1/10,就好像十进制系统中无法精确的表示1/3一样,

    所以,2进制表示10进制会有一些舍入误差,对于一些要求精确运算的场合会导致代码的缺陷。示例代码如下所示:

    double money = 3.0; 
    double price = 2.9; 
    System.out.println(money - price);   //输出的结果是: 0.10000000000000009 
    double money = 3.0;
    double price = 2.9;
    System.out.println(money - price);   //输出的结果是: 0.10000000000000009

    如果需要精确的运算可以考虑放弃使用double或float而采用BigDecimal 类来实现。关于这一点,将在后续的章节中介绍。

    5. char类型

    5.1. char类型

    字符类型char事实上是一个16位无符号整数(都是正数),这个值是对应字符的编码,Java字符类型采用Unicode字符集编码(通用码、统一码、万国码),而Unicode是世界通用的定长字符集,所有的字符都是16位来表示。例如:字符a实际的值为97,字符A实际的值为65,字符0实际的值为48。

    字符直接量可以采用诸如:‘中’的形式,也可以采用16进制的表示形式,例如: ‘\u4e2d’,代码如下所示:

    char c1 = ‘中’;   //c1中存的是”中”的编码 
    char c2 = '\u4e2d';   //‘4e2d’为‘中’所对应的16位Unicode编码的16进制表示形式
    System.out.println(c1);
    System.out.println(c2);
    char c1 = ‘中’;   //c1中存的是”中”的编码
    char c2 = '\u4e2d';   //‘4e2d’为‘中’所对应的16位Unicode编码的16进制表示形式
    System.out.println(c1);
    System.out.println(c2);

    如上代码的输出结果:c1的值为中,c2值也为中,但c1和c2内部存储的其实是”中”这个字符所对应的Unicode码,即:一个无符号的整数。

    5.2. 对char型变量赋值

    在对char型变量赋值时,可以采用如下三种方式:

    方式一:

    字符直接量:形如‘A’,变量中实际存储的是该字符的Unicode编码(无符号整数值),一个char型变量只能存储一个字符。示例如下:

    char c1 = 'A';   
    char c1 = 'A';

    方式二:

    整型直接量:范围在0~65535之间的整数,变量中实际存储的即该整数值,但表示的是该整数值所对应的Unicode字符。示例如下:

    char c2 = 65;    
    char c2 = 65;

    Unicode形式:形如‘\u0041’,Unicode字符的16进制形式。示例如下:

    char c3 = '\u0041'; 
    char c3 = '\u0041';

    5.3. 使用转义字符

    字符直接量需要包含在一对’’单引号之中,那如果想表示单引号’的字符时,需要怎么表示?想表示回车、换行符时,怎么表示?

    因为单引号为特殊意义的字符, 那么,对于不方便输出的字符可以采用转义字符来表示,示例代码如下:

    char c = '\\';
    System.out.println(c);  //输出的结果为:\ 
    char c = '\\';
    System.out.println(c);  //输出的结果为:\

    6. boolean类型

    6.1. 使用boolean变量进行关系运算

    boolean类型适用于关系、逻辑运算, 表示某个条件是否成立, 只允许取值true或false,true表示条件成立, 而false表示条件不成立。

    boolean型变量经常用于存储关系运算的结果,所谓关系运算就是比较两个变量的大小相等等关系(此知识点,后续详细介绍)。boolean示例代码如下所示:

    int age = 18;
    boolean isChild = age<16;  
    System.out.println(isChild);   // isChild的值为false
    boolean running = true; 
    boolean closed = false; 
    int age = 18;
    boolean isChild = age<16;  
    System.out.println(isChild);   // isChild的值为false
    boolean running = true;
    boolean closed = false;

    7. 基本类型间转换

    7.1. 类型间转换

    不同的基本类型直接可以相互转化,主要有两种方式:

    自动类型转化(隐式类型转换):从小类型到大类型可以自动完成。

    强制转化:从大类型到小类型需要强制转换符,语法如下:

    (需要转换成的类型)变量

    因为大类型的精度值大于小类型,取值范围大于小类型,所以,当使用强制转化时,有可能会造成精度的损失或者溢出,所以,在使用强制转化时要求显式的告诉编译器,正在进行强制转换。

    7.2. 强制转换时的精度丧失和溢出

    基本类型转化如下示例所示,注意强制转换时可能会造成的精度丧失和溢出。

    int a = 100;
    int b = 200;
    long c = a + b;  //自动将int转化为long 
    long l1 = 1024l; 
    int i = (int) l1;  //需要加强制转化符由于1024在int的范围内,所以没有产生溢出 
    long l = 1024L * 1024 * 1024 * 4;
    int j = (int) l;    //会产生溢出
    System.out.println(j);  // 结果为:0 
    double pi = 3.1415926535897932384;
    float f = (float) pi;   //会造成精度的损失,因为单精度的精确度小于double
    System.out.println(f);  //结果为:3.1415927 
    int a = 100;
    int b = 200;
    long c = a + b;  //自动将int转化为long
     
    long l1 = 1024l;
    int i = (int) l1;  //需要加强制转化符由于1024在int的范围内,所以没有产生溢出
     
    long l = 1024L * 1024 * 1024 * 4;
    int j = (int) l;    //会产生溢出
    System.out.println(j);  // 结果为:0
     
    double pi = 3.1415926535897932384;
    float f = (float) pi;   //会造成精度的损失,因为单精度的精确度小于double
    System.out.println(f);  //结果为:3.1415927

    7.3. 数值运算时的自动转换

    如果在一个表达式中出现了多种数据类型,则运算结果会自动的向较大的类型进行转化,

    示例如下:

    //由于有long型的直接量参与,整个表达式的结果为long 
    long distance = 10000 * 365 * 24 * 60 * 60 * 299792458l;
     
    //由于有double型的直接量599.0参与,整个表达式的结果为 double 
    double change = 800 - 599.0;
        
    //结果为0.0,右边都是int型数据运算结果也为int类型,结果为0,再赋值给double
    将0转化为 0.0
    double persent1 = 80 / 100;  
    //结果为0.8,右边表达式有double型直接量参与, 运算结果为double型
    double persent2 = 80.0 / 100;  
    //由于有long型的直接量参与,整个表达式的结果为long
    long distance = 10000 * 365 * 24 * 60 * 60 * 299792458l;
     
    //由于有double型的直接量599.0参与,整个表达式的结果为 double
    double change = 800 - 599.0;
        
    //结果为0.0,右边都是int型数据运算结果也为int类型,结果为0,再赋值给double
    型,将0转化为 0.0
    double persent1 = 80 / 100;
        
    //结果为0.8,右边表达式有double型直接量参与, 运算结果为double型
    double persent2 = 80.0 / 100;

    7.4. byte、char、short转换为int

    在前面所介绍的8种数据类型中,byte、char、short、int、long都表示整数类型,而整型的直接量为int,在实际使用中,为了方便使用,遵循了如下的规则:

    int直接量可以直接赋值给byte、char和short,只要不超过其表示范围。示例如下:

    byte  b  = 97;
    short  s  = 97;
    char  c  = 97;
    byte  b  = 97;
    short  s  = 97;
    char  c  = 97;

    byte、char、short三种类型参与运算时,先一律转换成int类型再进行运算。示例如下:

    byte  b  =  97;
    int  num = b + b;   //num的值为194
    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Java
    相关文章 更多
    精品专题 更多
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    IOS软件

    正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

    AI

    正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

    Mac软件 更多
    Aperty macOS版
    Aperty macOS版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw macOS版
    AionClaw macOS版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy macOS版
    Loomy macOS版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    AirBuddy 3 macOS版
    AirBuddy 3 macOS版

    AirBuddy 3 是面向 macOS 的蓝牙外设增强工具,可集中查看 AirPods、Beats 与苹果设备电量,提供快速连接、播放控制、电量提醒、桌面小组件和多台 Mac 外设接力等功能。

    AirServer macOS版
    AirServer macOS版

    AirServer macOS版可把 Mac 转换为无线投屏接收端,通过 AirPlay 或 Google Cast 接收手机、平板和电脑画面,并支持多设备同时连接、高清镜像及会话录制,适合家庭娱乐、课堂教学、会议演示和应用展示。

    AnyDesk macOS版
    AnyDesk macOS版

    AnyDesk macOS版是一款适用于远程办公、设备维护和客户支持的远程桌面工具,可连接并操作异地计算机,支持文件传输、无人值守访问、会话权限控制及跨平台协作。

    WINDOWS 更多
    讯飞绘文 网页版
    讯飞绘文 网页版

    讯飞绘文网页版是科大讯飞推出的AI图文创作与内容运营工具,覆盖热点选题、文章生成、稿件校对、智能配图、排版发布和数据复盘等环节,适合自媒体创作者及内容团队在线使用。

    Maya(Autodesk Maya) Windows版
    Maya(Autodesk Maya) Windows版

    Autodesk Maya 是面向影视、电视、动画和游戏行业的专业三维制作软件,集多边形与 NURBS 建模、角色绑定、关键帧和动作捕捉动画、Bifrost 特效模拟、材质开发及 Arnold 渲染于一体,

    Aperty Windows版
    Aperty Windows版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw Windows版
    AionClaw Windows版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy Windows版
    Loomy Windows版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    AirServer Windows版
    AirServer Windows版

    AirServer Windows版可把电脑变成AirPlay、Google Cast和Miracast无线投屏接收端,适合会议演示、课堂教学及家庭大屏分享。发送设备通常无需另装客户端,并可同时接收和智能排列多个镜像会话。