【无标题】Java_Se 数据变量与运算符

   标识符、变量、常量、数据类型、运算符、基本数据类型的类型转换等。这些是编程中的“砖块”,是编程的基础。要想开始正式编程,还需要再学“控制语句”,控制语句就像“水泥”,可以把“砖块”粘到一起,最终形成“一座大厦”。

变量的本质:

1.变量本质上就是代表一个”可操作的存储空间”,空间位置是确定的,但是里面放置什么值不确定。

2.可通过变量名来访问“对应的存储空间”,从而操纵这个“存储空间”存储的值。

3.Java是一种强类型语言,每个变量都必须声明其数据类型。变量的数据类型决定了变量占据存储空间的大小。比如,int a=3; 表示a变量的空间大小为4个字节。

变量有三种类型:局部变量,成员变量(也称为实例变量)和静态变量。

  局部变量(local variable):方法或语句块内部定义的变量。生命周期是从声明位置开始到到方法或语句块执行完毕为止。局部变量在使用前必须先声明、初始化(赋初值)再使用。

public class Test {public static void main(String[] args) {int i;i=10;int j=i+5;System.out.println(j);}
}

  成员变量(也叫实例变量 member variable):方法外部、类的内部定义的变量。从属于对象,生命周期伴随对象始终。如果不自行初始化,它会自动初始化成该类型的默认初始值。

public class Test {public static void main(String[] args) {int i;}
}

  静态变量(类变量 static variable)使用 static 定义。 从属于类,生命周期伴随类始终,从类加载到卸载。如果不自行初始化,与成员变量相同会自动初始化成该类型的默认初始值.

常量(Constant)

在 Java 语言中,用关键字 final 来定义一个常量。常量一旦被初始化后不能再更改。

public class Test {public static void main(String[] args) {final double Pl= 3.14;// PI= 3.15; //编译错误,不能再被赋值!double r = 4;double area = Pl*r* r;double circle = 2 * Pl* r;System.out.println("area = " + area);System.out.println("circle ="+ circle);}
}

  为了更好的区分和表述,一般将1、2、3、'a' 、 'b'、true、false、”helloWorld”等称为字符常量,而使用 final 修饰的 PI等称为符号常量。

基本数据类型(primitive data type)

Java数据类型分为两大类:基本数据类型(primitive data type)和引用数据类型(referencedata type)。

public class Test {public static void main(String[] args) {
// 方式一:在定义时给出初始值int a = 10;System.out.println(a);// 方式二:在定义时没有给初始值,但使用前必须设置初值int b;b = 10;System.out.println(b);// 使用方式二定义后,在使用前如果没有赋值,则编译期间会报错int c;System.out.println(c);c = 100;
// int型变量所能表示的范围:System.out.println(Integer.MIN_VALUE);System.out.println(Integer.MAX_VALUE);// 注意:在定义int性变量时,所赋值不能超过int的范围int d = 12345678901234; // 编译时报错,初值超过了int的范围}
}

1.float类型又被称作单精度类型,尾数可以精确到7位有效数字。

2.double表示这种类型的数值精度约是float类型的两倍,又被称作双精度类型,绝大部分应用程序都采用double类型。

3.Java浮点类型常量有两种表示形式:

(1)十进制数形式:例:3.14314.00.314(2)科学记数法形式例:3.14e03.14E23.14E-1

4.浮点型不精确,不要用于比较浮点数存在舍入误差,数字不能精确表示。浮点数适合普通的科学和工程计算,精度足够;但不适合精度要求非常高的商业计算,这时候要使用BigDecimal进行运算和比较。

5.浮点常量默认类型是double,要改成float可以后面加F或f

public class Test {public static void main(String[] args) {float f = 3.14F;//float类型赋值时需要添加后缀F/fdouble d1= 3.14;double d2= 3.14D;}
}

      ASCII字符集表示了英文字母、数字、特殊字符、控制符,所有字符集的老祖宗,大家都会兼容它。但是一个字节能够表示256个状态,而ASCII字符只用到128个,后面128个一直是空的。于是有了ISO8859-1,别名叫latin-1, 包含了256个字符。前128个字符与ASCII中完全相同。后128个包括了西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号。

   随着我国的计算机普及,汉字的处理也有了我们自己的方案。那就是GB2312,两个字节表示1个汉字。两个字节可以表示65536个状态,汉字再多也能全部包含。后来,又有了GBK、GB18030。我国的台湾地区自己搞了一套显示繁体中文的大五码BIG5。全世界各个地方,都有自己的文字编码。由于不互通,经常造成乱码的问题。

