变量数据类型 Day3
1. 变量
1.1 变量的概念
- 变量是计算机内存中的一块存储单元,是存储数据的基本单元
- 变量的组成包括:数据类型、变量名、值,后文会具体描述
- 变量的本质作用就是去记录数据的,比如说记录一个人的身高、体重、年龄,就需要去程序中记录数据,而不同的数据使用不同的数据类型去存储,后文会具体描述
1.2 变量的定义
变量的定义有三种方法
- 直接声明
- 先声明后赋值
- 多个同类型变量声明与赋值
代码举例:
public class VariableDefine {public static void main(String[] args) {int age; //第一种方法:变量的声明age = 21;int number = 12345; //第二种方法:先声明后赋值int a,b,c = 100,d=123; //第三种方法:多个同类型变量声明与赋值System.out.println("age = " + age);System.out.println("number = " + number);System.out.println("c = " + c);System.out.println("d = " + d);}
}
-
以上代码可以清晰看到三种变量的定义方法
-
输出结果:

-
要实现 age = 21这种效果,只需要在输出时,用
字符串 + 变量就可以了,如上输出,其中,+只做文字拼接,不做加法计算 -
注意如果只是单纯输出变量的值,不需要双引号,如
System.out.println(age); //输出变量的值,不需要加双引号 System.out.println("age"); //如果加了双引号,那么输出的是字符age,既不是变量age也不是变量的值。输出结果

-
注意事项:
-
未赋值的变量是不能使用的,当我们注释掉了age,此时age就没有赋值,可以看到没有赋值是直接报错了

-
第三种定义变量的方法,不推荐使用,因为代码可读性不高,不便于阅读
1.3 变量概念解析
有了变量的定义,用以上代码解析一下变量的概念
- 变量是计算机内存中的一块存储单元,是存储数据的基本单元
- 当我们声明一个变量age,
int age;那么在内存当中就会开辟一个int字节的空间,这块空间的名称叫做age,我们可以通过age来访问到这一块空间
- 当我们声明一个变量age,
此时里面还没有数据,我们只需要赋值age = 21;就把数据存到内存当中
- 变量的组成包括:数据类型、变量名、值
- 比如说:
int number = 12345;,其中int是整数类型,变量名为number,值为12345,这三个部分组成了一个number变量
- 比如说:
2.数据类型
Java是一个强类型的语言,它的变量具有严格的数据类型区分
在Java中,任何一个值都有他对应的数据类型
我们可以大概的把数据类型分为两类
- 基本数据类型
- 整数
- 浮点数
- 字符类型
- 布尔类型
- 引用数据类型(可以理解为,除了基本数据类型其他基本上都是引用数据类型)
- 字符串
- 数组
- 对象
下面将会具体介绍数据类型
2.1 整数类型
整数类型里面有四种类型
| 类型 | 字节 | 取值范围(二进制) | 取值范围(十进制) |
|---|---|---|---|
| byte | 1字节 | -2^7 ~2^15-1 | -128~127 |
| short | 2字节 | -2^15 ~ 2^15-1 | -32768~32767 |
| int | 4字节 | -2^31 ~ 2^31-1 | -2147483648~2147483647 |
| long | 8字节 | -2^63 ~ 2^63-1 | -9223372036854775808~9223372036854775807 |
- 其中,int是整数的默认类型
代码举例:
public class DateType {public static void main(String[] args) {byte a = 127;short b = 32767;int c = 2147483647;long d = 9223372036854775807;}
}
可以看到,实际上在编译器上, 当我们定义一个long类型,为什么输入了数字之后,明明是long的合法范围,却显示最大呢?
_id=img-Os2Lh8gN-1725799836837)
-
那是因为整数的默认类型是int类型,所以当你输入这么大个数字的时候,其实默认的是把这个数字存放到int类型的空间中,但是很显而易见,四个字节的空间无法存放这么大的数字。
-
解决方法:在后面加个L,表示是long类型,即
long d = 9223372036854775807L;
-
-
那么我们什么时候会加L呢?
- 当数值超过了int类型的范围,则需要在数值后面加上
L - 当数值并未超过int类型的范围,则可加可不加
- 一般如果不加的话,且没超过int类型的范围,那么就是默认int类型,即使你变量的数据类型是long,但值如果没超过int类型的话,实际上还是以int类型存放,因为假如定义了
long d = 100;,那么就会开辟8个字节空间来存放100,造成了很大的空间浪费
- 一般如果不加的话,且没超过int类型的范围,那么就是默认int类型,即使你变量的数据类型是long,但值如果没超过int类型的话,实际上还是以int类型存放,因为假如定义了
- 当数值超过了int类型的范围,则需要在数值后面加上
2.2 浮点类型
浮点类型主要是单精度浮点数(float)和双精度浮点数(double),两者都是近似值而不是精确值
| 类型 | 字节 | 负数取值范围 | 正数取值范围 |
|---|---|---|---|
| float | 4字节 | -3.4E+38 ~ -1.4E-45 | 1.4E-45 ~ 3.4E+38 |
| double | 8字节 | -1.7E+308 ~ -4.9E-324 | 4.9E-324 ~ 1.7E+308 |
其中,double为浮点数的默认类型,若要为float赋值,需要在值的后面加F
代码举例:
public class DateType {public static void main(String[] args) {float a = 3.4E+38F;double b = 1.7E+308;System.out.println("a = " + a);System.out.println("b = " + b);}
}
2.3 字符类型
| 类型 | 字节 | 取值范围(无符号数) | 字符编码 |
|---|---|---|---|
| char | 2字节 | 0 ~ 65535 | Unicode字符集(万国码) |
- Unicode字符集支持ASCII码
2.3.1 字符类型的赋值方式
-
字符赋值
public class DateType {public static void main(String[] args) {char ch1 = 'a';char ch2 = '1';char ch3 = '耶';char ch4 = '!';System.out.println("ch1 = " + ch1);System.out.println("ch2 = " + ch2);System.out.println("ch3 = " + ch3);System.out.println("ch4 = " + ch4);} } -
整数赋值
-
用ASCII码的值进行直接赋值 0~127
public class DateType {public static void main(String[] args) {char ch1 = 33;char ch2 = 65;char ch3 = 98;char ch4 = 100;System.out.println("ch1 = " + ch1);System.out.println("ch2 = " + ch2);System.out.println("ch3 = " + ch3);System.out.println("ch4 = " + ch4);} }运行结果

