JAVA变量与数据类型

2023-11-16

人生不如意之事十有八九,在最好的年纪要努力充实自己,莫等空悲切白了少年头,而是要及时当勉励,岁月不待人。

一. java变量

变量概述:

1.内存中存储的一个存储区域。

2.该存储区域内的数据在同一类型范围内不断变化。

3.变量是程序中最基本的存储单元,包含变量类型,变量名称和存储的值。

简单来说变量就好比我们注册淘宝是要填写的用户名,手机号,密码,年龄等。这些填写完后提交到程序中进行处理,这些数据保存在相应的变量中,进行一些处理,所以我们填写的每一个称呼都是一个变量,程序中都会有相应的变量来与之对应。

变量的作用:用于在内存中存储数据。

使用变量要注意:

java中使用变量必须先声明,再使用。
使用变量名来访问这块区域的数据。
变量的作用域为其所在的一对花括号{}里面。
变量只有在其作用域内才有效。

在同一个作用域内不能定义重复的变量。

变量使用
变量的定义格式:数据类型 变量名 = 变量值;

public class Stujava {

    public static void main(String[] args) {
        //定义变量
	      int a = 12 ;
	      //运行结果
        System.out.println(a);
    }
}

运行结果

12

相对来说,我们直接定义变量不赋值运行,程序会报错:未给变量进行初始化操作。
如果在同一作用域内定义重复的变量也会报错:该变量已经定义。

二.变量分类

对于每一种数据都定义了明确的数据类型,在内存中分配不同的大小空间。
根据数据类型可分为:基本数据类型变量和引用数据类型变量。
在这里插入图片描述
基本数据类型有8中,分为4类:

字符型:char 。 char型通常意义上是占用2字节,字符常量默认使用单引号( ’ ’ )括起来,如:char a1 = ‘a’。还可以使用Unicode值来表示字符型常量。

整型:byte,short,int,long。有固定的表数范围和字段长度,不受操作系统的影响,保证java的可移植性。整型常量默认为int型,声明Long型常量后加“l”或“L”。变量通常声明为int型,除非不足以表示较大的数,才使用long。

在这里插入图片描述
bit是计算机中最小的存储单位,byte:计算机中基本存储单元。

浮点型:float,double。浮点型默认常量为double型,声明float型常量要加“f”或“F”。
在这里插入图片描述

布尔型:boolean。用于逻辑计算,只有true和false两种结果。

public class Test01 {

    public static void main(String[] args) {
   
        //定义char类型,通常使用'',内部写一个字符,还可以声明一个字符,转义字符,或者直接使用Unicode值来表示字符型常量。
        char a1 = 'a';
        char c1 = '\t';//空格
        char c2 = '\n';//换行
        char c3 = '\u0043';
        System.out.println("char类型输出========="+a1);
        System.out.println("char类型输出========="+c1+"123");
        System.out.println("char类型输出========="+c2+"456");
        System.out.println("char类型输出========="+c3);


        //定义double类型
        double d1 = 12.1;
        System.out.println("double类型输出========="+d1+1);

        //定义float类型变量时,变量要以“f”或“F”结尾,不然变量会默认是double类型。
        float f1 = 13.123f;
        System.out.println("float类型输出=========="+f1);

        //定义byte类型变量,范围是(-128~127)
        byte b1 = 10;
        byte b2 = -128;
        //byte b3 = 128;//编译不通过
        System.out.println("byte类型输出========="+b1+"\t"+b2);

        //定义long,short,int类型变量,必须以“l”或“L”结尾。整数通常默认为int类型。
        //long l1 = 123456789012;//定义变量long型,位数不超过int的范围是正常的,一旦超过int的范围且没有加“l”或“L”就会报错。
        long l1 = 123;//没有报错是因为它为int类型,然后又把int类型转化为long类型。
        long l2 = 1234453453789l;
        short s1 = 134;
        int i1 = 234;
        System.out.println("long类型输出"+l2);
        System.out.println("short类型输出"+s1);
        System.out.println("int类型输出"+i1);

        //定义boolean类型变量,只能取两个值中的一个,true或false
        boolean bl1 = true ;
        System.out.println("boolean类型输出"+bl1);


    }

}

运行结果

