Day02 注释 常量 进制 变量 基本数据类型 运算符

一、注释

1、定义

用于对程序进行说明的文字,就可以看成是注释。

2、注释的格式

A:单行注释

**举例://我们好

B:多行注释

**举例:

/*

我们都是

好孩子

*/

C:文档注释

**举例:

/**

@author itcast

@version V1.0

*/

3、注释的用途

A:解释说明程序,给人看的。

B:用于调试程序。

:用于面试

写一段代码?

a:注释是否完整

b:格式是否良好

注意:A-单行可以嵌套单行注释,也可以嵌套多行注释;

多行可以嵌套单行注释,不能嵌套多行注释;

文档注释可以嵌套单行注释,不能嵌套多行注释。

小插曲:写程序的好习惯——

A:明确需求;---要干什么?

B:寻找思路;---用什么技术进行问题的解决?

C:细化步骤;---每一步如何进行实现?

D:编写代码。

二、常量

(1)在程序的运行过程中,其值是不能改变的量。

(2)常量的分类

A:整数常量 10,-10

B:小数常量 12.5

C:布尔常量 true,false

三、工具的使用

(1)灵格斯翻译家/金山词霸/有道词典

(2)截图工具(windows7自带截图工具)

(3)EditPlus

A:把EditPlus添加至右键菜单中

**安装时选中

**通过工具--首选项--常规--进行选中

B:如果去掉备份文件(.bak)

**工具--首选项--文件--去掉保存时创建备份文件前面的勾

四、进制转换

(1)进制:简单的说,就是计数的方式。x进制就是逢x进一。

(2)java语言中,对整数有3中表现形式

A:十进制

B:八进制

C:十六进制

(3)进制的由来:进制是由电信号来的。

A:二进制

**逢2进1

**由0,1组成

B:八进制

**逢8进1

**由0-7组成

**用0开头表示八进制

(4)不同进制的数据演示。

(5)进制转换

A:其他进制到十进制

**规律:把系数*基数的权次幂相加即可。

**系数

**基数

**权

**举例

***二进制到十进制:1101 对应 13

***八进制到十进制:056 对应 46

***十六进制到十进制:0xF4 对应 244

B:十进制到其他进制转换

**规律:除基取余,直到商为0,最后,余数反转就是结果。

**举例

***十进制到二进制:60 对应 111100

***十进制到八进制:60 对应 074

***十进制到十六进制:60 对应 0x3C

**技巧

***十进制到八进制

****十进制--二进制--八进制

****13 -- 1101 -- 15 (015)

***二进制到八进制:

****从右往左,每三位一组合,左边不够用0补。

****把组合后的每一位换算成十进制数据。

****最后,从左往右,把结果进行组合即可。

***十进制到十六进制

****十进制--二进制--十六进制

****13 -- 1101 -- 13 (0xD)

***二进制到十六进制:

****从右往左,每四位一组合,左边不够用0补。

****把组合后的每一位换算成十进制数据。

****最后,从左往右,把结果进行组合即可。

****对应位上的数据,应该是十六进制的。

五、在计算机内,有符号数有3种表示法:原码、反码和补码。

(1)原码

A:所谓原码就是二进制数的有符号表示法,即最高位为符号位,

“0”表示正,“1”表示负,其余位表示数值的大小。 

举例: 符号位  数值位

+7         0             0000111

-7         1             0000111

B:原码不能直接参加运算,可能会出错。例如数学上,1+(-1)=0,而在二进制中原码

00000001+10000001=10000010,换算成十进制为-2。显然出错了。 

在计算机中,数值一律用补码来表示(存储)。 

主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。

另外,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。 

(2)反码

A:正数 与原码相同

B:负数 符号位不变,数值位按位取反,0变1,1变0。

举例: 符号位  数值位

+7         0             0000111

-7         1             1111000

(3)补码

A:正数 与原码相同

B:负数 反码加1。

举例: 符号位  数值位

+7         0             0000111

-7         1             1111001

练习:

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

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

六、变量

(1)在程序的运行过程中,其值是可以改变的量。

A:是内存中的一小块存储区域。

B:用于存储数据。

(2)声明变量的格式:

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

   **byte b = 10;

   **System.out.println(b);

B:数据类型 变量名;

= 初始化值;

   使用变量

   **byte b;

   **b = 20;

   **System.out.println(b);

(3)好处:该空间可以重复使用。

(4)什么时候使用变量呢?当要使用的数据是不确定的时候。

七、数据类型

1、分类

A:基本数据类型

B:引用类型(类,接口,数组)

