Java基础 变量与数据类型

news2024/11/17 22:38:21

变量

为什么需要变量

一花一世界,如果把一个程序看做一个世界或一个社会的话,那么变量就是程 序世界的花花草草、万事万物。即,变量是程序中不可或缺的组成单位,最基 本的存储单元。

初识变量

变量的概念

  • 内存中的一个存储区域,该区域的数据可以在同一类型范围内不断变化

  • 变量的构成包含三个要素:数据类型、变量名、存储的值

  • Java 中变量声明的格式:数据类型 变量名 = 变量值

 

变量的作用

用于在内存中保存数据。

使用变量注意

  • Java 中每个变量必须先声明,后使用。

  • 使用变量名来访问这块区域的数据。

  • 变量的作用域:其定义所在的一对{ }内。

  • 变量只有在其作用域内才有效。出了作用域,变量不可以再被调用。

  • 同一个作用域内,不能定义重名的变量。

Java 中变量的数据类型

Java 中变量的数据类型分为两大类

  • 基本数据类型:包括 整数类型(byte, short, int, long)、浮点数类型(float, double)、字符类型(char)、布尔类型(boolean)

  • 引用数据类型:包括数组(array)、 类(class)、接口(interface)、枚举(enum)、注解(annotation)、记录(record)。

变量的使用

变量的声明

格式:数据类型 变量名;

注意:变量的数据类型可以是基本数据类型,也可以是引用数据类型。

//例如: //存储一个整数类型的年龄 int age;

//存储一个小数类型的体重 double weight;

//存储一个单字符类型的性别 char gender;

//存储一个布尔类型的婚姻状态 boolean marry;

//存储一个字符串类型的姓名 String name;

//声明多个同类型的变量
int a,b,c; //表示 a,b,c 三个变量都是 int 类型。

 

变量的赋值

给变量赋值,就是把“值”存到该变量代表的内存空间中。同时,给变量赋的值 类型必须与变量声明的类型一致或兼容

变量赋值的语法格式: 变量名 = 值;

举例 1:可以使用合适类型的常量值给已经声明的变量赋值举例

age = 18; 
weight = 109; 
gender = '女';

举例 2:可以使用其他变量或者表达式给变量赋值

int m = 1; int n = m;
int x = 1;
int y = 2;
int z = 2 * x + y;

举例 3:变量可以反复赋值

//先声明,后初始化
 char gender; 
gender = '女';
//给变量重新赋值,修改 gender 变量的值
gender = '男';
System.out.println("gender = " + gender); //gender = 男

举例 4:也可以将变量的声明和赋值一并执行

boolean isBeauty = true; 
String name = "迪丽热巴";

变量内存结构如图

基本数据类型

基本数据类型范围 

整数类型(byte、short、int、long)

Java 各整数类型有固定的表数范围和字段长度,不受具体操作系统的影响,以保证 Java 程序的可移植性。

  • 定义 long 类型的变量,赋值时需要以"l"或"L"作为后缀。

  • Java 程序中变量通常声明为 int 型,除非不足以表示较大的数,才使用 long。

  • Java 的整型常量默认为 int 型。

 

浮点类型(float、double)

与整数类型类似,Java 浮点类型也有固定的表数范围和字段长度,不受具体操作系统的 影响。

浮点型常量有两种表示形式:
十进制数形式。如:5.12 512.0f .512 (必须有小数点)
科学计数法形式。如:5.12e2 512E2 100E-2

float:单精度,尾数可以精确到 7 位有效数字。很多情况下,精度很难满足需求。定义 float 类型的变量,赋值时需要以"f"或"F"作为后缀。

double:双精度,精度是 float 的两倍。通常采用此类型。

Java 的浮点型常量默认为double型。

字符类型(char)

char 型数据用来表示通常意义上“字符”(占 2 字节)

Java 中的所有字符都使用 Unicode 编码,故一个字符可以存储一个字母,一个汉字,或 其他书面语的一个字符。

字符型变量的三种表现形式:

  • 形式 1:使用单引号(' ')括起来的单个字符。 例如:char c1 = 'a'; char c2 = '中'; char c3 = '9';

  • 形式 2:直接使用 Unicode 值来表示字符型常量:‘\uXXXX’。其中, XXXX 代表一个十六进制整数。

    例如:\u0023 表示 '#'。

  • 形式 3:Java 中还允许使用转义字符‘\’来将其后的字符转变为特殊字符 型常量。例如:char c3 = '\n'; // '\n'表示换行符

