Java学习教程,从入门到精通,Java 基本数据类型详解(5)

news2024/10/22 4:58:53

Java 基本数据类型详解

Java是一种强类型语言,这意味着在Java程序中,每个变量都必须明确声明其数据类型。Java提供了八种基本数据类型(Primitive Data Types),这些类型都是预先定义好的,并且每种类型都占用固定大小的内存空间。以下是Java八种基本数据类型的详细介绍:

1. 整数类型(Integer Types)
  • byte

    • 大小:1字节(8位)
    • 范围:-128到127
    • 默认值:0
    • 用途:通常用于表示小范围的整数,如文件操作中的字节计数等。
  • short

    • 大小:2字节(16位)
    • 范围:-32,768到32,767
    • 默认值:0
    • 用途:用于表示中等范围的整数。
  • int

    • 大小:4字节(32位)
    • 范围:-231到231-1(即-2,147,483,648到2,147,483,647)
    • 默认值:0
    • 用途:最常用的整数类型,用于表示大多数情况下的整数。
  • long

    • 大小:8字节(64位)
    • 范围:-263到263-1
    • 默认值:0L(注意L后缀,表示这是一个long类型的字面量)
    • 用途:用于表示大范围的整数,如大文件的字节数等。
2. 浮点类型(Floating-Point Types)
3. 字符类型(Character Type)
  • char
    • 大小:2字节(16位)
    • 范围:0到65,535(即Unicode码点范围)
    • 默认值:‘\u0000’(空字符)
    • 用途:用于表示单个字符,Java中的char类型采用Unicode编码,因此可以表示世界上大多数语言的字符。
4. 布尔类型(Boolean Type)
  • boolean
    • 大小:没有明确的大小(在JVM实现中可能有所不同),但通常认为是1位或1字节
    • 范围:true或false
    • 默认值:false
    • 用途:用于表示逻辑上的真或假,通常用于条件判断和控制流语句中。

注意事项

  • Java中的基本数据类型都是值类型(Value Types),这意味着当你将一个基本数据类型的变量赋值给另一个变量时,实际上是将值复制了一份。
  • 对于整数类型,Java提供了字面量后缀来表示不同的类型,如L表示long,F表示float等。如果不指定后缀,Java会根据字面量的值来推断其类型(在可能的情况下会推断为int类型)。
  • Java中的char类型可以表示Unicode字符,因此可以存储世界上大多数语言的字符。但是,当处理多字节字符集(如UTF-8)时,需要注意字符编码的问题。
  • 浮点类型在表示小数时可能会存在精度问题,因此在需要高精度计算的场合(如金融计算)中,建议使用BigDecimal类来代替浮点类型。
    了解Java的基本数据类型是掌握Java编程的基础之一。通过合理使用这些类型,可以编写出高效、健壮的Java程序。

当然可以。以下是一些使用Java基本数据类型的示例代码:

public class PrimitiveDataTypesDemo {

    public static void main(String[] args) {
        // 整数类型
        byte byteVar = 100;         // byte类型,范围:-128到127
        short shortVar = 30000;     // short类型,范围:-32,768到32,767
        int intVar = 1000000;       // int类型,范围:-2^31到2^31-1
        long longVar = 10000000000L; // long类型,范围:-2^63到2^63-1,注意L后缀

        // 浮点类型
        float floatVar = 3.14F;     // float类型,范围:±3.40282347E+38F,注意F后缀
        double doubleVar = 3.141592653589793; // double类型,范围:±1.79769313486231570E+308

        // 字符类型
        char charVar = 'A';         // char类型,范围:0到65,535(Unicode码点)

        // 布尔类型
        boolean booleanVar = true;  // boolean类型,只有true和false两个值

        // 输出变量值
        System.out.println("byteVar: " + byteVar);
        System.out.println("shortVar: " + shortVar);
        System.out.println("intVar: " + intVar);
        System.out.println("longVar: " + longVar);
        System.out.println("floatVar: " + floatVar);
        System.out.println("doubleVar: " + doubleVar);
        System.out.println("charVar: " + charVar);
        System.out.println("booleanVar: " + booleanVar);

        // 类型转换示例(自动类型转换和强制类型转换)
        int intFromDouble = (int) doubleVar; // 强制类型转换,double转int,会丢失精度
        double doubleFromInt = intVar;       // 自动类型转换,int转double

        System.out.println("intFromDouble (after casting double to int): " + intFromDouble); // 输出时会丢失小数部分
        System.out.println("doubleFromInt (after automatic casting int to double): " + doubleFromInt);
    }
}

