Java的数据类型(复习版)

思维导图

在这里插入图片描述

一.字面常量

什么是常量?在我的理解看来常量就是在一个程序运行期间,保持不变的量就是常量。
例如:

		System.out.println(100);System.out.println('a');System.out.println(3.114);

这些都可以称为常量。

字面常量的分类:

  1. 字符串常量:由""括起来的,比如“12345”、“hello”、“你好”。
  2. 整形常量:程序中直接写的数字(注意没有小数点),比如:100、1000
  3. 浮点数常量:程序中直接写的小数,比如:3.14、0.49
  4. 字符常量:由 单引号 括起来的当个字符,比如:‘A’、‘1’
  5. 布尔常量:只有两种true和false
  6. 空常量:null

二.数据类型

数据类型分为基本数据类型引用数据类型

我们这里先介绍基本数据类型和变量的定义:

我们这里先介绍基本数据类型和变量的定义:

变量定义:数据类型 变量名=变量值

整型:int

   int a=10;//在定义整型变量时最好给一个初始值,不然编译器会报错

字节类型:byte

byte a=127;//127是byte类型可以存储的最大值

短整型:short

short a=10;

长整型:long

long a=100L;// // 为了区分int和long类型,一般建议:long类型变量的初始值之后加L或者l

字符型:char

char a='帅';//java中的字符可以存放整形
char b='a';
//注意事项:
1. Java 中使用 单引号 + 单个字母 的形式表示字符字面值.
2. 计算机中的字符本质上是一个整数.C 语言中使用 ASCII 表示字符,Java 中使用 Unicode 表示字符. 因此
一个字符占用两个字节, 表示的字符种类更多, 包括中文.

单精度浮点数:float

float a=10.1f;//小数默认都是double类型,所以在后面加f可以区分。

双精度浮点数:double

double a=10.14;

布尔类型:boolean

boolean a=true;
boolean b=false;

数据类型的最值

这里我们简单介绍了八种基本数据类型。接下来我们看一下每一个基本数据类型所占的内存和他的最值。如何在代码中求的基本数据类型的最大值,这里先简单介绍下包装类

Java的包装类是为了方便操作基本数据类型而提供的类。Java的基本数据类型(如int、char、boolean等)是非对象的,不能直接参与面向对象的操作,也不能直接调用方法。为了解决这个问题,Java提供了对应的包装类。

基本数据类型对应的包装类:Java为每种基本数据类型都定义了一个对应的包装类,用于将基本数据类型转换为对象。这些包装类提供了一些常见的方法,以便于操作基本数据类型的值。

Integer:对应int类型

Long:对应long类型

Short:对应short类型

Byte:对应byte类型

Float:对应float类型

Double:对应double类型

Character:对应char类型

Boolean:对应boolean类型

这里只有int和char的包装类尤为特殊,其他类型都是首字母大写即可。

如何用包装类求每一个数据类型的最大值和最小值呢?

 //int 类型的变量int b;b=10;System.out.println(b);//如何查看int类型的最大值和最小值(借用包装类就可以查看int数据类型的最大值和最小值)System.out.println(Integer.MAX_VALUE);System.out.println(Integer.MIN_VALUE);//byte 类型byte c=100;//如何查看byte类型的最大值和最小值(借用包装类就可以查看byte数据类型的最大值和最小值)System.out.println(Byte.MAX_VALUE);System.out.println(Byte.MIN_VALUE);//short类型short d=100;//如何查看short类型的最大值和最小值(借用包装类就可以查看short数据类型的最大值和最小值)System.out.println(Short.MAX_VALUE);System.out.println(Short.MIN_VALUE);//long 类型long e=1000L;//long 后面最好要加上"L",和int区别开来,当然也可以使用"l",但是"l"和1类似,所以用"L"//如何查看long类型的最大值和最小值(借用包装类就可以查看long数据类型的最大值和最小值)System.out.println(Long.MAX_VALUE);System.out.println(Long.MIN_VALUE);//float类型float f=10.4f;//为了强调是单精度浮点数需要在后面加上f//如何查看float类型的最大值和最小值(借用包装类就可以查看float数据类型的最大值和最小值)System.out.println(Float.MAX_VALUE);System.out.println(Float.MIN_VALUE);//double 类型double g=100.36;//小数默认都是double类型//如何查看double类型的最大值和最小值(借用包装类就可以查看double数据类型的最大值和最小值)System.out.println(Double.MAX_VALUE);System.out.println(Double.MIN_VALUE);//char类型char h='A';char i='刷';//注意:Java中可以用字符存放一个中文汉字//boolean 类型//只表示真假boolean j=true;boolean k=false;

