Java宝典-数据类型

目录

  • 1.变量与常量
  • 2.Java中的数据类型
  • 3.整型
    • 3.1 字节型byte
    • 3.2 短整型short
    • 3.3 整型int
    • 3.4 长整型long
  • 4.浮点型
    • 4.1 单精度浮点型float
    • 4.2 双精度浮点型double
  • 5.字符型
  • 6.布尔型
  • 7.类型转换
    • 7.1 隐式类型转换
    • 7.2 显示类型转换(强制类型转换)
  • 8.类型提升

大家好,我是你们的Vampire-wpre(也可以叫我鬼鬼!),是一位正在努力学习编程的大学生,为了能够让自己巩固知识,也为了能让大家更好地理解Java相关知识,我开了这个Java宝典的新坑~今天我们要学习的是Java当中的数据类型话不多说我们直接开始吧!

1.变量与常量

在程序当中,有些数据可能会发生改变,例如年龄/身高等,这些经常发生改变的内容,在Java中称为变量;在程序中也会有固定不变的量,不管程序运行到何处,它都是固定不变的量,例如一周有7天/一年有12个月等,这些称之为常量,也叫字面常量.
字面常量可以分为以下几类:

  • 字符串常 量:用双引号" " 括起来的,如"123"和"abcd"
  • 整型常量:在程序中直接写的数字,如1,100
  • 浮点数常量:程序中直接写的小数,如1.1,0.2
  • 字符常量:用单引号括起来的,如 ‘a’
  • 布尔常量:ture和false
  • 空常量:null

2.Java中的数据类型

Java中数据类型分为基本数据类型和引用数据类型.
基本数据类型包括:

  1. 整数类型:
    整数类型包含:字节型(byte),短整型(short),整型(int),长整型(long)
  2. 浮点数类型:
    浮点数类型包含:单精度浮点型(float),双精度浮点型(double)
  3. 布尔类型
    布尔类型表示真或假,关键字是boolean,true表示真,false表示假
  4. 字符类型:
    字符型关键字为char,用于表示一个字符

以下是这些数据类型的特点
在这里插入图片描述

划重点:
1.数据类型所占字节数与操作系统无关
2.整型和浮点型是带符号的,没有所谓的无符号数(与C语言不同!)
3.在程序中,一个整数默认是int型,小数默认是double型
4.定义变量时,使用前如果没有赋值,编译器会报错

3.整型

3.1 字节型byte

byte类型的变量占1个字节(与操作系统无关),byte的取值范围是:-128~127;包装类型为Byte,可以用包装类中的MAX_VALUE和MIN_VALUE输出byte类型的最大值和最小值

byte b = 1;
System.out.println(b);
//输出byte类型的最大值
System.out.println(Byte.MAX_VALUE);
//输出byte类型的最小值
System.out.println(Byte.MIN_VALUE);

3.2 短整型short

short类型的变量占2个字节(与操作系统无关),short取值范围是:-32768~32767;包装类型为Short,可以用包装类中的MAX_VALUE和MIN_VALUE输出short类型的最大值和最小值

short s = 10;
System.out.println(s);
//输出short类型的最大值
System.out.println(Short.MAX_VALUE);
//输出short类型的最小值
System.out.println(Short.MIN_VALUE);

3.3 整型int

int类型的变量占4个字节(与操作系统无关),int取值范围是:-2147483648~2147483647;包装类型为Integer,可以用包装类中的MAX_VALUE和MIN_VALUE输出int类型的最大值和最小值

int i = 20;
System.out.println(i);
//输出int类型的最大值
System.out.println(Integer.MAX_VALUE);
//输出int类型的最小值
System.out.println(Integer.MIN_VALUE);

3.4 长整型long

long类型的变量占8个字节(与操作系统无关),long取值范围是:-2^ 63~2 ^63-1;包装类型为Long,可以用包装类中的MAX_VALUE和MIN_VALUE输出long类型的最大值和最小值

long l = 100;
System.out.println(l);
//输出long类型的最大值
System.out.println(Long.MAX_VALUE);
//输出long类型的最小值
System.out.println(Long.MIN_VALUE);

4.浮点型

4.1 单精度浮点型float

float类型的变量占4个字节,包装类型为Float

4.2 双精度浮点型double

double类型的变量占8个字节,包装类型为Double

浮点型平时使用较多的是double,浮点数在内存中存储方式与整型不一样,浮点数的存储准寻IEE754标准,如果不了解可以看我之前写的文章:整数与浮点数在内存中的存储

5.字符型

字符型关键字为char,字符型变量占2个字节,我们学习过C语言知道,字符可以用ASCII码表示,而在Java中使用的是Unicode表示字符,两个字节能表示的字符数量更多,char的包装类型为Character

6.布尔型

布尔类型(boolean)是用来表示真假的,它的取值只有true和false,Java中,真假只能用布尔类型表示,不存在1表示真,0表示假这种说法.Java虚拟机规范中没有明确规定boolean占多少字节