        如果有一种统一的字符集,将世界上所有语言字符都纳入其中,每一个字符都给予一个全球独一无二的编码,那么乱码问题就会消失。于是,全球所有国家和民族使用的所有语言字符的统一字符集诞生了,这就是Unicode字符集。Unicode字符集是为了给全世界所有字符一个唯一的编码,“唯一”对应的英文为Unique,而编码的英文为code。Unicode采用了字符集和编码分开的策略。Unicode之前,Unicode诞生之前可以将字符集和字符编码混为一谈,而在Unicode中必须严格区分开。

Unicode字符集统一采用两个字节表示一个字符,包括英文字母。但是,由于英文占据互联网信息的绝大部分。真实存储和传输时,会造成极大的浪费;因此,目前主要采用UTF8编码来实现具体的存储和传输。

    UTF-8是变长编码,用1-6个字节编码Unicode字符。西欧字符仍然是1个字节,汉字3个字节。字符型在内存中占2个字节。在Java中使用单引号来表示字符常量。例如’A’是一

public class Test {public static void main(String[] args) {char c1 = 'A'; // 大写字母char c2 = '1'; // 数字字符System.out.println(c1);System.out.println(c2);
// 注意:java中的字符可以存放整形char c3 = '帅';System.out.println(c3);}
}

1.boolean类型有两个常量值,true和false。

2.在内存中占一个字节或4个字节,不可以使用0 或非0 的整数替代true 和false,这点和C语言不同。【注意点】JVM规范指出boolean当做int处理,也就是4字节,boolean数组当做byte数组处理,这样我们可以得出boolean类型占了单独使用是4个字节,在数组中是确定的1个字节。

public class Test {public static void main(String[] args) {boolean flag;flag = true;  flag=false;if (flag) {     // true分支} else {  //false分支}}
}

1.+,-,*,/,%属于二元运算符。%是取模运算符,就是我们常说的求余数操作。

2.算术运算符中++(自增),--(自减)属于一元运算符。二元运算符的运算规则:整数运算:如果两个操作数有一个为long, 则结果也为long。没有long时,结果为int。即使操作数全为short,byte,结果也是int。浮点运算:如果两个操作数有一个为double,则结果为double。只有两个操作数都是float,则结果才为float。取模运算:其操作数可以为浮点数,一般使用整数,结果是“余数”,“余数”符号和左边操

public class Test {public static void main(String[] args) {int a = 3;int b = a++;  //执行完后,b=3。先给b赋值,再自增。System.out.println("a="+a+"\nb="+b);a = 3;b=++a;    //执行完后,b=4。a先自增,再给b赋值System.out.println("a="+a+"\nb="+b); }
}

扩展运算符:

public class Test {public static void main(String[] args) {int a=3;int b=4;a+=b;  //相当于a=a+b;System.out.println("a="+a+"\nb="+b);a=3;a*=b+3;  //相当于a=a*(b+3)System.out.println("a="+a+"\nb="+b);}
}