当然,我们也可以自己计算每种数据类型的最值问题

但是我们还要了解什么是字节?

字节是计算机中表示空间大小的基本单位.
计算机使用二进制表示数据. 我们认为 8 个二进制位(bit) 为一个字节(Byte).
我们平时的计算机为 8GB 内存, 意思是 8G 个字节.
其中 1KB = 1024 Byte, 1MB = 1024 KB, 1GB = 1024 MB.
所以 8GB 相当于 80 多亿个字节

在这里插入图片描述

注意:
不论是在16位系统还是32位系统,int都占用4个字节,long都占8个字节
整形和浮点型都是带有符号的
整型默认为int型,浮点型默认为double

小插曲

int a = 1;
int b = 2;
System.out.println(a / b); // 输出 0.5 吗?

结果肯定不会输出为0.5,因为int是整型他只会取到整数位0,所以他的结果为0.
那我们该如何输出0.5呢?

double a = 1.0;
double b = 2.0;
System.out.println(a / b); // 输出0.5orint a = 1;
int b = 2;
System.out.println(a *1.0/ b);

三.类型转换

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

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

   		long a=100L;int b=5;a=b;//因为long占8字节,int占4字节,a和b都是整形,a的范围小,b的范围大,当将a赋值给b时,编译器会自动将a提升为long类型,然后赋值
 		long c=100L;int d=55;c=d;//int--->long进行赋值,将int类型提升为long类型
 	    float e=10.5f;double f=100.6;f=e;//float--->double 隐式转换 小的给大的不需要强转

强制类型转换(显式)

		long a=100L;int b=5;b=(int)a;//因为long占8字节,int占4字节,编译报错,long的范围比int范围大,所以需要将a(long类型)强行转换为int类型,但是可能会有数据丢失,不安全
		float f = 3.14F;double d = 5.12;d = f; // float-->double,数据范围由小到大,隐式转换f = (float)d; // double-->float, 数据范围由大到小,需要强转,否则编译失败a = d; // 报错,类型不兼容a = (int)d; // int没有double表示的数据范围大,需要强转,小数点之后全部丢弃byte b1 = 100; // 100默认为int,没有超过byte范围,隐式转换byte b2 = (byte)257; // 257默认为int,超过byte范围,需要显示转换,否则报错

这里byte需要重点看一下

四.类型提升

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

 //类型的提升//int类型会提升为long类型int a=100;long b=1000L;//int c=a+b;// 编译出错: a + b==》int + long--> long + long 赋值给int时会丢失数据//解决方法如下//1.int c=(int)(a+b);//2.long d=a+b;
 	    byte f=10;byte e=20;byte l=(byte)(f+e);//因为虽然都是相同的byte类型进行相加,但是无论是short或者是byte,两种相同的数据类型在相加的时候会提升为int类型,所以需要将右侧的数据进行强制转换

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

【类型提升小结:】

  1. 不同类型的数据混合运算, 范围小的会提升成范围大的.
  2. 对于 short, byte 这种比 4 个字节小的类型, 会先提升成 4 个字节的 int , 再运算.

五.字符串类型

public static void main(String[] args) {
String s1 = "hello";
String s2 = " world";
System.out.println(s1);
System.out.println(s2);
System.out.println(s1+s2); // s1+s2表示:将s1和s2进行拼接
}

在有些情况下,我们需要字符串和整型之间的相互转换。

1.int转String

int num = 10;
// 方法1
String str1 = num + ""; 
// 方法2
String str2 = String.valueOf(num);

