当前位置: 首页 > news >正文

变量数据类型 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 = 21;就把数据存到内存当中
在这里插入图片描述

  • 变量的组成包括:数据类型、变量名、值
    • 比如说:int number = 12345;,其中int是整数类型,变量名为number,值为12345,这三个部分组成了一个number变量

2.数据类型

Java是一个强类型的语言,它的变量具有严格的数据类型区分

在Java中,任何一个值都有他对应的数据类型

我们可以大概的把数据类型分为两类

  • 基本数据类型
    • 整数
    • 浮点数
    • 字符类型
    • 布尔类型
  • 引用数据类型(可以理解为,除了基本数据类型其他基本上都是引用数据类型)
    • 字符串
    • 数组
    • 对象

下面将会具体介绍数据类型

2.1 整数类型

整数类型里面有四种类型

类型字节取值范围(二进制)取值范围(十进制)
byte1字节-2^7 ~2^15-1-128~127
short2字节-2^15 ~ 2^15-1-32768~32767
int4字节-2^31 ~ 2^31-1-2147483648~2147483647
long8字节-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,造成了很大的空间浪费

2.2 浮点类型

浮点类型主要是单精度浮点数(float)和双精度浮点数(double),两者都是近似值而不是精确值

类型字节负数取值范围正数取值范围
float4字节-3.4E+38 ~ -1.4E-451.4E-45 ~ 3.4E+38
double8字节-1.7E+308 ~ -4.9E-3244.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 字符类型

类型字节取值范围(无符号数)字符编码
char2字节0 ~ 65535Unicode字符集(万国码)
  • 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 布尔类型

类型字节取值范围描述
boolean1字节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 变量的概念 变量是计算机内存中的一块存储单元&#xff0c;是存储数据的基本单元变量的组成包括&#xff1a;数据类型、变量名、值&#xff0c;后文会具体描述变量的本质作用就是去记录数据的&#xff0c;比如说记录一个人的身高、体重、年龄&#xff0c;就需要去…...

SpringBoot2:请求处理原理分析-RESTFUL风格接口

一、RESTFUL简介 Rest风格支持&#xff08;使用HTTP请求方式&#xff0c;动词来表示对资源的操作&#xff09; 以前&#xff1a;/getUser 获取用户 /deleteUser 删除用户 /editUser 修改用户 /saveUser 保存用户 现在&#xff1a; /user GET-获取用户 DELETE-删除用户 PUT-修改…...

[Linux][配置]Linux修改history存储的最大记录数

Linux修改History最大记录为20000行 sed -i s/^HISTSIZE1000/HISTSIZE20000/ /etc/profile source /etc/profile 在 Linux 系统中&#xff0c;HISTSIZE 环境变量用于定义历史记录的大小&#xff0c;即在终端中可以回溯的命令数量。默认情况下&#xff0c;这个值通常是 1000&…...

代码随想录 刷题记录-28 图论 (5)最短路径

一、dijkstra&#xff08;朴素版&#xff09;精讲 47. 参加科学大会 思路 本题就是求最短路&#xff0c;最短路是图论中的经典问题即&#xff1a;给出一个有向图&#xff0c;一个起点&#xff0c;一个终点&#xff0c;问起点到终点的最短路径。 接下来讲解最短路算法中的 d…...

大数据-124 - Flink State 01篇 状态原理和原理剖析:状态类型 执行分析

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…...

C++复习day04

一、函数重载 1.什么是函数重载&#xff1f; 自然语言中&#xff0c;一个词可以有多重含义&#xff0c;人们可以通过上下文来判断该词真实的含义&#xff0c;即该词被重 载了。 比如&#xff1a;以前有一个笑话&#xff0c;国有两个体育项目大家根本不用看&#xff0c;也不用…...

[苍穹外卖]-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…...

中间件解析漏洞(附环境搭建教程)

⼀&#xff1a;IIS解析漏洞 环境资源&#xff1a; https://download.csdn.net/download/Nai_zui_jiang/89717504 环境安装 windows2003iis6 1.创建新的虚拟机 2.在下⼀步中选择我们的iso⽂件镜像 vm已主动识别到windows2003 3.产品密钥⽹上搜⼀个 密码自己设置一个简单的&…...

matlab实现kaiser窗+时域采样序列(不管原信号拉伸成什么样子)是一样的,变到频谱后再采样就是一样的频域序列。

下图窗2的频谱在周期化的时候应该是2&#xff08;w-k*pi/T&#xff09;我直接对2w减得写错了 可见这两个kaiser窗频谱不一样&#xff0c;采样间隔为2T的窗&#xff0c;频谱压缩2倍&#xff0c;且以原采样频率的一半周期化。 但是这两个不同的kaiser窗在频域采样点的值使完全一…...

git为不同的项目设置不同的提交作者

方法1&#xff1a;找到项目的.git文件夹打开 打开config在下面添加自己作者信息 [user]name 作者名email 邮箱方法2&#xff1a;直接在.git文件夹设置作者名&#xff08;不使用–global参数&#xff09; 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

问题&#xff1a; QT 编译报错&#xff1a;C3861&#xff1a; ‘tr’ identifier not found 原因 使用tr的地方所在的类没有继承自 QObject 类 或者在不在某一类中&#xff0c; 解决方案 就直接用类名引用 &#xff1a;QObject::tr( )...

谈谈ES搜索引擎

一 ES的定义 ES 它的全称是 Elasticsearch&#xff0c;是一个建立在全文搜索引擎库Lucene基础上的一个开源搜索和分析引擎。ES 它本身具备分布式存储&#xff0c;检索速度快的特性&#xff0c;所以我们经常用它来实现全文检索功能。目前在 Elastic 官网对 ES 的定义&#xff0c…...

【MySQL】MySQL基础

目录 什么是数据库主流数据库基本使用MySQL的安装连接服务器服务器、数据库、表关系使用案例数据逻辑存储 MySQL的架构SQL分类什么是存储引擎 什么是数据库 mysql它是数据库服务的客户端mysqld它是数据库服务的服务器端mysql本质&#xff1a;基于C&#xff08;mysql&#xff09…...

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题迷你语法分析器

题目&#xff1a; 题解&#xff1a; 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 优选算法】双指针(上)

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 移动零 分析 代码 复写零 分析 代码 快乐数 分析 代码 盛最多水的容器 分析 代码 移动零 题目链接 分析 双指针算法,利用两个指针cur和dest将数组划分为三个区间…...

【自动驾驶】控制算法(八)横向控制Ⅰ | 算法与流程

写在前面&#xff1a; &#x1f31f; 欢迎光临 清流君 的博客小天地&#xff0c;这里是我分享技术与心得的温馨角落。&#x1f4dd; 个人主页&#xff1a;清流君_CSDN博客&#xff0c;期待与您一同探索 移动机器人 领域的无限可能。 &#x1f50d; 本文系 清流君 原创之作&…...

Android SSE 单向接收数据

Server-Sent Events&#xff08;SSE&#xff09;是一种在客户端和服务器之间实现单向实时通信的技术。它允许服务器向客户端推送数据&#xff0c;但客户端无法使用 SSE 向服务器发送数据。这使得其适用于需要持续接收服务器数据的应用场景&#xff08;如实时通知、股票行情、社…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...