3、java中的数据类型和运算符

 

数据类型

数据类型是对数据存储在内存中位置的一种抽象表示,java的数据类型总体上分为两大类:基本数据类型和引用数据类型。

1、基本数据类型

       基本数据类型是语言本身定义的,数据结构上有说基本数据类型表示的是真实的数字和字符,在java中,基本数据类型的数据都是存储在栈内存中,基本数据类型包含四类八种,介绍如下。

       第一类:整型,包含四种数据类型,字节型(byte)、短整型(short)、整型(int)和长整型(long)。byte类型的数据在内存中占1个字节(8位),取值范围换成十进制是-2^7到2^7-1,默认值为0;short类型的数据在内存中占2个字节(16位),取值范围是-2^15到-2^15,默认值是0;int类型的数据在内存中占4个字节(32位),取值范围是-2^31到2^31,默认值是0;long类型的数据在内存中占8个字节(64位),取值范围是-2^63~2^63-1,默认值是0L。

       第二类:浮点型,包含两种数据类型,单精度浮点数(float)和双精度浮点数(double),float类型的数据在内存中占4个字节(32位),取值范围是1.4E-45~3.4028235E38 (程序打印的),默认值是0.0;double类型的数据在内存中占8个字节(64位),取值范围是4.9E-324~1.7976931348623157E308,默认值是0.0。两者区别在于double表示的小数更加精确,一般表示浮点数时都是用double,如果声明float型则数值需加F,例如:float f = 20L;

       第三类:字符型,用于存储字符类型数据,占2个字节(16位),取值范围时0到65535,默认值为空。说起字符就要说一下Unicode字符集,0到65535每一个数再Unicode字符集中都对应一个特定的字符,声明的字符型数据需要用单引号引起来,例如:char ch = ‘A’;还有一种就是转义类字符,以”\”开头。

       第四类:布尔型,用于存储布尔类型数据,占用1个字节(8位),只有两个数值true和false,默认值是false。

       补充:数据在内存中是以二进制形式表示的,以byte类型为例,在内存中占8位,由于整型数据有正负之分,所以八位中的最高为用来表示符号位,0为正,1为负。正数在内存中以被保存数据的二进制原码进行存储,而负数是以其对应正数补码形式存在,也就是正数的原码取反后加1。也正是因为存储的数据因为类型不同占用的存储单元也不同,所以就会存在一个问题,当使用占存储单元少的数据类型去强制存储占用存储单元多的数据类型的数据时就会发生精度缺失的错误,这就是强制类型转换会使得数据丢失精度的本质。所以在使用时应注意避免不要造成精度确实。

2、引用数据类型

       引用数据类型可以是String 、数值 、java中的或用户自定义的各种类,引用数据类型的数据在内存中的存储和基本数据类型不同,在栈中存储的仅是变量和存储具体数据的地址,而具体的数据是存储在堆上的,这也是之所以叫做引用类型的原因,栈中存储的仅是引用的存储在堆中的具体数据一个地址而已。(String有点特别)

       对于引用数据类型没什么介绍的,这东西需要长期积累。

       这里着重说一下,java中引用数据类型是遵循引用传递的(string类型有点特别),这里的引用传递指的是可以将引用类型数据的值进行修改,而不是真的去修改地址,java是无法直接去修改地址的。

运算符

1、算术运算符

        顾名思义,就是加(+)、减(-)、乘(*)、除(/)、取余(%)等,其中还有两个特殊的自加和自减操作,简单说一下,自加运算符,例如:i++,就表示i本身加上1,然后将值重新赋值给i,就相当于i = i + 1; ,自减与自加相同只是减1而已。

2、赋值运算符

        就是将值赋给声明的变量,例如:i = 1; 说白了就是将右边的值赋给左边

3、关系运算符

        就是用来比较两个数据之间关系的符号,对于基本数据类型而言,比较的就是大小,而对于引用的数据类型比较的就是两个数据是否存储在同一地址下(只有”!=”和”==”才使用于引用个类型)。符号标识有:> 、<、>=、<=、!=、== 。

        这里说一下”=”和”==”,前一个是赋值运算符,而后一个是比较运算符,例如比较1和2是否相等,使用”==”。

4、逻辑运算符

      Java中的逻辑运算符包括与(&&)、或(||)、非(!)、异或(^),简单介绍以下

      与:A&&B,就是当A并且B 同时满足,才表示条件成立

      或:A||B,表示当A或者B有一个满足时,条件就成立

      非:!A,表示当不满足条件A时,整体的条件就成立

      异或:A^B,当A或B只要有一个为true,整个条件就成立

