【Java基础学习打卡17】基本数据类型

news2024/11/27 12:34:35

目录

  • 前言
  • 一、数据类型分类
    • 1.基本数据类型
    • 2.引用数据类型
  • 二、基本数据类型
    • 1.整数类型
    • 2.浮点类型
    • 3.字符类型
    • 4.布尔类型
  • 三、基本数据类型转换
    • 1.自动类型转换
    • 2.强制类型转换
  • 总结


前言

本文介绍Java中的基本数据类型,共有8种,是Java编程的基础。编程的实质就是操作数据,而数据有不同的类型,Java是强类型语言,所以数据类型部分要熟练掌握。


一、数据类型分类

在 Java 中,变量是用于存储数据的内存位置,我们声明一个变量要告诉编译器变量的名称和类型,以便为其分配内存空间。还记得变量声明的语法吗?下面代码中的 int 指定了变量的数据类型为整数类型。

// 定义年龄变量
int age;

还有其他数据类型吗?是有的。在 Java 中,数据类型可以分为两大类:基本数据类型(原始数据类型)和引用数据类型。

在这里插入图片描述

1.基本数据类型

基本数据类型(原始数据类型)是 Java 语言的基础数据类型,它们的值存储在变量中。Java 提供了以下基本数据类型:

  • 整数类型:byteshortintlong
  • 浮点类型:floatdouble
  • 字符类型:char
  • 布尔类型:boolean

2.引用数据类型

