Java的数据类型(复习版)

news2024/11/19 10:38:28

思维导图

在这里插入图片描述

一.字面常量

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

		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.5

or

int 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.coloradmin.cn/o/1896464.html

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

相关文章

喜报 | 怿星携高性价比国产方案亮相IAEIS峰会并荣获“优秀创新产品奖”

近日,由深圳市汽车电子行业协会主办的主题为:“布局全球产业链,促进智能网联汽车产业高质量发展”IAEIS 2024第十三届国际汽车电子产业峰会”暨“2023年度汽车电子科学技术奖”颁奖典礼在深圳隆重举行。 怿星科技携高性价比的「车载网络通信 …

知识库系统平台管理与优化

在之前做的关于FAQ知识库问答系统中,总结了相关踩坑内容,梳理如下,供大家参考。系统平台的管理与优化对于企业来说至关重要,它不仅关乎数据处理的效率,还直接影响到用户体验和业务成果。本文将从系统平台管理方式、系统…

【pytorch16】MLP反向传播

链式法则回顾 多输出感知机的推导公式回顾 只与w相关的输出节点和输入节点有关 多层多输入感知机 扩展为多层感知机的话,意味着还有一些层(理解为隐藏层σ函数),暂且设置为 x j x_{j} xj​层 对于 x j x_{j} xj​层如果把前面的…

【CT】LeetCode手撕—4. 寻找两个正序数组的中位数

目录 题目1- 思路2- 实现⭐4. 寻找两个正序数组的中位数——题解思路 3- ACM 实现 题目 原题连接:4. 寻找两个正序数组的中位数 1- 思路 思路 将寻找中位数 ——> 寻找两个合并数组的第 K 大 (K代表中位数) 实现 ① 遍历两个数组 &am…

天润融通分析AI技术助力客户服务,实现满意度三倍增长

如今,客户体验越来越成为影响客户决策的核心要素。 对于企业来讲,客户在不同触点的每一次互动体验,都成为塑造品牌声誉的“Aha时刻”。但同时,随着社会的发展的加速,客户的需求也在日新月异,给企业带来挑战…

【Linux】静态库的制作和使用详解

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

超融合服务器挂载硬盘--linux系统

项目中需要增加服务器的硬盘容量,通过超融合挂载了硬盘后,还需要添加到指定的路径下,这里记录一下操作步骤。 一:通过管理界面挂载硬盘 这一步都是界面操作,登录超融合控制云台后,找到对应的服务器&#…

python自动化办公之BeautifulSoup爬取并解析html文本

用到的库:BeautifulSoup 实现效果:爬取网站内容,拿到html文本并解析html文本 代码: 先爬取 # 先导入requests包 import requests urlhttps://www.baidu.com responserequests.get(url) # 做1个断言,如果执行成功&a…

视频号矩阵源码:构建短视频生态的基石

在数字化时代,视频内容已成为连接品牌与消费者的重要桥梁。视频号矩阵源码,作为短视频营销自动化的创新引擎,正在帮助内容创作者和营销团队以前所未有的效率和智能,管理和扩展他们的视频内容。本文将深入探讨视频号矩阵源码的核心…

解答 | http和https的区别,谁更好用

TTP(超文本传输协议)和HTTPS(安全超文本传输协议)的主要区别在于安全性和数据传输的方式。 一、区别 1、协议安全性: HTTP:使用明文形式传输数据,不提供数据加密功能,数据在传输过…

LeetCode-刷题记录-滑动窗口合集(本篇blog会持续更新哦~)

一、滑动窗口概述 滑动窗口(Sliding Window)是一种用于解决数组(或字符串)中子数组(或子串)问题的有效算法。 Sliding Window核心思想: 滑动窗口技术的基本思想是维护一个窗口(一般…

汇川H5U小型PLC不用写程序测试EC总线电机

目录 新建工程添加EtherCAT组态添加运动控制轴仿真测试 新建工程 新建一个H5U工程,不使用临时工程 系列选择H5U即可 添加EtherCAT组态 这里在EC总线中添加了一个汇川660的伺服 驱动参数使用默认 添加运动控制轴 新建一个轴Axis_0 将新建的轴和EC组态的660驱动…

springboot中国女篮资讯平台-计算机毕业设计源码12641

目录 1 绪论 1.1 研究背景 1.2 研究现状 1.3论文结构与章节安排 2平台分析 2.1 系统可行性分析 2.1.1硬件可行性分析 2.1.2软件可行性分析 2.1.3经济可行性 2.1.4 操作可行性 2.2系统功能分析 2.3 系统用例分析 2.4本章小结 3平台总体设计 3.1 系统架构设计 3.2…

录屏怎么有声音?录屏声音,2个小技巧

在数字化浪潮中,录屏早已不再是简单的屏幕录制,而是成为了内容创作、教学分享、游戏直播等领域的重要工具。然而,很多人在录屏时常常面临一个问题:录制好的视频没有声音。面对这个难题,录屏怎么有声音?怎样…

Oracle 解决4031错误

一、问题描述 什么是4031错误和4031错误产生的原因: 简单一个句话概括: 由于服务器一直在执行大量的硬解析,导致Oracle 的shared pool Free空间碎片过多,大的chunk不足, 当又一条复杂的sql语句要硬解析时, 缺少1个足够大的Free chunk, 通常就会报4031错误. 二、解决方法 临…

智能合约与企业数字化转型:案例分析与未来展望

随着区块链技术的快速发展,智能合约作为其重要应用之一,正逐渐成为推动企业数字化转型的关键工具。智能合约不仅可以自动执行和验证合同,还能够增强数据安全性、优化业务流程,并提升企业间的信任和透明度。本文将深入探讨智能合约…

PostgreSQL数据库通过索引优化查询

文章目录 1.使用EXPLAIN分析查询计划1.1 Seq Scan:全表顺序扫描, 表示数据库将按顺序扫描整个表,适用于小表或无索引的情况。1.2 Index Scan: 基于索引扫描,但不只是返回索引列的值。1.3 IndexOnly Scan:基…

MySQL数据库-Windows部署MySQL环境

Windows部署MySQL环境​​​​​​ 一、下载mysql数据库 进入MySQL官方网站(MySQL :: MySQL DownloadsMySQL),随后按如下红框方式操作: ​ ​ ​ ​ 这里选择的是离线安装,第一个是在线安装 下载好安装包后开始…

昇思25天学习打卡营第十二天|Diffusion扩散模型

背景 提供免费算力支持,有交流群有值班教师答疑的华为昇思训练营进入第十二天了。 今天是第十二天,从第十天开始,进入了应用实战阶段,前九天都是基础入门阶段,具体的学习内容可以看链接 基础学习部分 昇思25天学习打卡…

使用 OpenCV 和 Python 进行车道检测和物体检测(YOLO)

本项目旨在开发一个集车道检测与物体检测功能于一体的智能视觉分析系统,利用先进的计算机视觉技术和深度学习模型,实现实时的道路场景理解和目标识别。系统主要依托OpenCV这一强大的计算机视觉库,以及Python作为编程语言,融合了车…