char类型输出=========a
char类型输出=========	123
char类型输出=========
456
char类型输出=========C
double类型输出=========12.11
float类型输出==========13.123
byte类型输出=========10	-128
long类型输出1234453453789
short类型输出134
int类型输出234
boolean类型输出true

数据类型转换

数据类型转换分为:自动类型转换和强制类型转换。只用7种数据类型转换,Boolean数据类型不参与类型转换,因为它只有true和false两个值。

自动类型转换:
在这里插入图片描述

public class Test02 {

    public static void main(String[] args) {
        byte b1 = 12;
        int i1 = 100 ;
        //byte b2 = b1 + i1;//编译不通过
        int i2 = b1 + i1;
        long l2 = b1 + i1;
        double d2 = b1 + i1;
        System.out.println(i2);
        System.out.println(l2);
        System.out.println(d2);
        
        char c1 = 'a';//c1的值为97,通过ASCII码可以得知c1的值。
        short s1 = 3;
        //short s2 = c1 + s1;//编译不通过
        int i3 = s1 + c1;
        System.out.println(i3);

        byte b2 = 3;
        //char c2 = c1 + b2;//编译不通过
        //byte b3 = s1 + b2;//编译不通过

    }
}

运行结果:

112
112
112.0
100

容量小的的数据类型的变量与容量大的数据类型变量做运算时,结果自动提升为容量大的数据类型。

当byte,char,short三中类型做运算时,结果为int型。

说明:此时的容量大小指的是:表示数的范围的大小。

注:整型常量默认为int型。
​ 浮点型常量默认为double型。

强制类型转换:大的数据类型转换为小的数据类型称之为强制转换。

小数据类型 变量 = (小数据类型) 大数据类型值;

注意:强制类型转化需要使用强转符(),强制转换可能会导致精度损失。

public class Test03 {

    public static void main(String[] args) {
 
        double d1 = 12.3;
        int i6 = (int)d1;//四舍五入,会导致精度损失。
        System.out.println(i6);

        long l1 = 123l;//没有精度损失
        short s6 = (short)l1;
        System.out.println(s6);

        int i7 = 128;//精度损失
        byte b6 = (byte) i7;//因为数值128已经超出了byte的数值范围了,所以会造成精度损失。
        System.out.println(b6);

    }
}

运行结果

12
123
-128

引用数据类型分为3类:类,接口,数组。 基本数据类型之外的变量都是引用数据类型。
String类型:String不属于基本数据类型,它是引用数据类型,它是:字符串。属于3中引用数据类型中的类。
在这里插入图片描述
1.在程序中声明String类型时要使用:“”。

2.String类型可以和8种基本数据类型做运算,且运算只能为连接运算,使用连接符:“+”。

3.运算的结果要为String类型。

public class Test03{

    public static void main(String[] args) {
         String s1 = "hello";
        System.out.println(s1);

        int number = 1000;
        String s2 = "学号是:";
        String str = s2 + number;//+是连接符

        System.out.println(str);
    }
}

运行结果

hello
学号是:1000


除此之外,java中的变量还有局部变量,成员变量。

成员变量包含:实例变量(全局变量),类变量(静态变量)。

实例变量:无static修饰。通过对象名.变量名访问。只要对象被当做引用,实例变量就存在。

静态变量:有static修饰。通过类名.变量名或对象名.变量名访问。其生命周期取决于类的生命周期,类存在它就存在,类被销毁其随之销毁。

public class TestClass {
    String name = "张三";//实例变量
    int age = 18;//实例变量

    static final String s1 = "123456"; //静态变量
    static String s2 = "3453453453";//静态变量

    public static void main(String[] args) {
        //创建类
        TestClass tc = new TestClass();
        //调用实例变量
        System.out.println(tc.name);
        System.out.println(tc.age);
        //调用静态变量
        System.out.println(tc.s1);
        System.out.println(tc.s2);
    }
}

运行结果

张三
18
123456
3453453453

局部变量包含:形参,方法局部变量。代码块局部变量。

形参(方法参数变量):在整个方法内有效。

方法内定义(方法局部变量): 从定义这个变量开始到方法结束这一段时间内有效。

代码块局部变量(代码块局部变量):从定义这个变量开始到代码块结束这一段时间内有效。

public class TestClass {