7.类型转换

在Java中,如果参与运算的数据不是同一类型,则会进行类型转换,包括隐式类型转换(自动)和显示类型转换(强制)

7.1 隐式类型转换

隐式类型转换意味着:代码编译时,编译器会自动进行类型转换处理.看下面的例子

System.out.println(10);//10默认是Int
System.out.println(3.14);//默认是double

int a = 10;
long b = a;//a是int类型,范围小,long类型范围大,范围小的类型(a)赋值给范围大的类型(b)时,编译器会自动将a转换成long类型

double d = 3.14;
// float f = d;代码无法编译,d是double类型的变量,范围比float大,将范围大的赋值给范围小的,不安全

7.2 显示类型转换(强制类型转换)

当范围小的变量赋给范围大的变量时,编译器无法通过,此时我们可以进行强制类型转换.
转换语法:

(转换后的类型)变量;:
long a = 10;
int b =(int)a;
double d = 3.14;
float f = (float)d;

注意事项:

  • 如果不进行强制类型转换,数据类型不同的变量进行赋值时,范围大的变量不能赋值给范围小的变量
  • 范围大的变量赋值给范围小的变量时,需要强制类型转换,但是可能会丢失精度
  • 类型不相干的不能相互转化,如:布尔类型不能转换成其他类型

8.类型提升

一般情况下,不同类型的数据进行运算时,类型小的数据会提升为类型大的,小于4字节的类型(short,byte)会提升为int

int a = 10;
long b =20;
long c =a+b;//编译成功
int d =a+b;//编译失败
//a+b的值会提示为long类型,将long类型的值赋给int类型的变量无法编译成功
byte a =10;
byte b =20;
byte c =a+b;//编译失败
int d =a+b;//编译成功
//虽然a和b类型一样,都是byte,但是byte小于4字节,所以运算时,a和b会先提升为int,结果为int,将范围大的值赋值给范围小的变量,编译无法通过

以上就是关于Java数据类型的全部内容啦,如果老铁们认为文章对你有帮助的话别忘了一键三连~

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

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

相关文章

了解UDP发送过快导致的问题和对应解决方案

在当今这个以数据为核心的时代,企业对于数据传输的速度和稳定性有着日益增长的需求。UDP凭借其低延迟和高效率的特性,在实时通信和大规模数据传输领域扮演着关键角色。然而,UDP的无连接特性和缺乏可靠性也给数据传输带来了挑战,尤…

【python错误】Pytorch1.9 ImportError: cannot import name ‘zero_gradients‘