5、位运算符

       用来操作二进制的运算符,包括:按位与(&)、按位或(|)、右移(>>)、左移(<<)、无符号右移(>>),还有其他的位运算,想了解的非常清楚话建议学习以下编译原理,这里只是简单的介绍以下常用的用法。

       先说一下按位与和逻辑与的区别,两者都是表示与,只有两个条件都成立才可以,但是逻辑与又被称为短路与,意思就是当A&&B中如果A不满足条件则不会再去判断B是否满足条件,而按位与则会去继续判断。按位或同于按位与

       说一下左移,这里不进行具体的位运算演示,只说一下值的变化, a<<b ,a左移b位,相当于a = a * 2 ^ b,就是将a乘以2的b次方的值赋给a。右移相当于除以2的b次方。不过这些操作都需要在合理的数值范围内进行,不然会产生错误.

6、三目运算符

       这个也是开发中经常使用的,具体格式如下:

       String a = 条件是否成立 ?  “1” : “2”;

       如上给a赋值,当条件成立时,则将1赋给a,否则将2赋给a,也就是条件如果成立则取分号前边的值,否则分号后边.

 

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

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

相关文章

牛客-十二桥问题【最短路,状压dp】

正题 题目链接:https://ac.nowcoder.com/acm/contest/1104/B 题目大意 nnn个点mmm条边的无向图&#xff0c;kkk条必须经过的边&#xff0c;求从1出发经过这kkk条边再回到1的最短路。 解题思路 我们每条边两段的端点和1是我们需要用到的特征点&#xff0c;我们用计算出每个特征…

动态规划训练17 [Super Jumping! Jumping! Jumping! HDU - 1087 ]

Super Jumping! Jumping! Jumping! HDU - 1087 过于简单懒得说了 #include <cstdio> #include <algorithm> #include <cstring> using namespace std; const int MAX 1000; int a[MAX]; int dp[MAX]; main(){int N;while(scanf("%d",&N) ! E…

使用DDD、事件风暴和Actor来设计反应式系统

领域驱动设计&#xff08;domain-driven design&#xff0c;DDD&#xff09;通常在微服务领域用于查找边界&#xff08;限界上下文&#xff09;。同样来自DDD的聚合&#xff08;aggregate&#xff09;对于定义持久化和一致性的范围来讲也是很重要的。 但是&#xff0c;并不是领…

4、java中的流程控制(程序结构)

说一下java的流程控制&#xff08;程序结构&#xff09;&#xff0c;其实对于计算机而言&#xff0c;无非就那几类执行流程&#xff08;程序结构&#xff09;&#xff0c;程序从头到尾依次执行每一行代码&#xff0c;这就是顺序结构&#xff1b;也可能在执行过程中遇到条件判断…

jzoj1402-偷懒的小X【贪心】

正题 题目链接:https://jzoj.net/senior/#contest/show/2940/0 题目大意 一颗满二叉树&#xff0c;第iii个点的儿子是i∗2i*2i∗2和i∗21i*21i∗21&#xff0c;然后nnn个数填入&#xff0c;求一个满足小根堆性质的字典序最大的路线。 解题思路 我们计算出每个点下面有多少个…

动态规划训练18 [免费馅饼 HDU - 1176 ]

免费馅饼 HDU - 1176 这也是一道比较简单的动态规划 dp[i][j]表示到时间i&#xff0c;位置为j所能采集的最大馅饼数量 状态转移非常好写 dp[i][j] max{dp[i-1][j],dp[i-1][j-1],dp[i-1][j1]} T[j][i] 其中T[j][i]表示的是时间为i&#xff0c;位置为j落下的馅饼的数量 #in…

站在巨人肩上的.NET Core 2.1

.NET Core 1.0自发布两年以来&#xff0c;得到了开发者群体相当高地认可。 下图来自Stack overflow survey 2018的统计&#xff1a;.NET Core已经成为前五的主流框架工具&#xff0c;现今借鉴了优秀的设计原则和开发体验可谓站在巨人肩上。这一切归功于.NET团队认识和总结了大量…

5、java中的数组

1、简介 数组是一种具有随机存取特性的数据结构&#xff0c;是内存上一段连续区域的表示&#xff0c;是实现顺序存储的基础&#xff0c;数组只能用于存储同一类型的数据。数组的长度在初始化时定义之后就不可更改&#xff0c;并且在初始化数组时必须指定数组的长度。 2、数组…

jzoj1403-渡河【SPFA】

