2.数据类型与变量(java篇)

目录

数据类型与变量

数据类型

变量

整型变量

长整型变量

短整型变量

字节型变量

浮点型变量

双精度浮点型

单精度浮点型

字符型变量

布尔型变量(boolean)

类型转换

自动类型转换(隐式)

强制类型转换(显式)

类型提升

字符串类型


数据类型与变量

字面常量

在上节课HelloWorld程序中, System.Out.println("Hello World"); 语句,不论程序何时运行,输出的都是Hello World,其实"Hello World"就是字面常量。

常量即程序运行期间,固定不变的量称为常量

字面常量的分类:

1. 字符串常量:由""括起来的,比如“12345”、“hello”、“你好”。

2. 整形常量:程序中直接写的数字(注意没有小数点),比如:100、1000

3. 浮点数常量:程序中直接写的小数,比如:3.14、0.49

4. 字符常量:由 单引号 括起来的当个字符,比如:‘A’、‘1’

5. 布尔常量:只有两种true和false

6. 空常量:null(后面讲)

注意:字符串、整形、浮点型、字符型以及布尔型,在Java中都称为数据类型。

数据类型

在Java中数据类型主要分为两类:基本数据类型引用数据类型

基本数据类型有四类八种:

1. 四类:整型、浮点型、字符型以及布尔型

2. 八种:

注意:

不论是在16位系统还是32位系统,int都占用4个字节,long都占8个字节 (这里是与C语言不同的地方---在C语言中  int可能占4个字节 也可能占8个字节)

整形和浮点型都是带有符号的

整型默认为int型,浮点型默认为double

字符串属于引用类型,该类型之后再介绍

这里的字节型--byte:也就是我们所了解的8个二进制位(bit)为一个字节(Byte)

变量

语法格式

定义变量的语法格式为:

数据类型 变量名=初始值;

比如:

整型变量

注意事项:

1. int不论在何种系统下都是4个字节

2. 推荐使用方式一定义,如果没有合适的初始值,可以设置为0

3. 在给变量设置初始值时,值不能超过int的表示范围,否则会导致溢出

4. 变量在使用之前必须要赋初值,否则编译报错

5. int的包装类型为 Integer (Integer是Java中的一个特定概念,用于封装int类型的数据,并提供了一系列有用的方法和功能)

长整型变量

注意事项:

1. 长整型变量的初始值后加L或者l,推荐加L

2. 长整型不论在那个系统下都占8个字节

3. 长整型的表示范围为:-2^63~2^63-1

4. long的包装类型为Long

短整型变量

注意事项:

1. short在任何系统下都占2个字节

2. short的表示范围为:-32768 ~ 32767

3. 使用时注意不要超过范围(一般使用比较少)

4. short的包装类型为Short

字节型变量

注意事项:

1. byte在任何系统下都占1个字节

2. byte的范围是:-128 ~ 127

3. 字节的包装类型为Byte

浮点型变量

双精度浮点型

注意下面代码的输出:

注意事项:

1. double在任何系统下都占8个字节

2. 浮点数与整数在内存中的存储方式不同,不能单纯使用 的形式来计算

3. double的包装类型为Double

4. double 类型的内存布局遵守 IEEE 754 标准(C语言一样), 尝试使用有限的内存空间表示可能无限的小数, 势必会存在一定的精度误差,因此浮点数是个近似值,并不是精确值。

单精度浮点型

float 类型在 Java 中占四个字节, 同样遵守 IEEE 754 标准. 由于表示的数据精度范围较小, 一般在工程上用到浮点数都优先考虑 double, 不太推荐使用 flfloat. flfloat的包装类型为Float

字符型变量

注意事项:

1. Java 中使用 单引号 + 单个字母 的形式表示字符字面值.

2. 计算机中的字符本质上是一个整数.  C 语言中使用 ASCII 表示字符,  Java 中使用 Unicode 表示字符. 因此一个字符占用两个字节, 表示的字符种类更多, 包括中文

执行 javac 的时候可能出现以下错误:

此时我们在执行 javac 时加上 -encoding UTF-8 选项即可

javac -encoding UTF-8 Test.java

3. char的包装类型为Character

执行javac命令时  中文字符出现报错/乱码的一般原因:

Java源文件通常使用UTF-8编码,这是Java编程中广泛采用的编码方式。Notepad++本身也支持多种编码格式,包括UTF-8。因此,在Notepad++中编写Java代码时,建议将文件的编码设置为UTF-8,以确保代码的正确性。