错误:Pytorch1.9 ImportError: cannot import name ‘zero_gradients’ 错误提示: ImportError: cannot import name ‘zero_gradients’ from ‘torch.autograd.gradcheck’ (/root/miniconda3/envs/d2l/lib/python3.9/site-packages/torch/autograd/g…

3种JWT验证和续签的策略

3 种JWT验证和续签的策略 好文推荐:一文教你搞定所有前端鉴权与后端鉴权方案,让你不再迷惘 - 掘金 (juejin.cn) 3 种jwt 验证的策略 通过解析去验证:每次访问api时parse jwt 判断是否vaild jwt有效 正常调用api jwt无效 返回401 缺点&a…

AVR 328pb串口基本介绍和使用

AVR 328pb串口基本介绍和使用 📍相关篇《AVR 328pb定时器0基本介绍和使用》 🔖基于Atmel Studio 7.0开发环境。 📍结合参考同架构lgt8f328p中文文档:http://www.prodesign.com.cn/wp-content/uploads/2023/03/LGT8FX8P_databook…

北朝隋唐文物展亮相广西,文物预防性保护网关保驾护航

一、霸府名都——太原博物馆收藏北朝隋朝文物展 2月1日,广西民族博物馆与太原博物馆携手,盛大开启“霸府名都——太原博物馆北朝隋文物展”。此次新春展览精选了北朝隋唐时期150多件晋阳文物珍品。依据“巍巍雄镇”“惊世古冢”“锦绣名都”三个单元&am…

多线程编程6——使用 volatile 解决问题可见性问题

一、内存可见性问题 内存可见性问题是出现线程安全问题的原因之一。 1、什么是内存可见性问题? 一个线程针对一个变量进行读取操作,另一个线程针对这个变量进行修改操作,此时读到的值不一定是修改后的值,出现了线程安全问题&a…

学习Android的第三天

目录 Android LinearLayout 线性布局 XML 属性 LinearLayout 几个重要的 XML 属性 LinearLayout.LayoutParams XML 属性 divider (分割线) Android RelativeLayout 相对布局 RelativeLayout 布局属性 TableLayout ( 表格布局 ) TableRow 子控件的主要属性 Android Lin…

爬虫入门到精通_基础篇4(BeautifulSoup库_解析库,基本使用,标签选择器,标准选择器,CSS选择器)

1 Beautiful说明 BeautifulSoup库是灵活又方便的网页解析库,处理高效,支持多种解析器。利用它不用编写正则表达式即可方便地实线网页信息的提取。 安装 pip3 install beautifulsoup4解析库 解析器使用方法优势劣势Python标准库BeautifulSoup(markup,…

ADB的配置和使用及刷机root

ADB的配置和使用 ADB即Android Debug Bridge,安卓调试桥,是谷歌为安卓开发者提供的开发工具之一,可以让你的电脑以指令窗口的方式控制手机。可以在安卓开发者网页中的 SDK 平台工具页面下直接下载对应系统的 adb 配置文件,大小只…

05、全文检索 -- Solr -- Solr 全文检索之图形界面的文档管理(文档的添加、删除,如何通过关键字等参数查询文档)

目录 Solr 全文检索之文档管理添加文档使用 JSON 添加文档:使用 XML 添加文档: 删除文档使用 JSON 删除文档:使用 XML 删除文档: 查询文档查询文档的详细参数fq(Filter Query):过滤sort:排序sta…

LangGPT-人人都可以写高质量的prompt

使用 LangGPT,可以在几分钟内轻松上手大模型指令编写。 网址:https://github.com/EmbraceAGI/LangGPT/tree/main 手册:⭐LangGPT 结构化提示词 模版 # Role: 角色名## Profile - Author: 西堂 - Version: 0.1 - Language: 中文 - Descripti…

RocketMQ问题篇02 | Broker存储过慢异常分析

RocketMQ问题篇01 | Broker存储过慢异常分析 1、问题描述2、磁盘IO分析(排除硬件问题)3、刷盘源码分析(排除刷盘逻辑)4、macloud的告警源代码分析(定位至pageCache有问题)5、操作系统排查(排除m…

使用apifox创建一个Mock Server Api 接口

安装 下载 Apifox - API 文档、调试、Mock、测试一体化协作平台。拥有接口文档管理、接口调试、Mock、自动化测试等功能,接口开发、测试、联调效率,提升 10 倍。最好用的接口文档管理工具,接口自动化测试工具。 创建mock api项目中使用 创建项…

vio参数文件内相机imu参数的修改

imu标定工具 https://github.com/mintar/imu_utils网络上有各种IMU校准工具和校准教程,曾经花费了巨大精力跟着各种教程去跑校准。 然而,标定使用的数据都是在静止状态下录制的,我们在使用vio或者imu-cam联合标定的时候,imu确是处…

短剧小程序开发:打造高效、便捷的娱乐体验

随着移动互联网的普及和用户需求的多样化,短剧小程序作为一种新型的应用形态,逐渐受到了广大用户的青睐。短剧小程序开发旨在为用户提供一种高效、便捷的娱乐体验,让用户在忙碌的生活中轻松享受到精彩的短剧内容。本文将探讨短剧小程序开发的…

备战蓝桥杯---搜索(BFS基础1)

如果DFS是时光回溯&#xff0c;那么BFS则是影子分身。 下面是它的定义&#xff1a; 下面直接看题&#xff1a; 十分经典&#xff0c;在这注意存的时候可以用i*mj的形式&#xff0c;可以当作模板&#xff0c;下面是AC代码&#xff1a; #include<bits/stdc.h> using name…

卡诺图:逻辑相邻与几何相邻的统一

文章目录 1.一句话记住卡诺图2.卡诺图的由来、定义和特点3.填写卡诺图&#xff08;用卡诺图表示逻辑函数&#xff09;⑴根据真值表填写卡诺图⑵根据最小项&#xff08;或最大项&#xff09;填写卡诺图⑶根据函数的与或表达式填写卡诺图 4.用卡诺图化简逻辑函数⑴化简步骤⑵画圈…

c#的反汇编对抗

文章目录 前记nim攻防基础FFI内存加载加解密、编码 后记C#类型转换表nim基础 前记 随便编写一个c#调用winapi并用vs生成dll,同时用csc生成exe using System; using System.Runtime.InteropServices; namespace coleak {class winfun{[DllImport("User32.dll")]publ…

AutoCAD .NET 层次结构介绍

AutoCAD .NET API 提供了一种面向对象的编程接口&#xff0c;通过它可以与AutoCAD进行深度集成和自定义功能开发。以下是基于.NET框架下AutoCAD对象层次结构的基本介绍&#xff1a; Autodesk.AutoCAD.ApplicationServices 命名空间 根对象&#xff0c;代表运行中的AutoCAD应用程…

模板简要介绍,C++读书笔记

2014年2月3日 内容整理自《程序设计教程&#xff1a; 用C语言编程 第三版》 陈家骏 郑滔 --------------------------------------------------------------------------------------------------------------------------------- &#xff08;一&#xff09;函数模板 1…