正题 题目链接:https://jzoj.net/senior/#contest/show/2940/1 题目大意 一个n∗nn*nn∗n的图&#xff0c;从000走到111价格为1。kkk个询问&#xff0c;询问一个点离边界的最小价格。 解题思路 反向从边界开始跑SPFASPFASPFA即可。 codecodecode #pragma GCC optimize(&quo…

动态规划训练19、最短路 [Help Jimmy POJ - 1661 ]

Help Jimmy POJ - 1661 题意&#xff1a;大致是一个人从某个点开始下落&#xff0c;下落的速度是1m/s&#xff0c;然后在平台上的时候可以左右移动&#xff0c;移动的速度也是1m/s&#xff0c;但是这里有一个限制&#xff0c;就是说每次下落的距离不能超过一个给定的数值。问你…

【活动(北京)】Global Azure Bootcamp

活动议程活动内容08:30-08:50报到08:50-09:10活動开场Study4 - 陈科融(MVP)STB Chain Foundation - 劉海峰(MVP)MVP Program - Christina Liang(MVP CPM)09:10-10:00区块链让软件资产化成为现实刘海峰(MVP) - STBChain Foundation主席10:10-11:00基于Azure PaaS的网站应用刘元纶…

jzoj1404-菱形内的计数【模拟】

正题 题目链接:https://jzoj.net/senior/#main/show/1404 题目大意 给出一个菱形中有一些边&#xff0c;求有多少个中间没有边的平行四边形。 解题思路 我们将一个平行四边形拆成两个等腰三角形和一个平行于菱形中间对角线的平行四边形&#xff0c;我们可以判断上面那个等腰…

6、java中的排序算法

1、简介 排序是将元素按着指定关键字的大小递增或递减进行数据的排列&#xff0c;排序可以提高查找的效率 2、排序算法的分类 排序算法可大致分为四类七种&#xff0c;具体分类如下&#xff1a; 插入排序&#xff1a;直接插入排序、希尔排序 交换排序&#xff1a;冒泡排序、…

用.NET Core实现装饰模式和.NET Core的Stream简介

该文章综合了几本书的内容.某咖啡店项目的解决方案某咖啡店供应咖啡, 客户买咖啡的时候可以添加若干调味料, 最后要求算出总价钱.Beverage是所有咖啡饮料的抽象类, 里面的cost方法是抽象的. description变量在每个子类里面都需要设置(表示对咖啡的描述).每个子类实现cost方法, …

动态规划训练20 [Treats for the Cows POJ - 3186 ]

Treats for the Cows POJ - 3186 简单的区间DP&#xff0c;就不解释了。 #include<iostream> #include<cstdio> using namespace std; const int INF1e9; const int maxn2005; int n, a[maxn]; int dp[maxn][maxn]; int main() {scanf("%d",&n);for(…

7、java中的面向对象思想和体现

java是一种面向对象的程序设计语言&#xff0c;在程序中使用对象来描述具体的事物&#xff0c;当多个事物具有共同的特点时&#xff0c;可以将事物的共同特点进行抽象&#xff0c;然后封装成一个包含事物共同特点的集合&#xff0c;在java中叫做封装成一个类&#xff0c;可以将…

jzoj1405-电缆建设【贪心,最小生成树】

正题 题目链接:https://jzoj.net/senior/#main/show/1405 题目大意 两个平行于xxx轴的线上有若干个点&#xff0c;求连接所有点需要多少距离的线。 解题思路 在同一平行线上的相邻的连边&#xff0c;然后在不同的上面的话就离最近的两个&#xff0c;跑最小生成树即可。 code…

动态规划训练21 [FatMouse and Cheese HDU - 1078 ]

FatMouse and Cheese HDU - 1078 这道题需要说一说&#xff0c;定义dp[x][y]表示从点(x,y)出发&#xff0c;每次走不超过k步&#xff0c;所能吃到的最大量。 有点难搞的是&#xff0c;这里递归的顺序不好确定&#xff0c;所以采用自顶向下的记忆化搜索的方式&#xff08;不用担…

这个拖后腿的“in”

问题之源C# 7.2推出了全新的参数修饰符in&#xff0c;据说是能提升一定的性能&#xff0c;官方MSDN文档描述是&#xff1a;Add the in modifier to pass an argument by reference and declare your design intent to pass arguments by reference to avoid unnecessary copyin…

P4310-绝世好题【位运算,dp】

正题 题目链接:https://www.luogu.org/problem/P4310 题目大意 一个长度为nnn的序列&#xff0c;求一个最长的子序列使得每个数&\&&前一个数不为0。 解题思路 因为是&\&&不为0&#xff0c;所以只要有一位都为1即可。 用fif_ifi​表示以第iii个结尾…