【Java记】数据类型与变量

一、数据类型

Java中数据类型主要分为两类:基本数据类型引用数据类型。基本数据类型有四类八种:

  1. 四类:整型、浮点型、字符型以及布尔
  2. 八种:

    数据类

    关键

    内存占

    字节

    byte

    1 

    -128~ 127

    短整

    short

    2 

    -32768 ~ 32767

    int

    4 

    - 2^31~2^31-1

    长整

    long

    8 

    -2^63 ~ 2^63-1

    单精度浮点

    float

    4 

    有范围,一般不关

    双精度浮点

    double

    8 

    有范围,一般不关

    字符

    char

    2 

    0 ~ 65535

    布尔

    boolean

    没有明确规

    true false

注意:

  • 不论是在16位系统还是32位系统,int都占用4个字节,long都占8个字节。
  • 整形和浮点型都是带有符号的。
  • 整型默认为int型,浮点型默认为double。
  • 字符串属于引用类型。
  • 二、字面常量

  • 常量即程序运行期间,固定不变的量称为常量,比如:一个礼拜七天,一年12个月等

  • 其中:1003.14Atrue/false都是常量,将其称为字面常量。字面常量的分类:

  • 字符串常量:由""括起来的,比如“12345”“hello”你好
  • 整形常量:程序中直接写的数字(注意没有小数点),比如:1001000
  • 注意:字符串、整形、浮点型、字符型以及布尔型,在Java中都称为数据类型
  • 浮点数常量:程序中直接写的小数,比如:3.140.49
  • 字符常量:由 单引号 括起来的当个字符,比如:‘A’‘1’
  • 布尔常量:只有两种truefalse
  • 空常量:null

三、变量

1、变量概

在程序中,除了有始终不变的常量外,有些内容可能会经常改变,比如:人的年龄、身高、成绩分数、数学函数的计算结果等,对于这些经常改变的内容,在Java程序中,称为变量。而数据类型就是用来定义不同种类变量的。

2、语法格

定义变量的语法格式为

比如

3、整型变量

3.1、整型变量

注意事项

  1. int不论在何种系统下都是4个字
  2. 推荐使用方式一定义,如果没有合适的初始值,可以设置为0
  3. 在给变量设置初始值时,值不能超过int的表示范围,否则会导致溢
  4. 变量在使用之前必须要赋初值,否则编译报
  5. int的包装类型为 Integer

3.2、长整型变量

注意事项

  1. 长整型变量的初始值后加L或者l,推荐加L
  2. 长整型不论在那个系统下都占8个字节
  3. 长整型的表示范围为:-2^63   ~2^63-1 
  4. long的包装类型为Long

3.3、短整型变量

注意事项

  1. short在任何系统下都占2个字
  2. short的表示范围为:-32768 ~ 32767
  3. 使用时注意不要超过范围(一般使用比较少)
  4. short的包装类型为Short

3.4字节型变量

注意事项:

  1. byte在任何系统下都占1个字
  2. byte的范围是:-128 ~ 127
  3. 字节的包装类型为Byte

4、浮点型变

4.1双精度浮点

神奇的代码一:

Java , int 除以 int 的值仍然是 int(会直接舍弃小数部分)。如果想得到 0.5, 需要使用 double 类型计算.

神奇的代码二:

注意事项:

  1. double在任何系统下都占8个字
  2. 浮点数与整数在内存中的存储方式不同,不能单纯使用 2^n的形式来计
  3. double的包装类型为Double
  4. double 类型的内存布局遵守 IEEE 754 标准(C语言一样), 尝试使用有限的内存空间表示可能无限的小数, 必会存在一定的精度误差,因此浮点数是个近似值,并不是精确值。

4.2单精度浮点

       float 类型在 Java 中占四个字节, 同样遵守 IEEE 754 标准. 由于表示的数据精度范围较小, 一般在工程上用到浮点数都优先考虑 double, 不太推荐使用 float. float的包装类型为Float

5、字符型变

注意事项

  1. Java 中使用单引号 + 单个字的形式表示字符字面值.
  2. 计算机中的字符本质上是一个整数. 在 C 语言中使用 ASCII 表示字符, Java 中使用 Unicode 表示字符. 因此一个字符占用两个字节, 表示的字符种类更多, 包括中文.