当使用javac命令在cmd命令行中编译Java源文件时,如果源文件包含中文字符且编码与cmd命令行默认编码不一致,可能会导致乱码问题。为了避免这种情况,你可以在javac命令中使用-encoding参数来指定源文件的编码方式。例如,如果源文件使用UTF-8编码,你可以这样使用javac命令:javac -encoding UTF-8 YourFile.java。

综上所述,为了避免编码问题,你应该在编写和编译Java代码时明确指定并统一使用UTF-8编码。

r

布尔型变量(boolean)

注意事项:

1. boolean 类型的变量只有两种取值, true 表示真, false 表示假.

2. Java  boolean 类型和 int 不能相互转换, 不存在 1 表示 true, 0 表示 false 这样的用法(C语言是这样的)

这里我们要注意  java中的布尔型与C语言有所不同

3. Java虚拟机规范中,并没有明确规定boolean占几个字节,也没有专门用来处理boolean的字节码指令,在Oracle公司的虚拟机实现中,boolean1个字节。

4. boolean的包装类型为Boolean

类型转换

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

自动类型转换(隐式)

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

例如:

强制类型转换(显式)

强制类型转换:当进行操作时,代码需要经过一定的格式处理,不能自动完成。特点:数据范围大的到数据范围小的。

注意事项:

1. 不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型

2. 如果需要把范围大的类型赋值给范围小的, 需要强制类型转换, 但是可能精度丢失

3. 将一个字面值常量进行赋值的时候, Java 会自动针对数字范围进行检查

4. 强制类型转换不一定能成功,不相干的类型不能互相转换

类型提升

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

1. intlong之间:int会被提升为long

2. bytebyte的运算

结论: 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 , 再运算.

字符串类型

Java中使用String类定义字符串类型

例如:

1.int 转成 String

  1. 在这里,整数 a 被隐式地转换为字符串,然后与空字符串 "" 连接,结果是一个新的字符串 "10"
  2. String.valueOf()是一个静态方法,它接受一个对象作为参数,并返回该对象的字符串表示形式

2.String 转成 int

Integer.parseInt(str) 方法用于将字符串 str 解析(或转换)为 int 类型的整数

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

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

相关文章

Windows:管理用户账户,密码策略和安全配置

在Windows操作系统中,管理用户账户和密码策略是确保系统安全的关键步骤。本文将探讨如何通过PowerShell和其他Windows工具管理用户账户,包括查看和设置密码策略、检查用户状态,以及导出和导入安全策略。这些管理任务对于系统管理员尤其重要&a…

IT行业现状与未来趋势-技术创新日新月异

目录 一、引言 二、IT行业现状 技术创新日新月异 市场需求持续增长 人才竞争激烈 网络安全问题凸显 三、IT行业未来趋势 人工智能将更加普及 区块链技术将改变商业模式 网络安全将成为重要战略 数字化转型将加速推进 四、结语 一、引言 随着科技的飞速发展&#x…

大模型微调之 在亚马逊AWS上实战LlaMA案例(十)

大模型微调之 在亚马逊AWS上实战LlaMA案例(十) 训练数据集格式 SageMaker JumpStart 目前支持域适应格式和指令调整格式的数据集。在本节中,我们指定两种格式的示例数据集。有关更多详细信息,请参阅附录中的数据集格式化部分。 …

密探渗透工具v1.08测试版

目录 前言 免责声明 工具开发者: 工具项目地址: 1.作者做工具的缘起 2.功能介绍 3.工具的更新日志 4.安装与使用 4.1 工具下载 4.2 在jdk8环境下运行: 4.3 运行界面 4.4 资产测绘功能(fofa,鹰图和Quake) 4.5 指纹识别功能 ​编辑 4.6 敏感信息与接口扫描 4.7 文…

MinIO学习笔记

MINIO干什么用的: AI数据基础设施的对象存储 为人工智能系统提供数据支持,数据存储;对象存储(Object Storage)是一种数据存储架构,它以对象为单位来处理、存储和检索数据,每个对象都包含了数据本…

sipeed 的 MaixCam显示图片

WiFi联网后,把固件升级到最新 一根tpyc-c连接线为MaixCam供电,点击液晶屏settings 在WiFi中设置确保联网,在更新MaixPy中升级固件 可以选择国内源加速,将固件升级到最新版 MaixVision的操作 1,在MaixVision左下角…

