百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

浅谈JAVA中的基本变量 浅谈java中的基本变量操作

lipiwang 2024-10-20 10:13 11 浏览 0 评论

作为一门面向对象编程的语言,JAVA也不例外,拥有大多数编程语言都具有的变量类型:值类型,一般情况下,将JAVA中的值类型称为基本类型,其它的类型则为引用类型。本次讨论研究的就是基本类型

学过C语言的朋友们都知道,在C语言中包含的数据类型有short、int、long、char、float、double,JAVA作为C语言的“升级版”,同时增加了byteboolean,严格来说C语言中是没有boolean类型的,在进行条件判断的时候,一般将非0的值作为true,0作为false。JAVA中单独定义了一种变量类型用于条件判断,且无法像C语言那样直接将数字作为boolean作为判断条件,请看以下代码:

 int flag = 1;
 //C语言版本:可将非0值看作true,0看作false
 if (flag) {
     printf_s("Hello World");
 }
 //JAVA版本:编译时会将 flag != 0 编译为boolean类型
 if (flag != 0) {
     System.out.println("Hello World");
 }
 //编译的class文件(部分),供参考
 public static void main(String[] var0) {
     boolean var1 = true;
     boolean var2 = false;
     if (var1) {
         System.out.println("Hello World");
     }
 }

上面简单的对JAVA的boolean类型作了一个小扩展,这里开始讲解JAVA的八大基本类型,下表就表示了JAVA中的基本数据类型以及它们的取值范围。

这时候就有小伙伴问啦,为什么整数要用四个数据类型来分开表示,且它们的取值范围是如何来的呢?

为什么整数要用四个数据类型来分开表示整型呢?

那是因为最早的个人计算机内存实在太小了,1976年苹果发布的Apple II也只有4KB内存。所以要想设计一个好的程序,必须竭尽所能地节省内存。而上面四种数据类型正是对应不同的存储大小。一个int类型能储存接近22亿大的数字,它占4字节,在那时候你却用它来储存人的年龄,那项目经理就会对你投以“和善”的目光。又或者你要用int类型来储存马云的钱(不考虑小数),马云听了想打人[笑哭][笑哭][笑哭]。

它们的取值范围是如何来的呢?

计算机中规定:一个二进制数为1Bit,8比特为一个字节(Byte),字节(Byte)也是电脑中表示信息含义的最小单位。也就是说你在计算机中哪怕存了一个0,也要用8bit来表示0000_0000,那么使用1字节最多能表示2^8-1个二进制数字也就是0~255个。那么负数呢?正好正负也是两种状态,同样完美契合二进制,所以就规定,最高位(第一位)用来代表正负,0为正、1为负。那么能用来表示有效数的bit就只有7位了,只能表示2^7-1个数,也就是0~127。算上最高位的符号位,1字节能表示的有效数就是-127~127

上面的结论看上去好像没什么毛病,但小伙伴们请思考一个问题0000_0000、1000_0000,这两个分别代表什么呢?+0和-0?小学知识就告诉我们0是不分正负的。所以为了不浪费的精神,人们规定在Byte里面1000_0000代表-128。那么1个字节最终能表示的有效数为-128~127,这也是小伙伴们在学习一门编程语言时整型的有效范围为什么负数总比正数多一个。以JAVA为例,规定short占两个字节,也就是一个short数据类型用16个二进制来表示,那么它能表示的最大范围就是2^{15}-1(去掉最高位的符号位),算上符号有效范围就-32768~32767,int占4个字节,long占8个字节,小伙伴们可以动手算一算它们能表示的有效数范围。它叫计算机,又能表示数,那么就要发挥它的计算功能。二进制的计算和十进制原理一样,只是在计算中逢2进1,如下:

 #比如1+1
  0000 0001
 +0000 0001
 =0000 0010

低进制向高进制转换的公式为:以上面2进制0000 0010为例:最高位符号位不计入

一切要是都这么美好该多好,请看一个例子:正一加上负一

    0000 0001
 +1000 0001
 =1000 0010

通过上面的公式代入一计算,我滴的乖乖,等于-2。如何解决呢?这个世界总不缺聪明的人,这时候就有人提出了补码和反码的概念:而计算机没有真正意义上的减法,所以其实在计算机中,为了方便计算,数字都是以补码的形式储存。

正数:正码、反码、补码均为其本身。

负数:正码不变。反码符号位不变量,其它位取反。补码在反码的基础上加一。

那么来换算一下-1的反码

 1000 0001  #-1的原码
 1111 1110  #反码
 1111 1111  #补码
 
 #补码代入运算  1 + -1
     0000 0001
 + 1111 1111
 =10000 0000 #只有8位有效数字,所有最高位的1在参与运算后舍弃
     0000 0000 #舍弃后最终结果