char 类型是可以进行运算的。因为它都对应有 Unicode 码,可以看做是一个数值。

基本数据类型变量间运算规则

在 Java 程序中,不同的基本数据类型(只有 7 种,不包含 boolean 类型)变量 的值经常需要进行相互转换。

转换的方式有两种:自动类型提升和强制类型转换。

自动类型提升

规则:将取值范围小(或容量小)的类型自动提升为取值范围大(或容量大) 的类型 。

基本数据类型的转换规则如图所示:

当把存储范围小的值(常量值、变量的值、表达式计算的结果值)赋值给 了存储范围大的变量时

int i = 'A';//char 自动升级为 int,其实就是把字符的编码值赋值给 i 变量了 
double d = 10; //int 自动升级为 double
long num = 1234567; //右边的整数常量值如果在 int 范围呢,编译和运行都可以 通过,这里涉及到数据类型转换
//byte bigB = 130;//错误,右边的整数常量值超过 byte 范围
long bigNum = 12345678912L;//右边的整数常量值如果超过 int 范围,必须加 L, 显式表示 long 类型。否则编译不通过

当存储范围小的数据类型与存储范围大的数据类型变量一起混合运算时, 会按照其中最大的类型运算。

int i = 1; byte b = 1; double d = 1.0;
double sum = i + b + d;//混合运算,升级为 double

当 byte,short,char 数据类型的变量进行算术运算时,按照 int 类型处理。

byte b1 = 1;
byte b2 = 2;
byte b3 = b1 + b2;//编译报错,b1 + b2 自动升级为 int
char c1 = '0';
char c2 = 'A';
int i = c1 + c2;//至少需要使用 int 类型来接收 System.out.println(c1 + c2);//113

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

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

相关文章

工作几年,涨薪4K遭拒,后一天我就裸辞走了···

19年7月大学毕业,当时学的计算机科学专业。因为考研之后,秋招结束了。也没什么更多的岗位选择,就想着找个工作先干着,刚好有个亲戚在一家大厂公司上班说要招测试,所以就来做测试了。 虽然都是属于计算机大类&#xff0…

chatgpt赋能Python-python_nor

了解Python NOR 在Python编程语言中,NOR运算是一种逻辑运算符,用于反转两个变量的逻辑值。它是布尔运算中的一种,通常用于检查两个条件是否都不成立。 NOR运算有两个输入和一个输出,当输入为空或两个输入都为False时&#xff0c…

nuxt视频播放(踩坑)