在这段代码中,我们声明并初始化了Java的八种基本数据类型的变量,并通过System.out.println方法输出了它们的值。此外,还展示了两种类型转换:

  1. 强制类型转换:将double类型的变量转换为int类型。这种转换会丢失小数部分,只保留整数部分。
  2. 自动类型转换:将int类型的变量转换为double类型。这种转换是安全的,因为double类型能够表示更大的范围和精度。
    请注意,在实际编程中,应该谨慎使用类型转换,特别是强制类型转换,因为它可能会导致数据丢失或程序错误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2220543.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我谈傅里叶变换幅值谱的显示

在图像处理和分析中通常需要可视化图像傅里叶变换的幅值谱。通过幅值谱,可以直观地观察频率成分的分布,帮助理解图像的结构和特征。 很多刊物中直接显示傅里叶变换的幅值谱。 FFT fftshift(fft2(double(Img))); FFT_mag mat2gray(log(1abs(FFT)));由…

【Linux】线程基本概念,线程控制

目录 基本概念 重新理解进程 线程真实存在吗? 问题解答 线程资源 线程控制 线程创建 如何全面看待线程函数传参 如何看到线程函数返回 线程查询 线程等待 线程终止 线程分离 基本概念 线程(thread)是指在单个进程内,多…

探索前端与 AI 的结合:如何用 GPT-4 助力开发效率

前言:开发者的“神队友” GPT-4 还记得那些深夜奋战,紧盯着屏幕敲代码的日子吗?表单不验证、布局乱飞、BUG 根本找不到,这些时刻简直能让人抓狂。你可能会想:“要是有个智能助手能帮我搞定这些多好!” 那么…

#HarmonyOS:页面和自定义组件生命周期

页面生命周期 即被Entry装饰的组件生命周期 onPageShow:页面每次显示时触发一次,包括路由过程、应用进入前台等场景。onPageHide: 页面每次隐藏时触发一次,包括路由过程、应用进入后台等场景。onBackPress: 当用户点击返回按钮是触发 组件…

全面了解 NGINX 的负载均衡算法

