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.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.mfbz.cn/a/773535.html

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

相关文章

论文速览 | CVPR 2022 | Autofocus for Event Cameras | 首个事件相机自动对焦算法:让事件相机在黑暗中也能清晰成像

论文速览 | CVPR 2022 | Autofocus for Event Cameras | 首个事件相机自动对焦算法:让事件相机在黑暗中也能清晰成像 项目主页: https://eleboss.github.io/eaf_webpage/ 1 引言 在计算机视觉和机器人领域,事件相机因其高动态范围和低延迟的特性而备受关注。然而,事件相机的…

浅析基于量子成像的下一代甚高灵敏度图像传感器技术

高灵敏度探测成像是空间遥感应用中的一个重要技术领域,如全天时对地观测、空间暗弱目标跟踪识别等应用,对于甚高灵敏度图像传感器的需求日益强烈。随着固态图像传感器技术水平的不断提高,尤其背照式及埋沟道等工艺的突破,使得固态…

C#/.NET/.NET Core编程技巧练习集

DotNet Exercises介绍 DotNetGuide专栏C#/.NET/.NET Core编程常用语法、算法、技巧、中间件、类库练习集,配套详细的文章教程讲解,助你快速掌握C#/.NET/.NET Core各种编程常用语法、算法、技巧、中间件、类库等等。 GitHub开源地址:https://…

东芝 TB5128FTG 强大性能的步进电机驱动器

TB5128FTG它以高精度和高效能为设计理念,采用 PWM 斩波方法,并内置时钟解码器。通过先进的 BiCD 工艺制造,这款驱动器提供高达 50V 和 5.0A 的输出额定值,成为广泛应用场景中的强劲解决方案。 主要特性 TB5128FTG 拥有众多确保高…

7.1作业6

uart4.h #ifndef __UART4_H__ #define __UART4_H__ #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_rcc.h" #include "stm32mp1xx_uart.h" //rcc/gpio/uart4初始化 void hal_uart4_init(); //发送一个字符 void hal_put_char(const char s…

长难句打卡6.26

Too often we believe that a new job, bigger house or better car will be the magic silver bullet that will allow us to finally be content, but the reality is these things have very little lasting impact on our happiness levels. magic silver bullet 灵丹妙药 …

QT5.12环境搭建与源码编译

一、概述 QT版本:QT5.12.10 Qt网址:http://download.qt.io/archive/qt/ 编译平台 ubuntu18.04 二、安装交叉编译工具链 1、获取交叉编译工具链 一般如果是编译系统如果有对应的gcc 就是用这个就可以了 比如rk3128 lin…

QT+OpenCV在Android上实现人脸实时检测与目标检测

一、功能介绍 在当今的移动应用领域,随着技术的飞速发展和智能设备的普及,将先进的计算机视觉技术集成到移动平台,特别是Android系统中,已成为提升用户体验、拓展应用功能的关键。其中,目标检测与人脸识别作为计算机视…

《向量数据库指南》——Milvus Cloud查询增强如何提升 RAG Pipeline 效果?

查询增强 1.假设性问题 这一方法首先使用LLM为每一条文档块生成一些假设问题,这些文档块可以回答与之对应的假设问题。在RAG阶段,进行一个query-to-query的搜索,先搜索到相关的假设问题,然后找到对应的文档块,再通过它们生成最后的回答。 这里的query-to-query指的是embed…

用vue2+elementUI封装手机端选择器picker组件,支持单选、多选、远程搜索多选

单选注意点: touchmove.prevent: 在 touchmove 事件上添加 .prevent 修饰符,以阻止默认的滚动行为。 handleTouchStart: 记录触摸开始的 Y 坐标和当前的 translateY 值。 handleTouchMove: 计算触摸移动的距离,并更新 translateY 值。 han…

数字经济时代:AI+引领企业数字化新高度

随着新一轮科技革命和产业变革深入发展,5G、大数据、云计算等技术的广泛应用,数字经济不仅在中国,且在全球范围内,都被视为推动经济增长的关键动力。以人工智能(AI)为例,《全球数字经济白皮书&a…

大学生竞赛管理系统-计算机毕业设计源码37276

大学生竞赛管理系统的设计与实现 摘 要 随着教育信息化的不断发展,大学生竞赛已成为高校教育的重要组成部分。传统的竞赛组织和管理方式存在着诸多问题,如信息不透明、效率低下、管理不便等。为了解决这些问题,提高竞赛组织和管理效率&#x…

第一节-k8s架构图

一个Deployment,可以由多个不同Node下的Pod组成,每个Pod又由多个Container组成。 区分Deployment是用Labels(key:value),区分Pod是用PodName,区分Container是用ContainerName。 一个Node可以包含多个不同Deployment中的pod&…

马拉松报名小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,赛事信息管理,赛事报名管理,活动商城管理,留言板管理,系统管理 微信端账号功能包括:系统首页,赛事信息&…

【动态规划】动态规划一

动态规划一 1.第 N 个泰波那契数2.面试题 08.01. 三步问题3.使用最小花费爬楼梯4.解码方法 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃😃 1.…

Android - 利用 jitpack 免费发布闭源 aar

一、简述 目前(Android/java) library 的主要发布仓库有 MavenCentral 和 jitpack,我之前也对这两种仓库的发布流程做了详细介绍: 发布至 MavenCentral: https://juejin.cn/post/6953598441817636900发布至 jitpack: https://juejin.cn/post/7040733114506674183#heading-…

AI Agent框架(LLM Agent):LLM驱动的智能体如何引领行业变革,应用探索与未来展望

AI Agent框架(LLM Agent):LLM驱动的智能实体如何引领行业变革,应用探索与未来展望 1. AI Agent(LLM Agent)介绍 1.1. 术语 Agent:“代理” 通常是指有意行动的表现。在哲学领域,Ag…

Unreal Engine@Jetson Orin Nano尚不支持

Unreal EngineJetson Orin Nano尚不支持 1. 源由2. Unreal Engine介绍3. 问题4. 编译方法5. 补充6. 其他 1. 源由 最近在看SC-Explorer方面的内容,在模拟方面采用了Unreal Engine。 本打算跑下模拟,因此打算在JetsonOrin的板子上试试看。 2. Unreal En…

油猴Safari浏览器插件:Tampermonkey for Mac 下载

Tampermonkey 是一个强大的浏览器扩展,用于运行用户脚本,这些脚本可以自定义和增强网页的功能。它允许用户在网页上执行各种自动化任务,比如自动填写表单、移除广告、改变页面布局等。适用浏览器: Tampermonkey 适用于多数主流浏览…

python 发布应用程序包

文章目录 发布python包toml配置文件构建发布python包 官方文档参考 将自己的python项目发布成源码包或者wheel二进制包,供其他开发者使用。 方式: 使用py工具; distutils,该工具的使用已过时;setuptools,常用方式;wheel,在setuptools的基础上添加了 bdist_wheel, …