2、基本数据类型

4类8种,区别在于他们在内存中的存储空间大小不一样。

A:整数

**字节 byte 占1个字节

**短整型 short 占2个字节

**整型 int 占4个字节

**长整型 long 占8个字节 其后跟L或者l标示

B:浮点数

**单精度 float 占4个字节 其后跟F或者f标示

**双精度 double 占8个字节

C:字符

**char 占2个字节

D:布尔

**boolean 占1个字节 true,false

注意:整型默认是int;浮点型默认是double。

3、数据类型的转换

A:数据参与运算

**参与运算的数据类型要一致。

B:转换规则

**布尔型不能参与运算。

整形,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则:

**:容量小的类型默认转换为容量大的数据类型;数据类型按容量大小排序为:

byte,short,char->int->long->float->double

byte,short,char之间不会互相转换,他们三者在计算时首先会转换为int类型

**:容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出;使用时要格外注意。

**:有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算。

八、运算符

1、算数运算符 +,-,*,/,%,++,- -

A:%

**左边小于右边,结果是左边

**左边等于右边,结果是0

**左边大于右边,结果是余数

**余数的正负,取决于左边的正负

**应用:%2 (结果是0,1)

B:++,--

**单独使用,放在操作数前后结果一样。 a++;++a;

**参与操作(运算,赋值,打印)时,放在操作数的前面,数据本身改变,再参与操作。

int a = 12; b = ++a;  //a=13,b=13;

**参与操作(运算,赋值,打印)时,放在操作数的后面,数据先进行临时存储,数据本身改变,最后将存储的数据进行赋值。

int a = 12; b = a++;  //a=13,b=12;

C:+

**正号 

**加法运算符

**字符串连接符 

***"hello"+'A'+1 结果是helloA1

***'A'+1+"hello" 结果是66hello

2、赋值运算符 =,+=,-=,*=,/=,%=

A:int x = 3;//把3赋值给int类型变量x

B:x += 3; //x = x + 3;  把左边和右边相加赋给左边。

C:左边必须是变量。

D:面试题

short s = 2;

s = s + 2;

s += 2; //+= 有一个自动强制转换的过程

哪一行会报错?为什么?

3、关系运算符 ==,!=,>,>=,<,<=

A:比较运算符的结果都是boolean型,也就是要么是true,要么是false。

**System.out.println(3==3);  结果是true

**System.out.println(3!=3);  结果是false

4、逻辑运算符 &,|,^,!,&&,||

逻辑运算符用于连接boolean类型的表达式

/*

&运算符:与

左边       右边 结果 

true        true true

false        true     false

true        false     false

false        false    false

简单的说:有false则false。

*/

/*

^运算符:异或

左边       右边 结果 

true       true false

false      true     true

true       false    true

false      false    false

简单的说:相同则false,不同则true。

*/

/*

&&:短路与

&:与

区别:&&是左边为false了,右边就不操作了。

左边是false,右边还得继续操作。

*/

5、三元运算符 (?:)

A:(条件表达式)?表达式1:表达式2;

**如果条件表达式为true,运算后的结果是表达式1;

**如果条件表达式为false,运算后的结果是表达式2;

B:表达式:用运算符连接起来的式子就叫表达式

**算术表达式 a+b

**赋值表达式 a+=2;

**关系表达式 (a+b+c) > (a+b)

**逻辑表达式 (a<b) || (c>d);

**三元运算符 100>200?(300>200?100:200):200; 结果是:200

C:特点:运算完后,肯定有结果。

6、位运算符 &,|,^,~,>>,>>>,<<

位运算,要求我们先把数据转换成二进制。

A:System.out.println(4 & 3);

B:System.out.println(4 | 3);

C:System.out.println(4 ^ 3);

**一个数对同一个数异或两次,该数不变。

**应用:加密。

D:System.out.println(~4);

E:<< 就是将左边的操作数在内存中的二进制数据左移右边操作数指定的位数,

0。相当于乘与2的移位数次幂

   2<<4-----2*2^4

F:>> 右移稍微复杂一点,如果最高位是0,左边被移空的位就填入0;如果最高位是1,左边被移空的位就填入1。相当于除以2的移位数次幂

G:>>> 无论最高位是1还是0,左边被移空的高位都填入0。

讲一个应用。通过10进制获取十六进制的数。

***1&1=1 0&1=0 发现,任何数和1做位与运算,结果不变。

通过此规律,我们就可以取得任意二进制的多少位

***num = num >>> 4;

   num & 15

   取得倒数第二个四位。