NGINX 提供多种负载均衡方法,以应对不同的流量分发需求。常用的算法包括:最少连接、最短时间、通用哈希、随机算法和 IP 哈希。这些负载均衡算法都通过独立指令来定义,每种算法都有其独特的应用场景。 以下负载均衡方法(IP 哈希除…

如何让自己的网站,被更多的人搜索到(免费方案)

文章目录 一、要做时间的朋友二、需要独立IP的服务器三、SEO信息如何设置设置网站TDK生成网站地图设置搜索引擎自动提交部署SSL证书加分项:定期更新文章 引言: 许多人都有这样一个问题:做好自己的网站,如何让这个网站被更多的人浏…

WPF实现类似网易云音乐的菜单切换

这里是借助三方UI框架实现了,感兴趣的小伙伴可以看一下。 深色模式:​ 浅色模式: ​这里主要使用了以下三个包: MahApps.Metro:UI库,提供菜单导航和其它控件​​​​​​​ 实现步骤:1、使用B…

SSRF-利用dict协议-攻击redis

1.靶场准备: CTFHub-技能树-Web-SSRF-Redis协议 蚁剑AntSword 2.简述: 2.1 SSRF 服务器端请求伪造,存在一个url参数,一般用于图片上传、网页重定向等,我们可以控制url参数,去访问内网服务器的敏感内容…

前端vue框架配置基础信息详解分析

前端vue2、vue3框架是我们最近常用的框架,今天我们分析一下配置基础信息、详解其中的功能含义。 1、vue.config.js 文件分析 这个 vue.config.js 文件是 Vue CLI 项目中用于配置项目构建行为和开发环境设置的文件。它能够让开发者定制打包、代理、路径、样式等方面…

干货:落地企业级RAG的实践指南

1. 什么是RAG? 检索增强生成(Retrieval-Augmented Generation,简称 RAG)通过结合大型语言模型(LLM)和信息检索系统来提高生成文本的准确性和相关性.这种方法允许模型在生成回答之前,先从权威知…

spdlog学习记录

spdlog Loggers:是 Spdlog 最基本的组件,负责记录日志消息。在 Spdlog 中,一个 Logger 对象代表着一个日志记录器,应用程序可以使用 Logger 对象记录不同级别的日志消息Sinks:决定了日志消息的输出位置。在 Spdlog 中&…

深入拆解TomcatJetty(三)

深入拆解Tomcat&Jetty(三) 专栏地址:https://time.geekbang.org/column/intro/100027701 1 Tomcat组件生命周期 Tomcat如何如何实现一键式启停 Tomcat 架构图和请求处理流程如图所示: 对组件之间的关系进行分析,…

MySQL(python开发)——(3)表数据的基本操作,增删改查

MySQL(python开发)——(1)数据库概述及其MySQL介绍 MySQL(python开发)——(2)数据库基本操作及数据类型 MySQL—— 表数据基本操作 一、表中插入(insert)数据——增 insert into 表名 values (值1&#…

人工智能正在扼杀云计算的可持续性

可持续性曾是公共云计算中备受推崇的优势。企业和云提供商大肆宣扬他们的绿色计划,推广采用可再生能源的数据中心,以减少碳足迹。 近几个月来,这个话题已悄然淡出人们的视线。罪魁祸首是什么?对人工智能功能的无限需求正在推动云…

大数据-180 Elasticsearch - 原理剖析 索引写入与近实时搜索

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

Django配置路由后,为什么输入http://127.0.0.1:8000/ 网址后报错了?

问题探讨:为什么输入http://127.0.0.1:8000/ 网址后报错了? 翻译一下: 屏蔽一下新加的路由 发现界面正常了 现在翻译一下: 是不是比较理解了,admin 属于默认配置的URL,所以urlpatterns为空列表或仅配置admin路由时&…

【算法篇】贪心类(1)(笔记)

目录 一、理论基础 1. 大纲 2. 求解步骤 二、Leetcode 题目 1. 分发饼干 2. 摆动序列 3. 最大子序和 4. 买卖股票的最佳时机 II 5. 跳跃游戏 6. 跳跃游戏 II 7. K 次取反后最大化的数组和 8. 加油站 9. 分发糖果 一、理论基础 1. 大纲 2. 求解步骤 将问题分解为…

人工智能:塑造未来生活与工作的力量

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《热点时事》 期待您的关注 引言 随着人工智能技术的不断发展,我们已经看到了它在各行业带来的巨大变革。 在医疗行业中…

【wpf】08 xml文件的存取操作

在使用wpf编程过程中,会用到xml的配置文件,实现对其读取和存储的操作是必须的。 1 xml说明 可扩展标记语言 (Extensible Markup Language, XML) ,标准通用标记语言的子集,可以用来标记数据、定义数据类型,是一种允许…

git clone报错fatal: pack has bad object at offset 186137397: inflate returned 1

逐步拷贝 https://stackoverflow.com/questions/27653116/git-fatal-pack-has-bad-object-at-offset-x-inflate-returned-5 https://www.cnblogs.com/Lenbrother/p/17726195.html https://cloud.tencent.com/developer/ask/sof/107092182 git clone --depth 1 <repository…