-
用Unicode(万国码)的值进行直接赋值 0~65535
-
中文的取值范围是:\u4e00(19968) ~ \u9af5(40969) 十六进制(十进制)
public class DateType {public static void main(String[] args) {char ch1 = 19968;char ch2 = 20249;char ch3 = 20255;char ch4 = 40869;System.out.println("ch1 = " + ch1);System.out.println("ch2 = " + ch2);System.out.println("ch3 = " + ch3);System.out.println("ch4 = " + ch4);} }运行结果

-
-
-
进制赋值
-
用单引号包括十六进制的Unicode字符值,要以\u开头
package com.csdn.code.day3;public class DateType {public static void main(String[] args) {char ch1 = '\u4e00';char ch2 = '\u4fa2';char ch3 = '\u5af3';char ch4 = '\u9af5';System.out.println("ch1 = " + ch1);System.out.println("ch2 = " + ch2);System.out.println("ch3 = " + ch3);System.out.println("ch4 = " + ch4);} }-
中文的取值范围是:\u4e00 ~ \u9af5 十六进制
运行结果

-
-
2.3.2 转义字符
我们刚刚看到的’\u’就是一个转义字符,表示一个十六进制数对应的的字符
下面我们来具体了解一下什么是转义字符
转义字符概念:用于保存一些特殊符号或者是一些特殊的效果
以下是常用的转义字符
| 转义字符 | 描述 |
|---|---|
| \n | 换行符 |
| \t | 缩进(制表位) |
| \ \ | 反斜线 |
| \‘ | 单引号 |
| ‘’ | 双引号 |
代码举例:
public class DateType {public static void main(String[] args) {System.out.println("i\nlove\nyou\n");System.out.println("i\tlove\tyou\t");System.out.println("\\i love you\\");System.out.println("\'i love you\'");System.out.println("\"i love you\"");}
}
运行结果
2.4 布尔类型
| 类型 | 字节 | 取值范围 | 描述 |
|---|---|---|---|
| boolean | 1字节 | true/false | 仅可描述”真“或者”假“ |
- 布尔类型不能参加算术运算
- true表示真
- false表示假
代码举例:
package com.csdn.code.day3;public class DateType {public static void main(String[] args) {boolean a = true; //直接对布尔类型的变量赋值boolean b = false; //直接赋true or falseint c = 20;int d = 40;boolean result1 = c > d; //赋值 最终结果为true or false的表达式boolean result2 = c < d;System.out.println("a = " + a);System.out.println("b = " + b);System.out.println("result1 = " + result1);System.out.println("result2 = " + result2);}
}
运行结果如下:
2.5 String类型
| 类型 | 取值范围 | 字符编码 |
|---|---|---|
| String | 任何""之间的值 | Unicode字符编码 |
String类型是JDK提供的一个类,属于引用数据类型,任何""包括的内容都是字符串
代码举例
package com.csdn.code.day3;public class DateType {public static void main(String[] args) {String str1 = "I am ?0 o O";String str2 = "I am 21 years old\n";System.out.println(str1);System.out.print(str2); // \n和println()方法都有换行的效果,选其一即可}
}
运行结果
相关文章:
变量数据类型 Day3
1. 变量 1.1 变量的概念 变量是计算机内存中的一块存储单元,是存储数据的基本单元变量的组成包括:数据类型、变量名、值,后文会具体描述变量的本质作用就是去记录数据的,比如说记录一个人的身高、体重、年龄,就需要去…...
SpringBoot2:请求处理原理分析-RESTFUL风格接口
一、RESTFUL简介 Rest风格支持(使用HTTP请求方式,动词来表示对资源的操作) 以前:/getUser 获取用户 /deleteUser 删除用户 /editUser 修改用户 /saveUser 保存用户 现在: /user GET-获取用户 DELETE-删除用户 PUT-修改…...
[Linux][配置]Linux修改history存储的最大记录数
Linux修改History最大记录为20000行 sed -i s/^HISTSIZE1000/HISTSIZE20000/ /etc/profile source /etc/profile 在 Linux 系统中,HISTSIZE 环境变量用于定义历史记录的大小,即在终端中可以回溯的命令数量。默认情况下,这个值通常是 1000&…...
代码随想录 刷题记录-28 图论 (5)最短路径
一、dijkstra(朴素版)精讲 47. 参加科学大会 思路 本题就是求最短路,最短路是图论中的经典问题即:给出一个有向图,一个起点,一个终点,问起点到终点的最短路径。 接下来讲解最短路算法中的 d…...
大数据-124 - Flink State 01篇 状态原理和原理剖析:状态类型 执行分析
点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…...
C++复习day04
一、函数重载 1.什么是函数重载? 自然语言中,一个词可以有多重含义,人们可以通过上下文来判断该词真实的含义,即该词被重 载了。 比如:以前有一个笑话,国有两个体育项目大家根本不用看,也不用…...
[苍穹外卖]-04菜品管理接口开发
效果预览 新增菜品 需求分析 查看产品原型分析需求, 包括用到哪些接口, 业务的限制规则 业务规则 菜品名称必须是唯一的菜品必须属于某个分类下, 不能单独存在新增菜品时可以根据情况选择菜品的口味每个菜品必须对应一张图片 接口设计 根据类型查询分类接口 文件上传接口 …...
gitlab 启动/关闭/启用开机启动/禁用开机启动
文章目录 启动 gitlab关闭 gitlab查看 gitlab 运行状态启用 gitlab 开机启动禁用 gitlab 开机启动GitlabGit启动 gitlab hxstrive@localhost:~$ sudo gitlab-ctl start ok: run: alertmanager: (pid 65953) 0s ok: run: gitaly: (pid 65965) 0s ok: run: gitlab-exporter: (pi…...
中间件解析漏洞(附环境搭建教程)
⼀:IIS解析漏洞 环境资源: https://download.csdn.net/download/Nai_zui_jiang/89717504 环境安装 windows2003iis6 1.创建新的虚拟机 2.在下⼀步中选择我们的iso⽂件镜像 vm已主动识别到windows2003 3.产品密钥⽹上搜⼀个 密码自己设置一个简单的&…...
matlab实现kaiser窗+时域采样序列(不管原信号拉伸成什么样子)是一样的,变到频谱后再采样就是一样的频域序列。
下图窗2的频谱在周期化的时候应该是2(w-k*pi/T)我直接对2w减得写错了 可见这两个kaiser窗频谱不一样,采样间隔为2T的窗,频谱压缩2倍,且以原采样频率的一半周期化。 但是这两个不同的kaiser窗在频域采样点的值使完全一…...
git为不同的项目设置不同的提交作者
方法1:找到项目的.git文件夹打开 打开config在下面添加自己作者信息 [user]name 作者名email 邮箱方法2:直接在.git文件夹设置作者名(不使用–global参数) git config user.name "xxxxx"如果想要修改之前提交的…...
防爆定位信标与防爆定位基站有什么区别?
新锐科技 https://baijiahao.baidu.com/s?id1804974957959442238&wfrspider&forpc http://www.xinruikc.cn/biaoqian/52.html http://www.xinruikc.cn/xinbiao/...
QT 编译报错:C3861: ‘tr‘ identifier not found
问题: QT 编译报错:C3861: ‘tr’ identifier not found 原因 使用tr的地方所在的类没有继承自 QObject 类 或者在不在某一类中, 解决方案 就直接用类名引用 :QObject::tr( )...
谈谈ES搜索引擎
一 ES的定义 ES 它的全称是 Elasticsearch,是一个建立在全文搜索引擎库Lucene基础上的一个开源搜索和分析引擎。ES 它本身具备分布式存储,检索速度快的特性,所以我们经常用它来实现全文检索功能。目前在 Elastic 官网对 ES 的定义,…...
【MySQL】MySQL基础
目录 什么是数据库主流数据库基本使用MySQL的安装连接服务器服务器、数据库、表关系使用案例数据逻辑存储 MySQL的架构SQL分类什么是存储引擎 什么是数据库 mysql它是数据库服务的客户端mysqld它是数据库服务的服务器端mysql本质:基于C(mysql)…...
Spring中Bean的相关注解
目录 1.Spring IoC&DI 2.关于Bean存储的相关注解(类注解与方法注解) Bean的获取方式 类注解和方法注解的重命名 2.1 类注解 2.1.1 Controller 2.1.2 Service 2.1.3 Repository 2.1.4 Component 2.1.5 Configuration 2.2 方法注解-Bean 2.2.1 定义多个对象 2.2…...
Golang | Leetcode Golang题解之第385题迷你语法分析器
题目: 题解: func deserialize(s string) *NestedInteger {if s[0] ! [ {num, _ : strconv.Atoi(s)ni : &NestedInteger{}ni.SetInteger(num)return ni}stack, num, negative : []*NestedInteger{}, 0, falsefor i, ch : range s {if ch - {negati…...
【Java 优选算法】双指针(上)
欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 移动零 分析 代码 复写零 分析 代码 快乐数 分析 代码 盛最多水的容器 分析 代码 移动零 题目链接 分析 双指针算法,利用两个指针cur和dest将数组划分为三个区间…...
【自动驾驶】控制算法(八)横向控制Ⅰ | 算法与流程
写在前面: 🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝 个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。 🔍 本文系 清流君 原创之作&…...
Android SSE 单向接收数据
Server-Sent Events(SSE)是一种在客户端和服务器之间实现单向实时通信的技术。它允许服务器向客户端推送数据,但客户端无法使用 SSE 向服务器发送数据。这使得其适用于需要持续接收服务器数据的应用场景(如实时通知、股票行情、社…...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
从物理机到云原生:全面解析计算虚拟化技术的演进与应用
前言:我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM(Java Virtual Machine)让"一次编写,到处运行"成为可能。这个软件层面的虚拟化让我着迷,但直到后来接触VMware和Doc…...
SFTrack:面向警务无人机的自适应多目标跟踪算法——突破小尺度高速运动目标的追踪瓶颈
【导读】 本文针对无人机(UAV)视频中目标尺寸小、运动快导致的多目标跟踪难题,提出一种更简单高效的方法。核心创新在于从低置信度检测启动跟踪(贴合无人机场景特性),并改进传统外观匹配算法以关联此类检测…...
【前端实战】如何让用户回到上次阅读的位置?
目录 【前端实战】如何让用户回到上次阅读的位置? 一、总体思路 1、核心目标 2、涉及到的技术 二、实现方案详解 1、基础方法:监听滚动,记录 scrollTop(不推荐) 2、Intersection Observer 插入探针元素 3、基…...