引用数据类型(也称为对象数据类型)是指除了原始数据类型以外的数据类型。它们引用在内存中创建的对象。Java 提供了一些内置的引用数据类型:

  • 类(Class
  • 接口(Interface
  • 数组(Array
  • 枚举(Enum

二、基本数据类型

在 Java 中,基本数据类型有8种,不同的数据类型各自占用不同的内存空间,并具有不同的取值范围和精度。具体内存占用大小及取值范围如下:

在这里插入图片描述
在 Java 中,数据类型的选择取决于你所要处理的数据以及对内存使用和性能的要求。了解 Java 数据类型对于编写正确的代码和有效地管理内存是非常重要的。我们可以根据具体的数据需求来选择合适的数据类型,并在程序中进行正确的类型转换和操作。

1.整数类型

整数是数学中的一种基本概念,也是计算机科学中常用的数据类型之一。整数是不带小数部分的数字,包括正整数、负整数和零。

在 Java 中,byteshortintlong 属于整数类型,它们的取值范围由小到大,内存占用也是由小到大。其中最常用的是 int 类型,所以如果直接给出一个整数值的话默认就是 int 类型。byte 类型在一些需要节省内存空间的情况下非常有用,比如音频、图像处理以及网络传输等。long 类型在需要表示较大整数值时非常有用。short 类型是在知道数据范围不超过 short 类型的时候使用,可以节省空间。

public static void main(String[] args) {
	// byte类型
	byte b = 100;
	// short类型
	short s = 1000;
	// int类型
	int i = 10000;
	// long类型
	long l = 100000000000L;	
}

在上述代码中,将 100 和 1000 两个在 byteshort 类型的取值范文内的数值赋给一个 byteshort 变量,Java 也会自动将它们当成 byteshort 数据类型来处理。

我们将一个在 int 数据类型范围内的数值赋给 long 类型,这时 Java 依然会将这个整数值当成 int 来处理。如果数值范围超出了 int 类型,会编译报错:整数太大。所以我们要在整数值后面添加 Ll 作为后缀,又因为小写字母 l 和数字 1 容易混淆,所以使用大写 L

2.浮点类型

科学计数法(也称为浮点表示法)是一种用于表示和处理非常大或非常小的数值的方法。它包括两个主要组成部分:尾数和指数。尾数(Mantissa)是一个带有小数点的数字,通常位于范围1到10之间。指数(Exponent)表示小数点的移动位置,并告诉我们要将尾数乘以多少次幂。

在 Java 中,floatdouble 属于浮点类型,float 是单精度浮点数,可表示小数点后6到7位有效数字,double 是双精度浮点数,可表示小数点后15到16位有效数字。对于浮点类型默认是 double 类型,如果希望 Java 将浮点数当成 float 类型处理,需要在浮点数后添加 fF 后缀。

在如下的示例代码中,变量 fd 都赋值为3.1415,但是它们是有区别的,float 类型内存占用4个字节,而 double 类型占用8个字节。

public static void main(String[] args) {
	// float类型
	float f = 3.1415f;
	// double类型
	double d = 3.1415d;	
}

在使用时,也需要注意浮点类型可表示的小数点后面的有效数字。

public static void main(String[] args) {
    // float类型
	float f = 3.14151233442587612312f;
	// double类型
	double d = 3.14151233442587612312d;
	System.out.println(f);
	System.out.println(d);
}

查看执行结果:
在这里插入图片描述

3.字符类型

字符指类字形单位或符号,包括字母、数字、运算符号、标点符号和其他符号,以及一些功能性符号。字符是电子计算机或无线电通信中字母、数字、符号的统称,其是数据结构中最小的数据存取单位,通常由8个二进制位(一个字节)来表示一个字符。

在 Java 中,字符型数据类型用于表示单个字符,且需要使用单引号(')括起来。可以表示 Unicode 字符集中的字符。它可以表示范围从 ‘\u0000’(即字符0)到 ‘\uffff’(即字符65535)的字符。

字符型的值有三种表示形式:

  • 直接使用单个字符:'A''9'
  • 使用转义字符表示特殊字符:'\n' 表示换行符,'\t' 表示制表符等
  • 使用Unicode编码值表示字符型值:'\u0041' 表示字符 'A''\u' 前缀和4个十六进制数字组成)
public static void main(String[] args) {
	// char类型
	char a = 'A';
	char b = '\n';
	char c = '\u0041';

	System.out.println(a);
	System.out.println(b);
	System.out.println(c);
}

上述代码执行,没有编译错误,说明字符型变量声明成功。这里也需要注意字符型数据类型是用来表示单个字符的,不能用来表示字符串(一串字符)。

public static void main(String[] args) {
	// char类型,不能表示一串字符,会编译报错
	char a = 'ABC';
}

编译结果如下:

在这里插入图片描述

同时字符型在计算机底层保存的是对应编号,所以字符型也可直接作为整数值使用。

public static void main(String[] args) {
	// char类型
	char a = 'A';
	System.out.println(a+16);	
}

运行结果如下:

在这里插入图片描述

4.布尔类型

布尔类型在计算机科学中被称为布尔(Boolean)类型,以纪念数学和逻辑学奠基人乔治·布尔(George Boole)。
乔治·布尔是19世纪英国的一位数学家和逻辑学家,他提出了一种被称为布尔代数(Boolean Algebra)的逻辑系统。布尔代数是一种数学分支,基于二元逻辑,用于表示和操作真和假(或者称作1和0)的值。它具有逻辑运算符(如与、或、非)和逻辑规则,被广泛应用于逻辑电路、计算机科学和变种。

布尔类型只有 boolean 数据类型,用于表示真假,只有两个可能的取值:truefalse。布尔类型用于条件判断和逻辑运算,以控制程序的流程和行为。

public static void main(String[] args) {
	// boolean类型,值只能是true或false
	boolean a = true;
	boolean b = false;	
}

注意布尔类型的变量值只能是 truefalse,不能是其他任何值。

三、基本数据类型转换

在 Java 中有8种基本数据类型,其中7种是数值类型,分别是 byteshortintlongfloatdoublechar,它们之间经常需要相互转换。Java 提供了两种类型转换方式:自动类型转换(隐式转换)和强制类型转换。

1.自动类型转换

Java 中的数值类型可以相互转换,当一个表达式中出现不同类型的数据时,Java 会根据一定的规则自动将其中较小范围的数据类型转换为较大范围的数据类型,以保证数据不丢失。自动转换是安全的,不需要显式进行类型转换。

在这里插入图片描述
以下是自动转换的规则(由低到高):

  • byte → short → int -> long → float → double
  • char → int → long → float → double
public static void main(String[] args) {
	// 定义byte类型变量
	byte bNum = 100;
	// byte类型赋值给int类型,自动转换
	int iNum = bNum;  
	System.out.println(iNum); 
	// int类型赋值给double类型,自动转换,输出100.0
	double dNum = iNum;
	System.out.println(dNum);  
		
	// 定义char类型变量
	char cNum = 'A';
	// char类型赋值给long类型,自动转换,输出65
	long lNum = cNum;
	System.out.println(lNum);
		
}

如果不按照自动换行规则,现将 char 类型赋值给 short 类型:

public static void main(String[] args) {
	// 定义char类型变量
	char cNum = 'A';

	// char类型赋值给short类型,编译报错:不兼容的类型: 从char转换到short可能会有损失
	short sNum = cNum;
	System.out.println(sNum);	
		
}

2.强制类型转换

如果按照规则反向赋值可以吗,是可以的,但是必须进行强制类型转换。需要使用前置类型转换操作符:(),具体语法是:(targetType) valuetargetType 是目标类型。强制转换可能会导致数据精度的损失或溢出,因此在进行强制转换时要格外小心,确保转换是安全的。

public static void main(String[] args) {
	
    // 强制转换为int类型
    double num = 3.14;
    int result = (int) num; 
    System.out.println(result);  // 输出:3

    // 强制转换为char类型
    int value = 65;
    char ch = (char) value;  
    System.out.println(ch);     // 输出:A
}

需要注意的是,在进行强制转换时,需要采用合适的转换方式以确保数据的正确转换和操作。


总结

在 Java 中,数据类型可以分基本数据类型和引用数据类型。基本数据类型有8种:byteshortintlongfloatdoublecharboolean。其中7种数据类型为数值类型,它们之间可以相互转换,要遵守转换规则。分为自动类型转换和强制类型转换。

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

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

相关文章

7-Linux下的网络配置

win下的ipconfig linux下的ifconfig ping 测试主机之间的连通性 设置主机名和hosts映射 设置主机名 查看主机名:hostname修改主机名:vim /etc/hostname ,重启后生效 ![[1-Linux目录结构#^f9a9d2]] 设置hosts映射 在win中: …

flask实现一个登录界面

flask实现一个登录界面 基础的Flask项目结构 forms.py:定义登录表单和表单字段的文件。templates/login.html:用于渲染登录表单的 HTML 模板文件。routes.py:定义应用的路由和视图函数的文件。__init__.py:创建并初始化 Flask 应…

Ubuntu 20.04 Ubuntu18.04安装录屏软件Kazam

1.在Ubuntu Software里面输入Kazam,就可以找不到这个软件,直接点击install就可以了 2.使用方法: 选择Screencast(录屏) Fullscreen(全屏)-----Windows(窗口)--------Ar…

Rust vs Go:常用语法对比(十一)

题目来自 Rust Vs Go: Which Language Is Better For Developing High-Performance Applications?[1] 202. Sum of squares Calculate the sum of squares s of data, an array of floating point values. 计算平方和 package mainimport ( "math")func main() { da…

5、joern安装

文章目录 一、安装环境二、安装步骤1、joern地址2、安装中可能出现的问题 一、安装环境 1. java 8   2. gradle 2.0.0(按照官网步骤安装)   3. Graphviz (sudo apt install graphviz-dev)   4. python > 3.5 二、安装步骤 1、joern地址 joern地址 2、安装中可能出…

flutter开发实战-旋转loading指示器

flutter开发实战-旋转loading指示器。 一、交织动画 有些时候我们可能会需要一些复杂的动画,这些动画可能由一个动画序列或重叠的动画组成。一个动画组合在不同阶段包含了多种动画,要实现这种效果,需要使用交织动画(Stagger Anim…

同步网盘使用中的五大突出优势

同步网盘是一种流行的云存储解决方案,它可以将您本地计算机上的文件与云端存储空间同步,以保证文件的备份和访问。那么,同步网盘使用中的突出优势是什么呢?下面就为您详细介绍。 一、数据备份 同步网盘最大的优势之一就是可以自动…

【042】解密C++ STL:深入理解并使用queue容器

解密C STL:深入理解并使用queue容器 引言一、queue容器概述二、queue容器的底层实现原理三、queue容器常用API四、queue的使用案例4.1、使用queue容器实现一个高效的算法4.2、实现生产者-消费者模型 总结 引言 💡 作者简介:一个热爱分享高性能…

基于linux下的高并发服务器开发(第二章)- Linux多进程开发

基于linux下的高并发服务器开发(第二章)- 2.1 进程概述_呵呵哒( ̄▽ ̄)"的博客-CSDN博客01 / 程序和进程02 / 单道、多道程序设计03 / 时间片04/ 并行和并发05/ 进程控制块(PCB)https://blog.csdn.net/w…

聊天机器人如何增加电子商务销售额

聊天机器人和自动化对企业和客户来说都是福音。自动对话和聊天机器人(以下统称为“自动化”)通过自动回答问题或分配会话信息来帮助用户浏览品牌网站或电商商店。即时答案对客户来说非常有用,使用自动化也可以让原本与客户聊天的客服员工专注…

jQueryAPI

文章目录 1.jQuery 选择器1.1 jQuery 基础选择器1.2 jQuery 层级选择器1.3 隐式迭代1.4 jQuery 筛选选择器1.5 jQuery 筛选方法1.6 jQuery 里面的排他思想1.7 链式编程 2.jQuery 样式操作2.1 操作 css 方法2.2 设置类样式方法2.3 类操作与className区别 3.jQuery 效果3.1 显示隐…

Nginx下载和安装教程、Nginx目录结构、Nginx具体应用

1、Nginx概述 Nginx是一款轻量级的开源Web服务器软件,也是一种反向代理服务器。它以其高性能和灵活性而被广泛应用于互联网领域。本文将介绍Nginx的概述、下载和安装以及目录结构。 (1)Nginx介绍 Nginx最初由Igor Sysoev开发,目…

【MangoDB】学习笔记

这里写自定义目录标题 1 简介1.1 和MySQL的概念对比1.2 数据类型 1 简介 1.1 和MySQL的概念对比 1.2 数据类型

005.PADS VX2.4自定义快捷键设置及修改

005.PADS VX2.4自定义快捷键设置及修改 若部分快捷键不符合操作习惯或者部分功能系统未设置快捷键,可自定义快捷键功能,自定义快捷键功能需要注意设置的按键需要与无模命令区分,以免与无模命令冲突;如若需要修改某个快捷功能&…

隐马尔可夫HMM算法

算法简介: 一个系统每时每刻都存在着不同的状态,他们的状态由各种复杂的机制形成,且状态随着变化而不断改变,而这些复杂的机制就是一些高度非线性且复杂的射关系。 举一个例子。例如:一辆汽车在一条从左往右的道路上行…

华为OD机试真题 Java 实现【数据分类】【2023 B卷 100分】,附详细解题思路

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路1、输入2、输出3、解题思路 五、Java算法源码六、效果展示1、输入2、输出 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题&…

去掉mysql数据库表中日期时间字段的6位微秒

问题: 在DRF框架的models.py中有一个字段: create_time models.DateTimeField(auto_now_addTrue) 问题是在向数据库中插入数据时,此字段会带有6位的微秒,对精度要求没那么高(看着很不爽),需…

每日一题——多数元素

多数元素 题目链接 方法一:暴力解法 直接利用两层循环,外层循环用来枚举数组的每一个元素,内层循环用来计算每个元素出现的次数,这样就可以求出多数元素了。 显然,这个方法的时间复杂度为O(N^2),效率太低…

C#is、as关键字及获取当前活动窗体的实例

这篇日志记录一下C#中is关键字及as关键字的用法。 Is:判断检查对象是否与给定类型兼容 As:将对象转换为指定类型(强转),就跟(int)这样的用法是一样的。 获取当前窗体的活动子窗体。 有一个属…

【暑期每日一练】 day6

目录 选择题 (1) 解析 (2) 解析 (3) 解析 (4) 解析 (5) 解析 编程题 题一 描述 示例 提示 解析 代码实现 题二 描述 示例 提示 解…