    public static void main(String[] args) {
           int a = 12;//局部变量
           System.out.println(a);
           test1("zhangsan");
           
    }

    public static void test1(String name){//形参
        System.out.println("name:  "+name);

        {//局部代码块
            int s = 123;
            System.out.println(s);
        }
    }
}

运行结果

12
name:  zhangsan
123

注意:
成员变量:随着类创建对象而出现,随着对象被回收而消失。
局部变量:当方法被调用时才出现,随着方法执行结束而消失 。
在方法体内部声明的变量称为局部变量。
在方法体外,类体内声明的变量称为成员变量 。

结束语:
感谢大家的阅读。
如果有不足之处,请指出,小生在此感谢大家;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JAVA变量与数据类型 的相关文章

  • 如何在 IDEA Intellij 上使用 Spring-boot 自动重新加载

    我写了一个基于Spring boot tomcat freemarker的项目 我运行成功 但是每当我修改一些模板和java类时 我必须重新启动服务器或使用Intellij上的 重新加载更改的类 菜单才能使更改生效 浪费很多时间 然后我尝试
  • 策略模式还是命令模式?

    假设我有一个金融交易列表 我需要针对这些交易执行一系列验证规则 一个例子是我有一笔购买产品的交易 但是首先我需要验证交易中的帐户是否有足够的可用资金 产品没有售完等 由于这些规则 交易将是标记为拒绝 并应指定错误代码 当然 我正在考虑用一个
  • 在 jTextfield 中禁用“粘贴”

    我有一个用 Swing awt 编写的应用程序 我想阻止用户将值粘贴到文本字段中 有没有办法在不使用动作监听器的情况下做到这一点 您可以使用 null 参数调用 setTransferHandler 如下所示 textComponent s
  • 最快的高斯模糊实现

    如何以最快的速度实施高斯模糊 http en wikipedia org wiki Gaussian blur算法 我要用Java来实现它 所以GPU http en wikipedia org wiki Graphics processi
  • Java 卡布局。多张卡中的一个组件

    一个组件 例如JLabel 在多张卡中使用CardLayout 目前看来该组件仅出现在它添加到的最后一张卡上 如果有办法做到这一点 我应该吗 这是不好的做法吗 或者有其他选择吗 你是对的 它只出现在 添加到的最后一张卡 中 但这与CardL
  • 在哪里保存选项值、重要文件的路径等[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在创建一个程序 需要设置一些选项值以及图像文件的一些路径 SQLite 数据库的路径 有关各种按钮上文本的一些信息 有关要使用哪个数据库的信
  • 无法访问“不安全”java方法的java表达式语言

    我正在开发一个项目 让用户向服务器提交小 脚本 然后我将执行这些脚本 有很多脚本语言可以嵌入到Java程序中 例如mvel ognl uel clojure rhino javascript等 但是 据我所知 它们都允许脚本编写者调用Jav
  • JavaFX使节点覆盖父节点边框颜色

    我有一个如下所示的节点 仅使用 css 我希望标签覆盖其父边框颜色 因此标签下方的边框颜色部分变得不可见 我用来制作这个边框的CSS代码 fx border color black fx border width 3 fx border r
  • 在java中将字符串日期转换为美国格式

    我有下面的代码 其中日期为字符串类型 我必须将其设置为美国格式 所以下面我已经展示了它 private static final SimpleDateFormat usOutputDate new SimpleDateFormat MM d
  • 如何在 HandlerInterceptorAdapter 中添加 HttpServletRequest 标头?

    我正在尝试将授权标头添加到我的请求中 作为我们切换环境时的临时解决方法 我试图在扩展 HandlerInterceptorAdapter 的拦截器中处理它 我使用 MutableHttpServletRequest 类制作here http
  • 可访问数据的 Java 约定。 (公共访问器和 Getter/命名)

    通过 Java API 您会看到大量冲突的命名和实践 这让我感到非常困惑 例如 The String http grepcode com file repository grepcode com java root jdk openjdk
  • 纱线上的火花,连接到资源管理器 /0.0.0.0:8032

    我正在我的开发机器 Mac 上编写 Spark 程序 hadoop的版本是2 6 spark的版本是1 6 2 hadoop集群有3个节点 当然都在linux机器上 我在idea IDE中以spark独立模式运行spark程序 它运行成功
  • 生成 equals 和 hashcode 时忽略属性

    假设我有一个类 Customer public class Customer private String firstName private String lastName private String doNotAddMeToEqual
  • 用于层次结构树角色的 Spring Security / Java EE 解决方案

    我知道 Spring Security 非常适合标准角色和基于权限的授权 我不确定的是这种情况 系统中管理着 10 000 名员工 员工被组织成组织结构图 跨部门的谁向谁报告的树 其中一些员工是用户 这些用户仅被允许访问其职责范围内的员工
  • 如何从intellij项目视图中隐藏不必要的文件?

    给定一个示例 gradle 项目 其项目结构如下所示 正如你所看到的 有很多东西你实际上不需要在想法中看到 但你需要它们存在 我知道下面被忽略的文件 文件夹类型Editor File Types但这些正在影响库和项目 idea 会在各处忽略
  • 使用单独的线程在java中读取和写入文件

    我创建了两个线程并修改了 run 函数 以便一个线程读取一行 另一个线程将同一行写入新文件 这种情况会发生直到整个文件被复制为止 我遇到的问题是 即使我使用变量来控制线程一一执行 但线程的执行仍然不均匀 即一个线程执行多次 然后控制权转移
  • 删除 JFX 中选项卡后面的灰色背景

    So is there any way to remove the gray area behind the tab s 我尝试过用 CSS 来做到这一点 但没有找到方法 要设置 tabpane 标题的背景颜色 请在 CSS 文件中写入 t
  • javax.media.jai 类的公共下载?

    这是一个非常简单的问题 我一直在寻找可以下载 javax media jai 库的地方 我找到了 jai imageio 库 但是我发现的所有其他 jai 内容要么已经过时 2008 年及之前 然后我遇到了登录屏幕 是否有 javax me
  • 为什么java.lang.Cloneable不重写java.lang.Object中的clone()方法?

    Java 规范java lang Cloneable接口将自身定义为表示扩展它的任何对象也实现了clone 休眠的方法java lang Object 具体来说 它说 一个类实现了Cloneable接口来指示java lang Object
  • Java中单例的其他方式[重复]

    这个问题在这里已经有答案了 只是我在考虑编写单例类的其他方法 那么这个类是否被认为是单例类呢 public class MyClass static Myclass myclass static myclass new MyClass pr

随机推荐

  • url的讲解

    摘抄博客 什么是URL URL是什么意思 刘宇凡的专栏 CSDN博客 ur是什么意思 什么是URL URL是Uniform Resource Locator的缩写 即统一资源定位系统 也就是我们通常所说的网址 URL是在Internet的W
  • go get: installing executables with ‘go get‘ in module mode is deprecated.

    go get installing executables with go get in module mode is deprecated 问题描述 原因分析 解决方案 参考链接 问题描述 场景描述 执行go get github com
  • 关于CVE-2023-27161 Jellyfin流媒体系统存在SSRF漏洞的学习

    漏洞描述 Jellyfin 直到 v10 7 7 通过组件 Repository 包含服务器端请求伪造 SSRF 此漏洞允许攻击者通过构建的 POST 请求访问网络资源和敏感信息 环境及部署说明 实验环境 Centos 7 试验机器IP地址
  • 诚之和:Python机器学习之逻辑回归

    在机器学习领域中 逻辑回归是一个非常经典的算法 今天小编带来的是一片关于逻辑回归算法的介绍与实现 希望能给各位小伙伴带来一些帮助 一 题目 1 主题 逻辑回归 2 描述 假设你是某大学招生主管 你想根据两次考试的结果决定每个申请者的录取 机
  • 小程序使用mqtt时的问题

    由于业务需求 小程序项目中需使用mqtt 当我像Vue项目一样去使用时却出现了种种问题 归根结底还是因为没有去仔细看文档 因为英文文档实在懒得看 就那么顺其自然的写 结果浪费了一天时间 这里对小程序中使用mqttjs遇到的问题进行总结 mq
  • java获取两个时间之间的所有日期、月份、年份,返回列表

    需求描述 输入开始时间和结束时间 获取时间范围内的所有日期 月份 年份 输入可以为 yyyy MM dd HH mm ss 或者 yyyy MM dd 一 输入开始时间和结束时间 返回时间范围内中的所有日期列表 传入两个时间范围 返回这两个
  • Javascript组件化开发设计思想

    一 引言 项目中经常用web弹层组件 layer 其常见的代码如下 使用的时候很方便 弹窗的宽高 内容 标题 关闭按钮等弹窗的状态我们都可以通过配置参数配置 layer弹层组件用同一套代码来满足不同的弹窗层表现的需求 这便是组件开发的强大之
  • 服务器优化

    Windows Registry Editor Version 5 00 HKEY LOCAL MACHINE SYSTEM CurrentControlSet Services Tcpip Parameters 关闭无效网关的检查 当服务
  • 网站搭建学习 ubuntu(20.04) 无法使用ifconfig命令-解决办法

    想在新装好的ubuntu系统上部署django 一开始就遇到了问题 使用ifconfig命令时报错 于是按照提示安装net tools sudo apt install net tools 还是有报错 总之先按照系统提示来 用apt get
  • 如何终止一个无限循环线程和 程序退出时销毁线程

    http zhidao baidu com question 299079849 html android 启动了一个子线程 这个子线程是一个死循环 不成的打印 Hello 现在要实现点击一个Button 让这个子线程终止 用什么方法啊 s
  • 单相逆变器第四课、F28027最小系统绘画

    今天我们说的是F28027最小系统的绘画 其实我暂时还没有规划后面要用到什么引脚 所以我很任性的把所有GPIO引脚都接出去了 呵呵 先给大家上一个整体的图 看着图片是不是比较小 呵呵 没办法 截图最大的了 我晚点会把原理图和PCB上传到下载
  • VMware15中安装Linux详细教程

    VMware15中安装Linux详细教程 一 搭建VMware环境 1 打开链接 https www vmware com cn html 选择适合自己电脑系统的版本进行下载 2 下载完成后点击文件进行安装 安装界面如图 注 1 安装目录尽
  • 信息安全产品认证

    文章目录 一 引言 二 网络关键设备和网络安全专用产品安全认证证书 2 1 背景 2 2 产品目录 2 3 认证依据标准 2 4 认证机构 2 5 商密产品检测认证目录 与 网络关键设备和网络安全专用产品目录 的关系 三 中国国家信息安全产
  • 20个常见的Java错误以及规避方法

    原文 50 Common Java Errors and How to Avoid Them Part 1 作者 Angela Stringfellow 翻译 雁惊寒 译者注 本文介绍了20个常见的Java编译器错误 每种错误都包含了代码片
  • MKP勒索病毒:了解最新变种mkp,以及如何保护您的数据

    导言 在数字化时代 mkp 勒索病毒成为了网络安全领域的一大威胁 它采用高级加密技术 将您的数据文件锁定 要求支付赎金以解锁 本文将详细介绍 mkp 勒索病毒的工作原理 如何恢复被它加密的数据文件 以及如何采取预防措施来降低受攻击的风险 如
  • lambdaQuery用法

    lambdaQuery用法 LambdaQueryWrapper
  • pandas DataFrame行或列的删除方法

    pandas DataFrame的增删查改总结系列文章 pandas DaFrame的创建方法 pandas DataFrame的查询方法 pandas DataFrame行或列的删除方法 pandas DataFrame的修改方法 此文我
  • uniapp之微信小程序开发教程及如何合理使用WebSocket(实时监听)+workman聊天系统+linux系统配置阿里云端口

    添加链接描述 添加链接描述 thinphp6 1 workerman文档 添加链接描述 https www kancloud cn manual thinkphp6 0 1147857 workerman手册 https www worke
  • 软件的最低测试方法

    前言 1 1 引言 对于大部分软件系统 如何测试及有效的测试 是一个很头痛的问题 在软件工程上 测试是软件工程中极其重要的一部分 但在具体的实际情况上 无论是时间 人手及资源的调配等原因 使国内大部分软件公司没有进行过理论上的完整的测试 本
  • JAVA变量与数据类型

    人生不如意之事十有八九 在最好的年纪要努力充实自己 莫等空悲切白了少年头 而是要及时当勉励 岁月不待人 一 java变量 变量概述 1 内存中存储的一个存储区域 2 该存储区域内的数据在同一类型范围内不断变化 3 变量是程序中最基本的存储单