Java基础之常量、变量

四、常量

4.1 概述:

-在程序执行的过程中其值不可以发生改变

4.2 分类:

-字面值常量
      字符串常量
      整数常量:Java对整数常量提供了4中表现形式(二、八、十、十六进制);
      小数常量
      字符常量
      布尔常量
      空常量

4.3 关于进制:

4.3.1 概述:
-就是进位制,是人们规定的一种进位方法。
-规则:X进制,则表示逢X进一位;

计算机的电子元件的状态:开关
仅仅开关两个状态是不够表达我们常见的数据的:英文字母,数字,标点符号等。为了能便是更多的数据,国际化组织就规定:用8个这样的信号(开关)来表示一个数据,这个数据单位叫:字节。
后来,通过数字1,0来表示开和关;那么1个字节 等于有8位(bit)。
由这样的1,0组成的数据就是二进制数据;

单位转换:
1byte = 8bit
1k = 1024byte
1m = 1024k
1g = 1024g
1t = 1024g

4.3.2表现形式:

二进制:有这样的1,0组成的数据就是二进制。以0b开头。

八进制:Octal,缩写OCT或O,一种以8为基数的计数法,采用0,1,2,3,4,5,6,7八个数字,逢八进1。以0开头

十进制:由0,1,2...9组成。整数默认是十进制。

十六进制:它由0-9,A-F组成,字母不区分大小写。与10进制的对应关系是:0-9对应0-9;A-F对应10-15;N进制的数可以用0~(N-1)的数表示,超过9的用字母A-F。以0x开头

4.3.3相互转换:

1)二进制转化成八进制

-A.把二进制的数据,从右开始,每三位一组合,最左边不够的时候补0。
-B.分别计算出对应的十进制数值,
-C.再把每个十进制的数据组合起来,就是一个八进制。
二进制转八进制

2)二进制转化成十六进制

-A.把二进制的数据,从右开始,每四位一组合,最左边不够的时候补0。
-B.分别计算出对应的十进制数值,
-C.再把每个十进制的数据组合起来,就是一个十六进制。
二进制转十六进制

3)任意进制转化为十进制

按权求和:
系数:每一个位上的数据值本身就是系数。
基数:x进制的基数就是x
权:针对每一个位上的数据进行编号,从右边并且是从0开始编号,这个编号就是该位上数据的权值
x进制转化成十进制:每一个位上的系数*基数的权次幂 之和。
十进制转化十进制,推导出规律


按权求和的推导

4)十进制他转化其他进制

除基取余,直到商为0,余数反转;
52转二进制:0b110100
52 / 2 = 26 余0
26 / 2 = 13 余0
13 / 2 = 6 余1
6 / 2 = 3 余0
3 / 2 = 1 余1
1 / 2 = 0 余1
52转八进制:064
52 / 8 = 6 余4
6 / 8 =0 余6
52转十六进制:0x34
52 / 16 = 3 余4
3 / 16 = 0 余3

5)任意的x进制到y进制的转换?

以十进制为桥梁:
x进制 转 十进制
十进制 转 y进制

6)二进制与十进制之间的快速转换法:8421码
(一知半解,暂不考虑)

4.4 有符号的数据表示法:

4.4.1 概述:
-在计算机内,有符号数据的表示法:原码、反码、补码。
-所有数据的运算都是采用数据对应的二进制的补码进行的。
4.4.2 原码、反码、补码:
原码、反码、补码定义.png
原码、反码、补码练习:
练习1

练习2

五、变量

5.1 概述:

-在程序执行过程中,在某个范围内变化的量
-可以理解成变量就是在内存中的一小块区域,使用变量名来访问这一块区域,区域中的内容就是变量的值;

5.2 格式:

数据类型 变量名 = 初始化值;此格式是固定的;

5.3 关于数据类型

5.3.1 概述:

Java是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同的大小的内存空间。

数据类型
基本数据类型及其字节数
5.3.2 注意事项:

A.整数类型默认值是int,浮点类型默认是double。(在运算是会把byte转换成int再运算)