2.String转int

String str = "100";
int num = Integer.value(str);

可以看到两种类型之间的转换都是用了库方法value。

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

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

相关文章

Swagger的原理及应用详解(七)

本系列文章简介: 在当今快速发展的软件开发领域,特别是随着微服务架构和前后端分离开发模式的普及,API(Application Programming Interface,应用程序编程接口)的设计与管理变得愈发重要。一个清晰、准确且易…

将 WSL(Windows Subsystem for Linux)移动到另一个盘上

方法一:通过 wsl --export 和 wsl --import 命令 导出当前的 WSL 分发版: 首先,您需要导出当前运行的 WSL 分发版。假设您的分发版名称为 Ubuntu-20.04,执行以下命令: wsl --export Ubuntu-20.04 D:\WSL\Ubuntu-20.04.…

护眼落地灯哪个牌子好?盘点五款必入不踩雷的护眼大路灯

护眼落地灯哪个牌子好?在这个快节奏的时代,护眼落地灯已经从一种高端选择转变为日常用眼生活中的必须品。不论是提升普通照明,还是针对孩子学习是改善光线质量环境,一款优秀的护眼落地灯都能成为我们生活中的照明神器。怎么选择一…

Java实现电子围栏的小例子

主要需求是实现一个电子围栏判断的小例子其中包括前端和后端的demo代码 引入对应的依赖库 <!--jts库通常用于几何计算和表示地理空间数据--> <dependency><groupId>org.locationtech.jts</groupId><artifactId>jts-core</artifactId><…

Python中定位一个序列中特点值出现的位置,比如 [0,0,0,1,1,0,0,]中1的位置

已知 Python中计算一个序列中特点值出现的数量&#xff0c;比如 [0,0,0,1,1,0,0,]中1的数量 如何定位位置呢 要找到列表 [0, 0, 0, 1, 1, 0, 0] 中 1 出现的位置&#xff08;索引&#xff09;&#xff0c;可以使用 Python 的列表推导式或者循环。以下是几种方法&#xff1a; …

在 VS Code 中自动化 Xcode 项目编译和调试

在 VS Code 中自动化 Xcode 项目编译和调试 在日常的开发工作中&#xff0c;Xcode 是 macOS、iOS、watchOS 和 tvOS 应用程序开发的主要工具。为了提高工作效率&#xff0c;许多开发者选择在 Visual Studio Code (VS Code) 中编辑代码&#xff0c;并希望能够直接从 VS Code 启…

无线传感器网络(物联网通信技术)期末考试2024年真题

目录 WSN期末复习资料 第一章&#xff1a;概述 第二章MAC协议 第三章路由协议 第四章时间同步技术 第五章定位技术 第六章安全技术 第七章拓扑控制 补充TPSN、HRTS公式推导 2024年期末考试考点 一、简述 二、考试真题回忆 WSN期末复习资料 第一章&#xff1a;概述 …

蓝桥杯开发板STM32G431RBT6高阶HAL库学习FreeRtos——新建工程

一、介绍 ​ 蓝桥杯嵌入式使用的单片机是STM32G431RBT6&#xff0c;内核ARM Cortex - M4&#xff0c;MCUFPU&#xff0c;170MHz/213DMIPS&#xff0c;高达128KB Flash&#xff0c;32KB SRAM&#xff0c;其余的外设就不多介绍了&#xff0c;参照数据芯片数据手册 ​ CT117E-M4…

JavaScript——while类型

目录 任务描述 相关知识 while类型 编程要求 任务描述 质数的定义如下&#xff1a;大于1的自然数&#xff0c;且除了1和本身外没有别的因数。如2、3、5、7。 本关任务&#xff1a;利用循环结构求质数的和。 相关知识 在选择结构中&#xff0c;条件会被测试一次&#xff…

【matlab】信号分解/故障诊断——智能优化算法优化VMD