至于它们在内存中是如何储存的,我觉得Excel是一个非常好的示范,我们把一个格子当作一个储存单位,它只能储存一个0或1,那么要储存 0和1 这两个数字,在内存是如何储存的呢(以Byte为例)

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

因为规定了8bit为一个有效储存单位,而在声明变量的时候声明的byte类型,占1字节也就是8比特,那么每8位为一个有效数字,计算机就依次读取8bit然后进行转换,就得到了0和1。如果这时咱们规定每四位为一个有效数字,那么上面的表格就能表示四个十进制有效数字,分别为:0 0 0 1。其余的数据类型依此类推。

到此为止,小伙伴们应该就知道为什么要出现四种不同的表示整型的数据类型了吧,以及计算机是如何进行计算的,待下期咱们来谈一下比较复杂的浮点数以及更多内存相关概念。

相关推荐

微软Office Open XML中的数字签名漏洞

MicrosoftOffice是最广泛使用的办公文档应用程序之一。对于重要文件,如合同和发票,可以对其内容进行签名,以确保其真实性和完整性。自2019年以来,安全研究人员发现了针对PDF和ODF等其...

Javaweb知识 day12 XML(javaweb中xml作用)

一、XML:1.1概念:ExtensibleMarkupLanguage可扩展标记语言*可扩展:标签都是自定义的。<user><student>1.2功能:...

易筋洗髓功——内外同修方可致远(易筋洗髓功口诀)

达摩祖师所传易筋、洗髓两经,一分为二,二实为一,无非以方便法门接引众生,而归于慈悲清净之心地。修炼《易筋经》是为强身健体,修炼《洗髓经》是为修心养性,此二者相辅相成,内外兼修,缺一不可。这是一套传统中...

《增演易筋洗髓内功图说》17卷(1930年(清)周述官撰 4

《增演易筋洗髓内功图说》17卷(1930年(清)周述官撰 5

道家洗髓功修炼要义,洗髓功如何做到丹田聚气?

不管是道家洗髓功,还是洗髓经,其修炼的关键点就在于得气、行气、聚气...那么,作为洗髓功修炼者,具体该怎么做呢?在实际修炼中,就洗髓功的修炼方法来讲,我们可以简单的归纳为修炼三部曲,其具体表现如下:一...

「清风聊练功」师门传我易筋经:聊聊我的学习经历和正身图感受

一个人的眼界认识,是随着是自身的知识积累和水平不断成长的。开篇为什么要说这么一句呢?是从我的学习经历上感受明显的这句话:一处不到一处迷。我们学传统武术,内功功法,也是从小白到明白一步步走的,走的越远,...

内功外练功介绍(练内功 外功)

这里介绍我练习的两套动功心得体会。是老道长的八部金刚功、长寿功和增演易筋洗髓经。八部金刚功外练奇经八脉,练出健康强壮的好身体还是可以的,长寿功也是内练功法。这部功法很好的预防效果。这个大家都认同的。说...

孔德易筋洗髓大全注解(下)(孔德易筋经教学视频)

...

《增演易筋洗髓内功图说》17卷(1930年(清)周述官撰 1

少林空悟老师珍藏

国术典籍:《增演易筋洗髓内功图说》【2024年8月编校】

《增演易筋洗髓内功图说》系养生气功著作,全书共十八卷。清周述官编撰于光绪二十一年(1895年)。清光绪十九年(1893年),僧人静一空悟将少林功法传授于周述官,并将《增益易筋洗髓内功图说》十二卷(按,...

小说:自媒体小白的修道之路-洗髓(自媒体小白运营技巧)

谁应了谁的劫,谁又变成了谁的执念。当沧海遗忘了桑田,这世间又多了一个不回家的人!异域空间中,知生缓缓起身,目光扫了一下小帝后,又转身看向画板上的那朵白色蒲公英,自言道:“白瑛,这一世我们莫要再辜负了!...

这才是少林洗髓经真相:它是静功和导引术与八段锦暗合

不少朋友误解易筋经和洗髓经,将其简单归为强力呼吸的吐纳功以及为了提升房中的关窍功。事实上易筋经和洗髓经是两部功法:易筋经主要为炼体,包含以膜论为核心的十二月怕打筋膜法,以及辅助的呼吸、导引功法;洗髓经...

孔德易筋洗髓大全注解(上)(孔德易筋经洗髓经视频)

...

洗髓经传承与心得(二)(《洗髓经》)

...

取消回复欢迎 发表评论: