java 2进制常量_java第二天(关键字、常量、进制等问题)

1:关键字(掌握)

(1)被Java语言赋予特定含义的单词

(2)特点:

全部小写。

(3)注意事项:

A:goto和const作为保留字存在

B:类似于Notepad++这样的高级记事本会对关键字有特殊颜色标记

2:标识符(掌握)

(1)就是给类,接口,方法,变量等起名字的字符序列

(2)组成规则:

A:英文大小写字母

B:数字

C:$和_

(3)注意事项:

A:不能以数字开头!

B:不能是java中的关键字!

C:区分大小写

(4)常见的命名规则(见名知意)

A:包全部小写

单级包:小写

举例:demo

多级包:小写,并用.隔开

举例:com.steve

B:类或者接口

一个单词:首字母大写

举例:Student、Demo

多个单词:每个单词首字母大写

举例:HelloWorld

StudentName

C:方法或者变量

一个单词:首字母小写

举例:name,main

多个单词:从第二个单词开始,每个单词首字母大写

举例:studentAge、showAllNames()

D:常量:全部大写

一个单词:大写

举例:PI

多个单词:大写,并用_隔开

举例:STUDENT_MAX_AGE

3:注释(掌握)

(1)就是对程序进行解释说明的文字

(2)分类:

A:单行注释//

B:多行注释/**/

C:文档注释(此注释是为了给写好的类或者方法写使用说明,最后可以导出API) /** */

(3)把HelloWorld案例写了一个带注释的版本。

后面我们要写一个程序的过程。

需求:  (明确这个方法需要什么功能)

分析:  (分析怎么实现这些功能)

实现:  (coding)

代码体现:(把代码改得易读简洁美观)

(4)注释的作用

A:解释说明程序,提高了代码的阅读性

B:可以帮助我们调试程序

后面我们会讲解一个更高端的一个调试工具(debug,打好程序断点,跟着走看运行顺序与执行情况)

4:常量(掌握)

(1)在程序执行的过程中,其值不发生改变的量

(2)分类:

A:字面值常量

B:自定义常量(后面讲)

(3)字面值常量

A:字符串常量 "hello"

B:整数常量12、23

C:小数常量12.345

D:字符常量'a'、'A'、'0'

E:布尔常量true、false

F:空常量null(后面讲)

(4)在Java中针对整数常量提供了四种表现形式

A:二进制由0,1组成。以0b开头。

B:八进制由0,1,...7组成。以0开头。

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

D:十六进制由0,1,...9,a,b,c,d,e,f(大小写均可)组成。以0x开头。

5:进制转换(了解)

(1)其他进制到十进制

系数:就是每一个位上的数值

基数:x进制的基数就是x

权:对每一个位上的数据,从右,并且从0开始编号,对应的编号就是该数据的权。

结果:系数*基数^权次幂之和。

(2)十进制到其他进制

除基取余,直到商为0,余数反转。

(3)进制转换的快速转换法

A:十进制和二进制间的转换

8421码。

B:二进制到八进制,十六进制的转换

6:变量(掌握)

(1)在程序的执行过程中,其值在某个范围内可以发生改变的量

(2)变量的定义格式:

A:数据类型 变量名 = 初始化值;

B:数据类型 变量名;

变量名 = 初始化值;

7:数据类型(掌握)

(1)Java是一种强类型语言,针对每种数据都提供了对应的数据类型。

(2)分类:

A:基本数据类型:4类8种

*B:引用数据类型:类,接口,数组

(3)基本数据类型

A:整数    占用字节数

byte    1

short      2

int                4

long              8

B:浮点数

float    4

double      8

C:字符

char              2

D:布尔

boolean         1

注意:

整数默认是int类型,浮点数默认是double。

长整数要加L或者l:        double d = 3.14159L

单精度的浮点数要加F或者f:       float f = 3.14F

8:数据类型转换(掌握)

(1)boolean类型不参与转换,只有true和false

(2)默认转换

A:从小到大

B:byte、short、char --> int --> long --> float --> double

C:byte、short、char之间不相互转换,直接转成int类型参与运算。

(3)强制转换

A:从大到小

B:可能会有精度的损失,一般不建议这样使用。

C:格式:

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

1a3f49df8a73a99cb8e7f552ff1a4b80.png

(4)思考题和面试题:

A:下面两种方式有区别吗?

float f1 = 12.345f;      //直接就是float类型float f2 = (float)12.345; //本来后面是double类型,强制转换成float类型后,把前4个字节截掉,只留下了后4个字节

B:下面的程序有问题吗,如果有,在哪里呢?

byte b1 = 3;byte b2 = 4;byte b3 = b1 + b2;    //这是类型提升问题,这儿编译会报错,因为byte类型的b1和b2做加法运算,它们会把结果转换成int类型,然后再把值赋给b3,但b3是byte类型,不能直接接受int类型的值

byte b4 = 3 + 4;   //这个编译不会报错,因为这种情况,编译器会直接看后面的值在不在byte范围内,如果在,就不报错

short s = 1;

s+= 1;            //正确,扩展的赋值运算符其实隐含了一个强制类型转换。

short s = 1;

s= s + 1;         //这是错误的,因为(s+1)要先转换成int类型再赋值给s。

C:下面的操作结果是什么呢?

byte b = (byte)130;

1       classDataTypeDemo7 {2 public static voidmain(String[] args) {3       //因为byte的范围是:-128到127。4       //而130不在此范围内,所以报错。5       //byte b = 130;6

7       //我们可以使用强制类型转换

8       byte b = (byte) 130;9

10       //结果是多少呢?

11       System.out.println(b);12         }13       }14       /*

15       分析过程:16       我们要想知道结果是什么,就应该知道是如何进行计算的。17       而我们又知道计算机中数据的运算都是补码进行的。18       而要得到补码,首先要计算出数据的二进制。19

20 A:获取130这个数据的二进制。21       00000000 00000000 00000000 1000001022       这是130的原码,也是反码,还是补码。23 B:做截取操作,截成byte类型的了。24 1000001025       这个结果是补码。26       C:已知补码求原码。27       符号位 数值位28 补码: 1 000001029

30       反码: 1 000000131

32       原码: 1 111111033 */

D:字符参与运算

是查找ASCII里面的值

'a'97

'A'65

'0'48

System.out.println('a');

System.out.println('a' + 1);

E:字符串参与运算

这里其实是字符串的连接

System.out.println("hello"+'a'+1);      //helloa1

System.out.println('a'+1+"hello");      //98hello  a的ASC码为97

System.out.println("5+5="+5+5);      //5+5=55

System.out.println(5+5+"=5+5");      //10=5+5

补充知识:

1.原码反码补码的讲解:

1794a08bcb3cd91d88f9c7efd799a100.png

2.进制概述:

24a8dbcda3a0b53a6f951b20f60f282a.png

3.其他进制到十进制的转换:

dbcf208a86214e55c32ad66e6e576c69.png

4.十进制到任意进制的转换:

b92042f70bf8c711276b3a0420e01446.png

5.快速的进制转换法:

0525594855b66ab0c07acd4b75ebf338.png

6.不同数据类型运算图解:

8dd78872e80f6be5d51fae8a90588ceb.png

7.进制练习:

1:得到下面数据的十进制值:

0b10101

=1*2^4 + 1*2^2 + 1*2^0

=16 + 4 + 1

=21

0123

=1*8^2 + 2*8^1 + 3*8^0

=64 + 16 + 3

=83

0x3c

=3*16^1 + c*16^0

=48 + 12

=60

2:得到下面数据的二进制,十进制,十六进制

52分别得到二进制,十进制,十六进制

得到二进制:

52 / 2 = 26 0

26 / 2 = 13 0

13 / 2 = 6 1

6 / 2 = 3 0

3 / 2 = 1 1

1 / 2 = 0 1

0b110100

得到八进制:

52 / 8 = 6 4

6 / 8 = 0 6

064

得到十六进制:

52 / 16 = 3 4

3 / 16 = 0 3

0x34

3:有符号数据表示法的练习

A:已知某数X的原码为10110100B,试求X的补码和反码。

符号位 数值位

原码: 1 0110100

反码: 1 1001011

补码: 1 1001100

B:已知某数X的补码11101110B,试求其原码。

符号位 数值位

补码: 1 1101110

反码: 1 1101101

原码: 1 0010010

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值