  短路与和短路或采用短路的方式。从左到右计算,如果只通过运算符左边的操作数就能够确定该逻辑表达式的值,则不会继续计算运算符右边的操作数,提高效率。

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

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

相关文章

华为OD机试 - 二维伞的雨滴效应(Python/JS/C/C++ 2024 E卷 200分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…

多模态AI技术详解:跨越数据边界的智能未来

1. 引言 在当今快速发展的人工智能(AI)领域,多模态AI技术正逐渐成为研究热点。它通过结合不同类型的数据(如文本、图像、音频等),为机器提供更全面的理解能力。本文将深入探讨多模态AI的基本概念、应用场景…

ClickHouse-Kafka Engine 正确的使用方式

Kafka 是大数据领域非常流行的一款分布式消息中间件,是实时计算中必不可少的一环,同时一款 OLAP 系统能否对接 Kafka 也算是考量是否具备流批一体的衡量指标之一。ClickHouse 的 Kafka 表引擎能够直接与 Kafka 系统对接,进而订阅 Kafka 中的 …

PHP 数组排序类型介绍

在PHP中,数组排序是一项常见且重要的操作,它允许开发者根据一定的规则对数组中的元素进行排序。PHP提供了多种数组排序函数,以适应不同的排序需求。这些函数包括基本的升序和降序排序,以及基于特定键值、自定义排序逻辑等的复杂排…

镀金引线---

一、沉金和镀金 沉金和镀金都是常见的PCB金手指处理方式,它们各有优劣势,选择哪种方式取决于具体的应用需求和预算。 沉金(ENIG)是一种常用的金手指处理方式,它通过在金手指表面沉积一层金层来提高接触性能和耐腐蚀性…

【C++】模拟实现vector

在上篇中我们已经了解过的vector各种接口的功能使用,接下来我们就试着模拟实现一下吧! 注意:我们在此实现的和C标准库中实现的有所不同,其目的主要是帮助大家大概理解底层原理。 我们模拟vector容器的大致框架是: t…

2024年【四川省安全员B证】新版试题及四川省安全员B证考试试卷

题库来源:安全生产模拟考试一点通公众号小程序 四川省安全员B证新版试题参考答案及四川省安全员B证考试试题解析是安全生产模拟考试一点通题库老师及四川省安全员B证操作证已考过的学员汇总,相对有效帮助四川省安全员B证考试试卷学员顺利通过考试。 1、…

什么是注解?

1.是什么 注解(Annotation)是Java语言中一种元数据(metadata)的形式,它用于提供关于代码的额外信息,这些信息不会影响代码的编译或执行,但可以被工具用来进行编译时的检查或者在运行时进行处理。…

【webpack4系列】webpack基础用法(二)

文章目录 entryoutputloaderpluginmode前端构建基础配置关联HTML插件html-webpack-plugin构建 CSS 解析 ES6和React JSX解析 ES6解析 React JSX 解析CSS、Less和Sass解析CSS解析Less解析sass 解析图片和字体资源解析:解析图片资源解析:解析字体资源解析&…

Flutter 优化技巧分享

Flutter 作为一个跨平台框架,凭借其高效的开发体验和丰富的生态,受到越来越多开发者的青睐。然而,在开发过程中,随着项目的复杂度增加,性能问题和代码优化需求也逐渐显现。为了确保应用在各种场景下保持流畅的用户体验…

JS - 获取剪切板内容 Clipboard API

目录 1,需求最终效果 2,实现示例 3,注意点1,只支持安全上下文环境2,只能读取当前页面的剪切板3,权限获取问题4,获取内容的 MIME_TYPE 问题1,文本内容2,图片内容 5&#x…

魅思-视频管理系统 getOrderStatus SQL注入漏洞复现

0x01 产品简介 魅思-视频管理系统是一款集成了视频管理、用户管理、手机端应用封装等功能的综合性视频管理系统。该系统不仅以其强大的视频管理功能、灵活的用户管理机制、便捷的手机端应用封装功能以及高安全性和现代化的界面设计,成为了市场上备受关注的视频管理系统之一。…

【MySQL】使用C语言连接数据库

看到标题,可能会疑惑,我们学习的不是C吗,为什么使用C语言去连接数据库呢??实际上,这两种语言都可以连接数据库,但是C语言提供的API没有进行封装,更有利于我们学习数据库连接。面向API编程,哈哈…

一个基于 laravel 和 amis 开发的后台框架, 友好的组件使用体验,可轻松实现复杂页面(附源码)

前言 随着互联网应用的发展,后台管理系统的复杂度不断增加,对于开发者而言,既要系统的功能完备,又要追求开发效率的提升。然而,传统的开发方式往往会导致大量的重复劳动,尤其是在构建复杂的管理页面时。有…

Web植物管理系统-下位机部分

本节主要展示上位机部分,采用BSP编程,不附带BSP中各个头文件的说明,仅仅是对main逻辑进行解释 main.c 上下位机通信 通过串口通信,有两位数据验证头(verify数组中保存对应的数据头 0xAA55) 通信格式 上位发送11字节…

SpringBoot:自定义异常

我们在实现自定义异常的时候&#xff0c;我们需要继承 RuntimeException &#xff0c;参考代码&#xff1a; /*** <b>Function: </b> todo** program: BizException* Package: com.kingbal.king.common.core.exception* author: dingcho* date: 2024/09/14* versi…

STL容器中的填充fill和generate

STL容器中的填充fill和generate &#x1f4a2;fill and fill_n&#x1f4a2;generate and generate_n 算法描述fill(beg, end, val)将val赋值给[beg, end)之间的所有元素fill_n(beg, n, val)将val赋值给[beg, begn)之间的所有元素generate(beg, end, func)连续调用func填充[beg…

大数据框架常用端口号总结

框架组件端口HadoopNameNode (HDFS)50070 (Hadoop 2.x) / 9870 (Hadoop 3.x)DataNode (HDFS)50075 (Hadoop 2.x) / 9864 (Hadoop 3.x)ResourceManager (YARN)8088, 8032NodeManager (YARN)8042, 8040HBaseHMaster16010, 16000RegionServer16030, 16020Zookeeper2181HiveHiveSer…

QT串口发送数据的一个问题

一.问题与解决 1.问题&#xff1a; 在做串口发送固件升级数据的时候&#xff0c;总是莫名提示错误&#xff1a; QObject::startTimer: Timers cannot be started from another thread QObject::startTimer: Timers cannot be started from another thread QObject::startTi…

python 2024-9

第一课 问题 a, b 求最大值&#xff1f;分类讨论 if a > b:print("最大值 "&#xff0c; a)else:print("最大值 "&#xff0c; b)a, b, c 求最大值&#xff1f; 条件语句 if ... elif ... else列表最大值&#xff1f;与参照物循环比较 a [1.7, 1.…