6、布尔型变量

注意事项

  1. boolean 类型的变量只有两种取值, true 表示真, false 表示假.
  2. Java boolean 类型和 int 不能相互转换, 不存在 1 表示 true, 0 表示 false 这样的用法.
  3. Java虚拟机规范中,并没有明确规定boolean占几个字节,也没有专门用来处理boolean的字节码指令,在  Oracle公司的虚拟机实现中,boolean1个字节。
  4. boolean的包装类型为Boolean

四、类型转换

在Java中,当参与运算数据类型不一致时,就会进行类型转换。Java中类型转换主要分为两类:自动类型转换()  强制类型转换(显式)

1、自动类型转换(隐式)

自动类型转换即:代码不需要经过任何处理,在代码编译时,编译器会自动进行处理。特点:数据范围小的转为数据范围大的时会自动进行

​​​​​​​

2、强制类型转换(显式)

强制类型转换:当进行操作时,代码需要经过一定的格式处理,不能自动完成。特点:数据范围大的到数据范围小的。

注意事项

1.不同数字类型的变量之间赋值,  表示范围更小的类型能隐式转换成范围较大的类

2.如果需要把范围大的类型赋值给范围小的, 需要强制类型转换, 但是可能精度丢

3.将一个字面值常量进行赋值的时候, Java 会自动针对数字范围进行检

4.强制类型转换不一定能成功,不相干的类型不能互相转换

五、类型提升

不同类型的数据之间相互运算时,数据类型小的会被提升到数据类型大的

1.intlong之间:int会被提升为long

2.byte与byte的运算

结论: byte byte 都是相同类型, 但是出现编译报错. 原因是, 虽然 a b 都是 byte, 但是计算 a + b 会先将 a和 b 都提升成 int, 再进行计算, 得到的结果也是 int, 这是赋给 c, 就会出现上述错误.由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据. 为了硬件上实现方便, 诸如 byte short这种低于 4 个字节的类型, 会先提升成 int, 再参与计算.

正确的写法:

六、字符串类型

Java中使用String类定义字符串类型,比如

在有些情况下,需要将字符串和整形数字之间进行转换

1、int 转成 String

2、String 转成 int

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于GPT-4一键完成数据分析全流程的AI Agent: Streamline Analyst

大型语言模型(LLM)的兴起不仅为获取知识和解决问题开辟了新的可能性,而且催生了一些新型智能系统,例如旨在辅助用户完成特定任务的AI Copilot以及旨在自动化和自主执行复杂任务的AI Agent,使得编程、创作等任务变得高效…

AndroidStdio修改安卓模拟器的安装位置

AndroidStdio修改安卓模拟器的安装位置 1.删除原有的虚拟机 可以直接删除这个avd文件,放心大胆删除 在这个目录下可以看到.avd文件和.ini文件。.avd占了我10G.上图是我转移.avd后截的。发现这个.ini文件,.ini文件就是配置文件,就像mysql安装…

ElasticSearch快速开始

目录 全文检索 全文检索的原理 什么是倒排索引 ElasticSearch介绍 ElasticSearch应用场景 ElasticSearch下载安装(windows) 客户端Kibana安装 Elasticsearch安装分词插件 ElasticSearch快速开始 ElasticSearch索引操作 创建索引 查询索引 删…

蓝桥杯电子类单片机提升二——串口发送与接收

目录 单片机资源数据包_2023 一、串口收发数据的介绍 1.波特率(Baud Rate) 2.帧格式 3.SBUF寄存器(Serial Buffer) 4.中断处理 二、如何从stc-isp获取串口收发数据的代码 1.代码的获取 2.代码的修改 1)第一步…

HarmonyOS鸿蒙学习基础篇 - 自定义组件(一)

前言 在ArkUI中,UI显示的内容均为组件,由框架直接提供的称为系统组件,由开发者定义的称为自定义组件。在进行 UI 界面开发时,通常不是简单的将系统组件进行组合使用,而是需要考虑代码可复用性、业务逻辑与UI分离&#…

SpringIOC之support模块ResourceBundleMessageSource

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

Java微服务学习Day1