B.声明long类型时,后面要加上“L”或者"l";

C.声明float类型,后加“F”或"f",否则可能损失精度,因浮点数据默认是double的。

D.默认转换:1)byte,short,char--int--long--float--double(从小字节转到大字节,避免可能损失精度)

2)byte,short,char之间不能相互转换,他们参与运算首先转成int类型;
char在转化int类型时对应一张ASCII表,其中有3个关健对应值须记住
'0'-----48
'A'-----65
'a'-----97

练习:

衍生:当字符串+其他类型时
字符串+其他类型

E.强制转换:目标类型 变量名 = (目标类型)(被转换的数据)

F.运算时直接是常量想加,查看注意A中的图的解释

5.3.3 练习

5.4 使用变量的主意事项:

A.作用域:变量定义的位置决定了他的作用域,定义在方法内,作用域就是这个方法体,定义在类中作用域就是这个类。相同的作用域中不能丁两个同名变量。
B.初始化值:没有初始化值不能直接使用。
C.在一行上建议之定义一个变量。可以多个不算错,书写不规范。

5.5 思考:

1.变量相加和常量相加的区别?答案:注意A与F
2.强制转换数据移除后的结果怎么算?答案:练习

byte,short他们接收的其实是int类型的值,它们会自己做一个检测,如果超出他们所能表达的数值范围则就报错了。byte b = 128;//就报错。

byte临界值的问题(-128~127)
byte b1 = 127;//无错
byte b2 = 128;//打印出来的是-128
byte b3 = 129;//打印出来的是-127
byte b4 = 130;//打印出来的是-126
128的二进制是10000000,-128的二进制也可以是:10000000(这个的1既是符号位也是数值位),其他类型的临界值也是这样的;

数据类型的默认转换:
byte 、char、short --int -- long --float --double
其中long是8字节,而float是4字节,为什么long还能默认转成float呢?
A.long与float的底层存储结构不同
1) long是整数类型,直接是1,08位那么存储;
2) float是浮点类型,是带小数的二进制换算,存储的是有效数字位(科学计数法)
B.float所表示的数值范围要大于long类型所表示的数值范围的;
1) long表示的数值范围:2^63-1
2) float表示的数值范围:3.410^38
3.4
10^38 > 210^38 > 28^38 > 22338 = 22^114 > 2^63-1

Java语言中的字符char可以存储汉字吗?
可以的,因为Java中的char是2个字节的;一个汉字是占2个字节的;Java的编码是采用Unicode编码;

float类型的数据在内存中是怎么存储的?(了解)
SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
S表示浮点数正负
E指数加上127后的值得二进制数据
M底数
举例:17.625在内存中的存储
首先要把17.625换算成二进制:10001.101
整数部分,除以2,直到商为0,余数反转。
小数部分,乘以2,直到乘位0,进位顺序取。
在将10001.101右移,直到小数点前只剩1位:
1.0001101 * 2^4 因为右移动了四位
这个时候,我们的底数和指数就出来了
底数:因为小数点前必为1,所以IEEE规定只记录小数点后的就好。所以,此处的底数为:0001101
指数:实际为4,必须加上127(转出的时候,减去127),所以为131。也就是10000011
符号部分是整数,所以是0
综上所述,17.625在内存中的存储格式是:
01000001 10001101 00000000 00000000

参考书籍视频:
-学习视频:黑马程序员_Java基础视频-深入浅出精华版
-阅读书籍:Java核心技术 卷I(机械工业出版社)
          API1.8
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,386评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,142评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,704评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,702评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,716评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,573评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,314评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,230评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,680评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,873评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,991评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,706评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,329评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,910评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,038评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,158评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,941评论 2 355

推荐阅读更多精彩内容

  • 墨语添香阅读 221评论 0 9
  • 到现在我还幻想着有那么一天,在深夜、清晨或者午后,你会给我发一条长长的信息,简短一点也没关系告诉我你想回心转意。
    S栋阅读 185评论 0 0