展示效果: nuxt样例视频 1.安装vue-video-player插件 ①执行命令 npm i vue-video-player 或者 npm i vue-video-player5.0.2 后者直接安装对应版本号的插件 ②安装完之后 执行npm i ③安装不对应的版本会报错 ④注意安装版本 不是vue3.0的 请安装(“v…

【nginx】同一接口有时返回500(client_body_temp)

问题描述: 同一个接口,有能正常访问并返回的,有的访问未到服务器直接返回500。 查看nginx日志(error.log),发现open() "/nginx/client_body_temp/0000476534" failed (13: Permission denied)报…

java的URL类

文章目录 1. 简介2. 创建URL3. 从URL获取数据4. 分解URL5. 相等性和比较 1. 简介 java.net.URL类是对统一资源定位符的抽象。它扩展了Object类,是一个final类,不能对其派生子类。它不依赖于继承来配置不同的URL实例,而使用了策略设计模式&am…

VivadoIO约束

VivadoIO约束 FPGA开发离不开IO约束和时序约束,IO约束用于确定输入/输出端口的物理端口和电气特性,与芯片和电路设计有关。而时序约束则用于设定FPGA设计中的时序特性,以确保系统能够在预期时钟频率下正常运行。本文将介绍vivado中常见的设置…

编码踩坑——Redis Pipeline中调用Lua脚本报错JedisMoveDataException的问题 / Lua脚本常遇到的问题

本篇记录使用Redis Pipeline时,调用redis.clients.jedis.PipelineBase#eval时,报错JedisMoveDataException的问题;通过查看源码发现问题的原因,通过jedis在Github的issue了解了解决方案;涉及知识:Redis slo…

FP独立站支付问题你还没解决?out了!

目前FP独立站是很多跨境卖家的变现方式,但是这类外贸电商会遇到一些收款问题,这些问题很容易就让卖家的资金被冻结、账号被风控、关联账号被限制,损失真是不小。那FP卖家的收款问题该怎么解决呢?往下看。 一、FP独立站常见收款方式…

抖音账号运营技巧,让你的短视频更火爆

抖音是目前最火爆的短视频平台之一,拥有着庞大的用户群体和广阔的市场前景。在这个平台上,每天都有大量的用户在发布自己的短视频内容,让自己的账号脱颖而出并吸引更多的粉丝,成为每个用户所追求的目标。下面就来介绍一些抖音账号…

新用户如何选择WMS仓储管理系统解决方案

引言:随着现代化物流技术的不断发展,WMS仓储管理系统已成为企业管理的重要工具。一款合适的WMS系统可以帮助企业提高库存管理效率、减少库存成本、提升物流服务质量。对于初学者来说,如何选择适合自己的WMS系统,往往是一项挑战。本…

如何做好app的测试工作?一文6个步骤到你秒变APP测试高手

先说结论: 想要做好 APP 的测试工作, 离不开相对完整的测试要点! 本篇文章不仅有完整的App测试介绍,还有相对完整的App测试视频分享。 闲话少叙, 咱们直奔主题, APP 应用测试应该主要包含以下几个方面的测试要点: 需要注意的是: APP 应用测试是个相对繁杂的测试类…

电脑远程连接软件推荐

您可以考虑使用多种可靠的计算机远程连接软件选项来远程连接和控制计算机。 以下是一些流行的选项: TeamViewer TeamViewer 是一种广泛使用的远程访问软件,以其易用性和跨平台兼容性而闻名。 它提供远程控制、文件传输和桌面共享等功能。 TeamViewer 通…

解密JavaScript混淆加密技术:揭秘隐藏的代码之谜

让我们通过一个案例来更好地理解JavaScript混淆加密的工作原理。假设我们有以下原始的JavaScript代码: function addNumbers(a, b) {return a b; }上述代码非常简单易懂,但对于一些恶意攻击者来说,他们可能会试图窃取您的代码或者修改其中的…

终身学习(LifeLong Learning)/ 增量学习(Incremental Learning)、在线学习(Online Learning)

1、在线学习 实时获得一个新样本就进行一次模型更新。显然,在线学习时增量学习的特例,而增量学习可视为“批模式”的在线/离线学习。 online主要相对于offline或者说batch,强调的是每次只进入一个或者很少的几个样本,多见于推荐…

缓存被穿透了怎么办?

首先来了解几个概念: 缓存穿透:大量请求根本不存在的key 缓存雪崩:redis中大量key集体过期 缓存击穿:redis中一个热点key过期(大量用户访问该热点key,但是热点key过期) 穿透解决方案 对空值…

windows powershell 下使用【docker cuda choco vim conda ......】

powershell 下可以使用的linux命令 ls可以完全替代llimgcat可以安装,但是显示不了图片,可以用start命令来替换 start .\wallhaven-9m5321.jpgcat touch history可以用 chmod 不能用下面介绍一下alias在powershell下的使用 这里的$profile相当于linux…

搭建Scala环境

搭建Scala开发环境 到官网上下载Scala Scala2.13.10下载网址:https://www.scala-lang.org/download/2.13.10.html 下载文件 安装Scala 根据提示安装,可以安装到默认文件,也能选择其他路径 配置Scala环境变量 变量名变量值SCALA_HOMEC:\Pr…

【软件测试用例篇】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 1. 测试用例的概念 2. 设计测试用例的好处 3…

ESP32-C2模组 透传示例

WIFI-TTL透传模块说明 V 1.0 2022-11-24 1 简介 WiFi-TTL透传模块基于我司DT-ESPC2-12模块研发,引出串口TTL、EN、STATE 等引脚。产品内置我司最新版本的串口透传固件可完成设备TTL 端口到WiFi/云的数据实时透传。本模块可直接取代原有的有线串口,实现…

ZooKeeper快速入门学习+在springboot中的应用+监听机制的业务使用

目录 前言 基础知识 一、什么是ZooKeeper 二、为什么使用ZooKeeper 三、数据结构 四、监听通知机制 五、选举机制 使用 1 下载zookeeper 2 修改 3 排错 在SpringBoot中的使用 安装可视化插件 依赖 配置 安装httpclient方便测试 增删查改 新建控制器 创建节点…