变量数据类型 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()方法都有换行的效果,选其一即可}
}

运行结果
在这里插入图片描述

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

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

相关文章

script中的src

<script src"http://www.somewhere.com/afile.js"></script> 浏览器在解析这个资源时&#xff0c;会向 src 属性指定的路径发送一个 GET 请求&#xff0c;以取得相应资源&#xff0c;假定 是一个 JavaScript 文件。这个初始的请求不受浏览器同源策略限…

Verilog基础,原码,反码与补码的概念

Verilog模块初认识 1、Verilog模块(Module) Verilog中的module可以看成一个具有输入输出端口的黑盒子&#xff0c;该黑盒子有输入和输出接口(信号)&#xff0c;通过把输入在盒子中执行某些操作来实现某项功能。(类似于C语言中的函数) 图1 模块示意图 1.1 模块描述 图1 所示的…

2024年【防爆电气】试题及解析及防爆电气模拟考试题库

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 防爆电气试题及解析考前必练&#xff01;安全生产模拟考试一点通每个月更新防爆电气模拟考试题库题目及答案&#xff01;多做几遍&#xff0c;其实通过防爆电气复审模拟考试很简单。 1、【单选题】()利用输送爆炸危险…

Einsum(Einstein summation convention)

Einsum&#xff08;Einstein summation convention&#xff09; 笔记来源&#xff1a; Permute和Reshape嫌麻烦&#xff1f;einsum来帮忙&#xff01; The Einstein summation convention is a notational shorthand used in tensor calculus, particularly in the fields of …

大美祖国之地名篇-探寻全国同名地名

目录 前言 一、地名数据库 1、数据库模型 2、数据表结构 二、实践之旅&#xff0c;发现同名地名 1、省、市同名 2、市、县同名 3、 区县、乡镇同名 4、乡镇和村委会同名 三、总结 前言 我们祖国地大物博&#xff0c;从北到南&#xff0c;从东到西。祖国位于亚洲东部&…

九,自定义转换器详细操作(附+详细源码解析)

九&#xff0c;自定义转换器详细操作&#xff08;附详细源码解析&#xff09; 文章目录 九&#xff0c;自定义转换器详细操作&#xff08;附详细源码解析&#xff09;1. 基本介绍2. 准备工作3. 自定义转换器操作4. 自定义转换器的注意事项和细节5. 总结&#xff1a;6. 最后&…

电脑怎么限制软件上网?推荐三个超详细的小妙招(软件上网权限管理)

想要控制电脑上哪些软件可以上网、哪些不能&#xff1f;不管是为了保护隐私、节省流量&#xff0c;还是提高工作效率&#xff0c;限制软件上网都是非常实用的小妙招&#xff01; 今天给大家带来三个超详细的招数&#xff0c;帮助你轻松管理软件的上网权限。让那些不该上网的应…

最长的指定瑕疵度的元音子串

题 目描述 开头和结尾都是元音字母(aeiouAEIOU)的字符串为元音字符串&#xff0c;其中混杂的非元音字母数量为其瑕疵度。比如. 1.“a”、“aa"是元音字符串&#xff0c;其瑕疵度都为02.“aiur"不是元音字符串(结尾不是元音字符)3.“abira”是元音字符串&#xff0c…

RocketMQ 集群与高可用性:深入解析与实践指南

目录 前言 RocketMQ集群与高可用性 一、主从同步机制 1.1 使用场景 1.2 原理机制 1.3 数据同步流程 1.4 优缺点 二、RocketMQ 故障转移机制&#xff08;Failover&#xff09; 2.1 使用场景 2.2 原理机制 2.3 故障转移的注意事项 2.4 优缺点 三、主从架构和故障转移…

MySQL的 where 1=1会不会影响性能

MySQL的 where 11会不会影响性能&#xff1f; 一、引言 在编写SQL语句时&#xff0c;我们经常会遇到需要动态拼接查询条件的情况&#xff0c;尤其是在使用MyBatis这类ORM框架时。为了简化代码&#xff0c;很多开发者会使用where 11来开始他们的查询语句&#xff0c;然后通过程…

VSCode学习笔记

1. 快捷键 KeyDescriptionPlatformF1打开命令面板&#xff08;Command Palette&#xff09;Win10Shift Delete剪切当前光标所在的代码行Win10 2. 文件 2.1 在文件列表中定位当前文件 操作路径&#xff1a;右键单击文件名 ⇒ 在右键菜单中点击 【Reveal in Explorer View】

云计算第四阶段----CLOUD 01-03

CLOUD Day01 一、虚拟化平台搭建 虚拟化技术产品介绍 #黄线标注的&#xff0c;都是比较主流且常用的虚拟化平台。 虚拟化与云计算的关系 虚拟化是一种技术&#xff0c;它允许在单个物理服务器上创建和运行多个虚拟机&#xff08;VMs&#xff09;&#xff0c;每个虚拟机都有其…

python编程知识(实现数据加密和解密)

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

JavaScript使用高德API显示地图

前言 在JavaScript中&#xff0c;使用Leaflet库显示地图是一种常见的做法。Leaflet是一个开源的JavaScript库&#xff0c;用于在Web应用程序中创建互动地图。它非常轻量级&#xff0c;易于使用&#xff0c;并且提供了多种功能&#xff0c;使开发者能够轻松地将地图集成到他们的…

银行结算业务

1.1 银行本票 银行本票是由银行签发的,承诺自己在见票时无条件支付票款给收款人或持票人的业务。银行本票按票面划分为定额本票和不定额本票,按币种划分为人民币银行本票和外币银行本票。人民币银行本票仅在同一交换区域内使用,资金清算利用当地人民银行组织的资金清算形式…

2024 年高教社杯全国大学生数学建模竞赛 C 题 农作物的种植策略(可视化代码)

持续更新中,2024年数学建模比赛思路代码论文都会发布到专栏内,只需订阅一次! 完整论文+代码+数据结果链接在文末! 订阅后可查看代码文件 1、描述性统计分析 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns from scipy…

用SpringBoot API实现识别pdf文件是否含有表格

要使用Spring Boot API 实现一个识别 PDF 文件是否含有表格的功能&#xff0c;你可以结合 PDF 解析库&#xff08;如 Apache PDFBox&#xff09;来解析 PDF 文件内容&#xff0c;并通过分析文本或线条来判断 PDF 是否包含表格。然后使用 Spring Boot 提供的 REST API 来实现上传…

Windows——不利用任何软件,打开局域网服务器的文件夹方法

第一步&#xff1a; windows 键 R 键&#xff0c;打开左下角运行窗口 第二步&#xff1a; \\ip地址

Android14音频进阶之定制ramdisk文件系统init服务(八十三)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+…

Three 渲染器(二)

WebGL1Renderer 构造函数 WebGL1Renderer( parameters : Object ) Creates a new WebGL1Renderer. 属性 See the base WebGLRenderer class for common properties. 方法 See the base WebGLRenderer class for common methods. WebGLRenderTarget render target是一个…