文章目录 认识微服务服务拆分及远程调用服务拆分服务远程调用提供者与消费者 Eureka注册中心介绍构建EurekaServer注册user-serviceorder-service完成服务拉取 Ribbon负载均衡介绍原理策略饥饿加载 Nacos注册中心介绍配置分级存储负载均衡环境隔离nacos注册中心原理 认识微服务…

论文阅读-面向机器学习的云工作负载预测模型的性能分析

论文名称:Performance Analysis of Machine Learning Centered Workload Prediction Models for Cloud 摘要 由于异构服务类型和动态工作负载的高变异性和维度,资源使用的精确估计是一个复杂而具有挑战性的问题。在过去几年中,资源使用和流…

18 19 SPI接口的74HC595驱动数码管实验

1. 串行移位寄存器原理(以四个移位寄存器为例) 1. 通过移位寄存器实现串转并:一个数据输入端口可得到四位并行数据。 通过给data输送0101数据,那么在经过四个时钟周期后,与data相连的四个寄存器的输出端口得到了0101…

LeetCode Python - 16.最接近的三数之和

目录 题目答案运行结果 题目 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。 示例 1: 输入:nums [-1,2,1,-4],…

项目访问量激增该如何应对

✨✨ 欢迎大家来到喔的嘛呀的博客✨✨ 🎈🎈希望这篇博客对大家能有帮助🎈🎈 目录 引言 一. 优化数据库 1.1 索引优化 1.2 查询优化 1.3 数据库设计优化 1.4 事务优化 1.5 硬件优化 1.6 数据库配置优化 二. 增加服务器资源…

精品jsp+ssm基于Java的财务收支记账管理系统

《[含文档PPT源码等]精品jspssm基于Java的收支管理系统[包运行成功]》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功! 使用技术: 开发语言:Java 框架:ssm 技术:JSP JDK版本&…

一周学会Django5 Python Web开发-Django5应用配置

锋哥原创的Python Web开发 Django5视频教程: 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计14条视频,包括:2024版 Django5 Python we…

日志监控须知

在这个领域,最流行的应该是ELK. ELK可以让收集日志,检索日志更加的简单,让定位日志问题更加的高效,在也不需要挨个登录服务器,然后用一堆Linux命令去搜索日志了. ELK ( Elasticsearch Logstash Kibana ) ELK架构: 各个微服务,通过某种机制把自己的日志交给Logstash 这里的某…

【教程】C++语言基础学习笔记(五)——Vector向量

写在前面: 如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持! 【C语言基础学习】系列文章 第一章 《项目与程序结构》 第二章 《数据类型》 第三章 《运算符》 第四章 《流程控制》 第五章…

ucosIII下创建任务读取DS18B20采集到的温度数据

学习链接:ucosIII下创建任务读取并输出DHT11采集到的温湿度数据 相关代码及事项: 首先,需要添加下面两个文件, 其次,main.c 中如下的代码: #include "led.h" #include "delay.h" #…

第10集《佛说四十二章经》

请大家打开讲议第十一面,第十九章、假真并观。 前面一章念等本空,说明大乘佛法的修学,身口意应安住在非空非有的中道实相。本章对中道实相的修学,再做明确的说明。修中道实相观要有空观与假观的观照,从空观中远离有相…

VueCLI核心知识综合案例TodoList

目录 1 拿到一个功能模块首先需要拆分组件: 2 使用组件实现静态页面的效果 3 分析数据保存在哪个组件 4 实现添加数据 5 实现复选框勾选 6 实现数据的删除 7 实现底部组件中数据的统计 8 实现勾选全部的小复选框来实现大复选框的勾选 9 实现勾选大复选框来…

​StableSwarmUI#超越文本的prompt

今天看到一个新的webui方案,是Stability-AI开源的: StableSwarmUI 是一个模块化的稳定扩散web用户界面,着重于使强大的工具易于访问、高性能和可扩展性。 由于项目还在开发中,我们可以先了解下,翻看了它的特点&#xf…

幻兽帕鲁游戏联机的时候,显示“网络连接超时”怎么解决?

如果你在游戏联机的时候,显示“网络连接超时”,可以检查下: 1、前提是你已经按照教程部署成功 2、检查防火墙有没有忘记设置,协议是UDP(只有TCP不行,一定要有UDP),端口是否填了8211&…