谷歌Gboard应用的语言模型创新:提升打字体验的隐私保护技术

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

CNN/TCN/LSTM/BiGRU-Attention到底哪个模型效果最好?注意力机制全家桶来啦!

​ 声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~ 目录 数据介绍 效果展示 原理简介 代…

Spring框架深度解析:打造你的Java应用梦工厂

想要在Java企业级应用开发中大展身手?Spring框架的核心容器是你不可或缺的伙伴! 文章目录 一. 引言1.1 介绍Spring框架的重要性1.2 阐述核心容器在Spring框架中的作用1.3 故事开端 二. 背景介绍2.1 描述Spring框架的发展历程2.2 概述Spring框架的主要特点…

【树】简要理解树的概念

P. S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。 P. S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。 目录 1、树的概念2、树的相关概念3、结语 1、树的概念 树是一种非线性的数据结构,它…

解决windows中的WSL Ubuntu子系统忘记root密码和用户密码问题

1、以管理员身份运行PowerShell 2、在powershell中执行wsl.exe --user root wsl.exe --user root如果出现了上面的报错,则需要运行步骤3、4,然后在执行步骤5改密码,如果没有出错,请直接跳到第5步改密码操作!&#xff…

Android bootchart 分析启动性能工具使用

bootchart简介 bootchart 可为整个系统提供所有进程的 CPU 和 I/O 负载细分。该工具不需要重建系统映像,可以用作进入 systrace 之前的快速健全性检查。 1. 板端配置: 在Android 板端启用 bootchart,请运行以下命令: 2. Bootch…

Git笔记-常用指令

Git笔记-常用指令 一、概述二、仓库管理二、缓存区操作1. 添加文件到缓存区2. 取消缓存文件3. 忽略列表 三、日志状态信息四、分支操作五、六、 一、概述 这里记录一些git常用的指令。 二、仓库管理 # 本地仓库初始化 git init# 克隆仓库 git clone git_url # git clone ht…

各种数据获取stream流的方式

1.单列集合&#xff08;直接调用&#xff09; ArrayList<Integer> list new ArrayList<>();list.stream(); 2.双列集合 HashMap<String, Integer> map new HashMap<>();map.put("aaa",111);map.put("bbb",222);map.put("c…

鸿蒙开发学习:初探【ArkUI-X】

ArkTS 是华为自研的开发语言。它在TypeScript&#xff08;简称TS&#xff09;的基础上&#xff0c;匹配 ArkUI 框架&#xff0c;扩展了声明式 UI 、状态管理等相应的能力&#xff0c;让开发者以更简洁、更自然的方式开发跨端应用。 ArkUI-X 进一步将 ArkUI 扩展到了多个 OS 平台…

css--控制滚动条的显示位置

各种学习后的知识点整理归纳&#xff0c;非原创&#xff01; ① direction属性 滚动条在左侧显示② transform:scaleY() 滚动条在上侧显示 正常的滚动条会在内容超出规定的范围后在区域右侧和下侧显示在有些不正常的需求下会希望滚动条在上侧和左侧显示自己没有想到好的解决方案…

uniapp 使用renderjs的一些详细介绍

一、简介 官方链接&#xff1a;uniapp官网中的renderjs方法的详细介绍 二、renderjs 定义 renderjs是一个运行在视图层的js。它比WXS更加强大。它只支持app-vue和web。 作用&#xff1a; 大幅降低逻辑层和视图层的通讯损耗&#xff0c;提供高性能视图交互能力。在视图层操作d…

cmake工程导入新电脑环境报错

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 在一台电脑上运行得很好的cmake工程&#xff0c;导入新电脑环境报错 问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; 例如&#xff1a;数据传输过程中数据不时出现丢失的情况&…

SSH 免密登录,设置好仍然需要密码登录解决方法

说明&#xff1a; ssh秘钥登录设置好了&#xff0c;但是登录的时候依然需要提供密码 查看系统安全日志&#xff0c;定位问题 sudo cat /var/log/auth.log或者 sudo cat /var/log/secure找到下面的信息 Authentication refused: bad ownership or modes...&#xff08;网上的…

软件需求工程习题

1.&#xff08;面谈&#xff09;是需求获取活动中发生的需求工程师和用户间面对面的会见。 2.使用原型法进行需求获取&#xff0c;&#xff08;演化式&#xff09;原型必须具有健壮性&#xff0c;代码质量要从一开始就能达到最终系统的要求 3.利用面谈进行需求获取时&#xf…