目录 引言 应用领域 VMD代码实现 智能优化算法优化VMD 引言 VMD&#xff08;变分模态分解&#xff09;是一种新的非线性自适应信号分解方法&#xff0c;它通过变分原理将复杂信号分解为若干个具有不同频率中心和带宽的本征模态函数&#xff08;Intrinsic Mode Functions, …

74HC165芯片验证

目录 0x01 74HC165芯片介绍0x02 编程实现 0x01 74HC165芯片介绍 74HC165的引脚定义如下&#xff0c;长这个样子 ABCDEFGH是它的八个输入引脚&#xff0c;例如你可以将它连接按键&#xff0c;让它来读取8个按键值。也可以将他级联其它的74165&#xff0c;无需增加单片机GPIO引…

代码动态编译

背景 开发环境下新加代码、改代码时要重启后生效&#xff08;耗时间&#xff09;&#xff1b;需求:不用重启且支持springboot 、spring、MyBatis。 实现 下地地址&#xff1a;https://github.com/JetBrains/JetBrainsRuntime/releases 1.根据系统类型下载压缩包 2.解压后配…

esp32-nvs使用

_____ 使用步骤 1, 初始化 nvs 分区 2, 打开 namespaec 3, 读取或写入键值 如果是 string 或数组类型,先读长度 -- 获取单个数据的值 1, 初始化分区 // Initialize NVSesp_err_t err = nvs_flash_init();if (err == ESP_ERR_NVS_NO_FREE_PAGES || err == ESP_ERR_NVS_NEW…

Ubuntu 22.04.4 LTS 安装配置 MySQL Community Server 8.0.37 LTS

1 安装mysql-server sudo apt update sudo apt-get install mysql-server 2 启动mysql服务 sudo systemctl restart mysql.service sudo systemctl enable mysql.service #查看服务 sudo systemctl status mysql.service 3 修改mysql root密码 #默认密码为空 sudo mysql …

SQL 注入联合查询之为什么要 and 1=2

在 SQL 注入联合查询中&#xff0c;将 id 先置为假&#xff08;如 id-1 或其他使查询结果为空的条件&#xff09;&#xff0c;通常是为了让前面的查询语句查询不到结果&#xff0c;从而使联合查询中后面的语句结果能够显示在回显位上

【串口通信】之TTL电平

1. 什么是串口 串口,全称为串行通信端口,是一种计算机硬件接口,用于实现数据的串行传输。与并行通信不同,串口通信一次只传输一个比特,数据通过串行线按顺序传输。串口通信在嵌入式系统、工业控制、计算机与外围设备通信等领域非常常见 2. 什么是串口通信 串口通信是指通过…

设计模式实现思路介绍

设计模式是在软件工程中用于解决特定问题的典型解决方案。它们是在多年的软件开发实践中总结出来的&#xff0c;并且因其重用性、通用性和高效性而被广泛接受。设计模式通常被分为三种主要类型&#xff1a;创建型、结构型和行为型。 创建型设计模式 创建型设计模式专注于如何创…

在线签约如何选择?2024年10款顶级app大比拼

支持电子合同签约的10大app&#xff1a;e签宝、上上签、DocuSign、契约锁、Adobe Sign、法大大、SignNow、安心签、HelloSign、PandaDoc。 无论是企业之间的交易还是个人服务合同&#xff0c;线上电子合同签约提供了一种便捷、高效且安全的方式来处理法律文档。本文将介绍几款优…

RISC-V在当前计算架构中的地位

基于上个视频&#xff0c;我们对RISC-V已经有了一定的了解。这款开源的新生代指令集架构与传统商业指令集架构有很大区别&#xff0c;比如当下最热门的Intel的x86和ARM。这主要体现在以下几个方面&#xff1a; 开放性&#xff0c;任何人与机构都可以具体的应用需求调整和优化R…

【Python实战因果推断】20_线性回归的不合理效果10

目录 Neutral Controls Noise Inducing Control Feature Selection: A Bias-Variance Trade-Off Neutral Controls 现在&#xff0c;您可能已经对回归如何调整混杂变量有了一定的了解。如果您想知道干预 T 对 Y 的影响&#xff0c;同时调整混杂变量 X&#xff0c;您所要做的…