开发日报
部门: **大数据开发六部
姓名:阡陌飞絮
日期:2020.10.23
说明:某些转自百度及CSDN,侵删
大纲
一、二进制与十进制,八进制,十六进制之间的互换及科学计数法
二、Java标识符的命名规则及关键字
三、Java的基本数据类型(4大类,8种)及转换
四、浮点数二进制的表示方法(原码、反码,补码,移码及互换)
五、Java运算符、分隔符、转义字符、注释
六、自我介绍
学习日志总结
一、二进制与十进制,八进制,十六进制之间的互换
1、了解进制
在基数b的位置记数系统(其中b是一个正自然数,叫基数),b个基本符号(或者叫数字)对应于包括0的最小b个自然数。 要产生其他的数,在数中的位置要被用到。最后一位的符号用它本身的值,向左一位其值乘以b。一般来讲,若b是基底,我们在b进制系统中的数表示为
的形式,并按次序写下数字a_0,a_1,a_2,…a_k。这些数字是0到b-1的自然数 。
一般来讲,b进制系统中的数有如下形式:
数 b^k 和 b^(-k) 是相应数字的比重 。
2、二进制及其他进制转换
具体的转换分为以下9种:
1.十进制转2进制
2.二进制转十进制
3.十进制转八进制或者十六进制有两种方法
4.八进制或者十六进制转成十进制
5.八进制转二进制
6.二进制转八进制
7.二进制转十六进制
8.十六进制转二进制
9.八进制与十六进制之间的转换
(1)十进制转2进制
方法为: 十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为止。
(2)二进制转十进制
方法为: 把二进制数按权展开、相加即得十进制数。
(3)十进制转八进制或者十六进制有两种方法
第一: 间接法—把十进制转成二进制,然后再由二进制转成八进制或者十六进制。
第二: 直接法—把十进制转八进制或者十六进制按照除8或者16取余,直到商为0为止。
(4)八进制或者十六进制转成十进制
方法为: 把八进制、十六进制数按权展开、相加即得十进制数。
(5)八进制转二进制
方法为: 八进制数通过除2取余法,得到二进制数,对每个八进制为3个二进制,不足时在最左边补零。
(6)二进制转八进制
方法为: 3位二进制数按权展开相加得到1位八进制数。(注意事项,3位二进制转成八进制是从右到左开始转换,不足时补0)。
(7)二进制转十六进制
方法为: 与二进制转八进制方法近似,八进制是取三合一,十六进制是取四合一。(注意事项,4位二进制转成十六进制是从右到左开始转换,不足时补0)。
(8)十六进制转二进制
方法为: 十六进制数通过除2取余法,得到二进制数,对每个十六进制为4个二进制,不足时在最左边补零。
(9)八进制与十六进制之间的转换有两种方法
第一种: 他们之间的转换可以先转成二进制然后再相互转换。
第二种: 他们之间的转换可以先转成十进制然后再相互转换。(编程建议使用这种)
总结1: 十进制转二进制,除2取余法 十进制转八进制,除8取余法 十进制转十六进制,除16取余法 (当然也可以十进制转二进制,然后转8进制或16进制)
总结2: 二进制转十进制,各位数*2^n 八进制转十进制,各位数*8^n 十六进制转十进制,各位数*16^n
二、Java标识符的命名规则及关键字
1、标识符命名规则和风格
-
Java总体命名规范名称只能由字母、数字、下划线、$符号组成。代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。
-
不能以数字开头。
-
称坚决不能使用Java中的关键字。
-
坚决不允许出现中文(可以编译中文)。代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。 说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式 也要避免采用。
-
类名使用 UpperCamelCase 风格,必须遵从驼峰形式,但以下情形例外:DO / BO / DTO / VO / AO 。
**正例:**MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion
-
方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵从 驼峰形式。 正例: localValue / getHttpMessage() / inputUserId
-
常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。
正例:MAX_STOCK_COUNT
2、关键字
abstract | assert | boolean | break | byte |
---|---|---|---|---|
case | catch | char | class | const |
continue | default | do | double | else |
enum | extends | final | finally | float |
for | goto | if | implements | import |
instanceof | int | interface | long | native |
new | package | private | protected | public |
return | strictfp | short | static | super |
switch | synchronized | this | throw | throws |
transient | try | void | volatile | while |
保留字
goto | const | false |
---|---|---|
true | null |
详解:(待讲后补充)
三、Java的基本数据类型(4大类,8种)及转换
1、整数型
(1)byte:
- byte 数据类型是8位、有符号的,以二进制补码表示的整数;
- 最小值是 -128(-2^7);
- 最大值是 127(2^7-1);
- 默认值是 0;
- byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;
- 例子:
byte a = 100,byte b = -50;
(2)short:
- short 数据类型是 16 位、有符号的以二进制补码表示的整数
- 最小值是 -32768(-2^15);
- 最大值是 32767(2^15 - 1);
- Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;
- 默认值是 0;
- 例子:
short s = 1000,short r = -20000;
(3)int:
-
int 数据类型是32位、有符号的以二进制补码表示的整数;
-
最小值是 -2,147,483,648(-2^31);
-
最大值是 2,147,483,647(2^31 - 1);
-
一般地整型变量默认为 int 类型;
-
默认值是 0 ;
-
例子:
int a = 100000, int b = -200000;
(4)long:
-
long 数据类型是 64 位、有符号的以二进制补码表示的整数;
-
最小值是 -9,223,372,036,854,775,808(-2^63)** ;
-
最大值是 9,223,372,036,854,775,807(2^63 -1) ;
-
这种类型主要使用在需要比较大整数的系统上;
-
默认值是 0L;
-
例子:
Long a = 100000L,Long b = -200000L;
"L"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,不容易分辩。所以最好大写。
2、布尔型boolean:
-
boolean数据类型表示一位的信息;
-
只有两个取值:true 和 false;
-
这种类型只作为一种标志来记录 true/false 情况;
-
默认值是 false;
-
例子:
boolean one = true;
3、字符型
-
char类型是一个单一的 16 位 Unicode 字符;
-
最小值是 \u0000(即为0);
-
最大值是 \uffff(即为65,535);
-
char 数据类型可以储存任何字符;
-
例子:
char letter = 'A';
- ASCLL码的范围是0~127
- ISO-Latin-1(ISO-8859-1)码的范围是0~255
- CBK、GB2312是中国的标准码,是8位
- CUTF-8 是美国通用,一个字母占一个字节占8位,一个汉字占3个字节24位
- Unicode是万国码,几乎 能表示迄今为止人类语言的所有字符集,是16位
4、浮点型
(1)float:
-
float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;
-
float 在储存大型浮点数组的时候可节省内存空间;
-
默认值是 0.0f;
-
浮点数不能用来表示精确的值,如货币;
-
例子:
float f1 = 234.5f;
(2)double:
-
double 数据类型是双精度、64 位、符合IEEE 754标准的浮点数;
-
浮点数的默认类型为double类型;
-
double类型同样不能表示精确的值,如货币;
-
默认值是 0.0d;
-
例子:
double d1 = 123.4;
5、数据类型转换
(1)自动(隐式)类型转换:从小类型到大类型,不需要强制转换符
int a = 250;
double b = a;
System.out.println(b);
char向高级类型(整型)转换时,会转为对应ASCII码的值
char c = 'c';
int i = c;
System.out.printf(i);
(2)强制类型转换:从大类型到小类型,需要强制转换符实现强制转换
强制转换符:(需要转换成的类型)变量
byte,short,char是同一级的,不能自动互相转换——进行强制类型转换
int a=99;
short i = (short)a;
byte j = (byte)a;
char k = (char)a;
float n = (float)a;
double m = (double)n;
System.out.println(i);
System.out.println(j);
System.out.println(k);
System.out.println(n);
System.out.println(m);
四、浮点数二进制的表示方法(原码、反码,补码,移码及互换)
把一个数的有效数字和数的范围在计算机的一个存储单元中分别予以表示。这种把数的范围和精度分别表示的方法,相当于数的小数点位置随比例因子的不同而在一定范围内可以自由浮动,所以称为浮点表示法。
在计算机中一个任意二进制数N可以写成: N=2^e.M
其中M称为浮点数的尾数,是一个纯小数。e是比例因子的指数,称为浮点数的指数,是一个整数。比例因子的基数2对二进记数制的机器是一个常数。
在机器中表示一个浮点数时,一是要给出尾数,用定点小数形式表示。尾数部分给出有效数字的位数,因而决定了浮点数的表示精度。二是要给出指数,用整数形式表示,常称为阶码,阶码指明小数点在数据中的位置,因而决定了浮点数的表示范围。浮点数也要有符号位。
在计算机二进制的世界中,阶码的四位是补码
原码是最初的四个二进制码 反码是除第一个表示正负的码的以外的相反,补码是在反码的基础上+1
eg:原码:0101——反码:0010——补码:0011(就是表上说的E)
eg:
1 0011 1101 S=1 E=0011 M=1101
求浮点型的取值范围的时候 ,将尾码前面加小数点 (1.1101),算阶码(补码(0011))的原码(倒推,先减1(0010)得到反码,再进行反码,得到原码(0101))的十进制值(5),以十进制值为指数,然后得到该值的取值范围(1.1101*10^5)——此为科学计数法表示的
然后得出其取值范围为
按IEEE754标准,32位浮点数和64位浮点数的标准格式为
不论是32位浮点数还是64位浮点数由于基数2是固定常数,对每一个浮点数都一样,所以不必用显示方式来表示它。
32位的浮点数中,S是浮点数的符号位,占1位,安排在最高位,S=0表示正数,S=1表示负数。M是尾数,放在低位部分,占用23位,小数点位置放在尾数域最左(最高)有效位的右边。E是阶码,占用8位,阶符采用隐含方式,,即采用移码方法来表示正负指数。移码方法对两个指数大小的比较和对阶操作都比较方便,因为阶码域值大者其指数值也大。采用这种方式时,将浮点数的指数真值e变成阶码E时,应将指数e加上一个固定的偏移值127(01111111),即E=e+127。
由于计算机不方便进行减法运算,从而移码的出现是为了是计算机更快速方便的进行计算,使负位的二进制数整体从负移到正,从而都为正值,加法运算更快,-127—126整体+127+1——1—254
为了提高数据的表示精度,当尾数的值不为0时,尾数域的最高有效位应为1,这称为浮点数的规格化表示。否则以修改阶码同时左右移动小数点位置的办法,使其变成规格化数的形式。
在IEEE754标准中,一个规格化的32位浮点数x的真值表示为
x = (-1) ^s X(1.M)X 2^(E-127)
e = E - 127
其中尾数域所表示的值是1.M。由于规格化的浮点数的尾数域最左位(最高有效位)总是1,故这一位经常不予存储,而认为隐藏在小数点的左边。于是用23位字段可以存储24位有效数。
64位的浮点数中符号位1位,阶码域11位,尾数域52位,植树偏移值是1023.因此规格化的64位浮点数x的真值为
x = (-1)s X(1.M)X 2^(E-1023)
e = E - 1023
例题
(1) 问题:** 若浮点数x的754标准存储格式为(41360000)16,求其浮点数的十进制数值。
解:将16进制数展开后,可得二进制数格式为
指数e=阶码-127=10000010-01111111=00000011=(3)10
包括隐藏位1的尾数1.M=1.011 0110 0000 0000 0000 0000=1.011011
于是有
x=(-1)^S X 1.M X 2^e=+(1.011011) X 2^3 = +1011.011=(11.375)10
(2)问题:将数(20.59375)10转换成754标准的32位浮点数的二进制存储格式。
解:首先分别将整数和小数部分转换成二进制数:
20.59375 = 10100.10011
然后移动小数点,使其在第1、2位之间
10100.10011 = 1.010010011 X 2^4 e = 4
于是得到
S = 0, E = 4 + 127 = 131, M = 010010011
最后得到32位浮点数的二进制存储格式为
0100 0001 1010 0100 1100 0000 0000 0000 = (41A4C000)16
五、Java运算符、分隔符、转义字符、注释
1、运算符
(1)算术运算符
算术运算符用在数学表达式中,它们的作用和在数学中的作用一样,分为一元运算符和二元运算符,二元运算符**“+”、“-”、“*”、“/”和“%”分别用来进行加、减、乘、除和取余运算**。
操作符 | 描述 | 例子 |
---|---|---|
+ | 加法 - 相加运算符两侧的值 | A + B 等于 30 |
- | 减法 - 左操作数减去右操作数 | A – B 等于 -10 |
* | 乘法 - 相乘操作符两侧的值 | A * B等于200 |
/ | 除法 - 左操作数除以右操作数 | B / A等于2 |
% | 取余 - 左操作数除以右操作数的余数 | B%A等于0 |
++ | 自增: 操作数的值增加1 | B++ 或 ++B 等于 21 |
– | 自减: 操作数的值减少1 | B-- 或 --B 等于 19 |
++B、–B 先赋值再执行
B++,B-- 先执行再赋值
int m =4;
System.out.println(m++);
System.out.println(++m);
(2)赋值运算符
variableName = expression;
variableName为变量名,expression为表达式。其功能是将等号 右边表达式的值赋给左边的变量
(3)位运算符
假设整数变量A的值为60和变量B的值为13:
操作符 | 描述 | 例子 |
---|---|---|
& | 如果相对应位都是1,则结果为1,否则为0 | (A&B),得到12,即0000 1100 |
| | 如果相对应位都是0,则结果为0,否则为1 | (A | B)得到61,即 0011 1101 |
^ | 如果相对应位值相同,则结果为0,否则为1 | (A ^ B)得到49,即 0011 0001 |
〜 | 按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 | (〜A)得到-61,即1100 0011 |
<< | 按位左移运算符。左操作数按位左移右操作数指定的位数。 | A << 2得到240,即 1111 0000 |
>> | 按位右移运算符。左操作数按位右移右操作数指定的位数。 | A >> 2得到15即 1111 |
>>> | 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 | A>>>2得到15即0000 1111 |
<< >> 为正补0,为负补1 >>> 位移后都补0
int a = 13;
System.out.println(a<<2);
System.out.println(a>>2);
int a = 13;
System.out.println(a<<2);
System.out.println(a>>2);
System.out.println(a>>>2);
(4)扩展赋值运算符
操作符 | 描述 | 例子 |
---|---|---|
+ = | 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 | C + = A等价于C = C + A |
- = | 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 | C - = A等价于C = C - A |
* = | 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 | C * = A等价于C = C * A |
/ = | 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 | C / = A等价于C = C / A |
(%)= | 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 | C%= A等价于C = C%A |
<< = | 左移位赋值运算符 | C << = 2等价于C = C << 2 |
>> = | 右移位赋值运算符 | C >> = 2等价于C = C >> 2 |
&= | 按位与赋值运算符 | C&= 2等价于C = C&2 |
^ = | 按位异或赋值操作符 | C ^ = 2等价于C = C ^ 2 |
| = | 按位或赋值操作符 | C | = 2等价于C = C | 2 |
(5)关系运算符
整数变量A的值为10,变量B的值为20:
运算符 | 描述 | 例子 |
---|---|---|
== | 检查如果两个操作数的值是否相等,如果相等则条件为真。 | (A == B)为假。 |
!= | 检查如果两个操作数的值是否相等,如果值不相等则条件为真。 | (A != B) 为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 | (A> B)为假。 |
< | 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 | (A <B)为真。 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 | (A> = B)为假。 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 | (A <= B)为真。 |
(6)逻辑运算符
逻辑运算符包括如下6种:
逻辑非(!)、逻辑与(&)、逻辑或(|)、逻辑异或(^)、短路与(&&)、短路或(||)。假设A、B是两个逻辑型数据,则逻辑运算的规则如表所示。
对一个逻辑值A,逻辑非(!)运算是当A为true时,!A的值为false,当A的值为false,!A的值为true。
“&&”和“||”为短路运算符,若第一个操作数的值为fals\true时,就可以判断整个表达式的值为false\true,因此,不再继续求解第二个表达式的值。
逻辑运算符的基本运算,假设布尔变量A为真,变量B为假
操作符 | 描述 | 例子 |
---|---|---|
&& | 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 | (A && B)为假。 |
| | | 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 | (A | | B)为真。 |
! | 称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 | !(A && B)为真。 |
(7)三目运算符
条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。
variable x = (expression) ? value if true : value if false
三目运算符的规则是,先对逻辑表达式expression进行求值,如果逻辑表达式返回true,则返回第二个操作数的值,如果逻辑表达式返回false,则返回第三个操作数值。
int a , b;
a = 10;
// 如果 a 等于 1 成立,则设置 b 为 20,否则为 30
b = (a == 1) ? 20 : 30;
System.out.println( " b =" + b );
// 如果 a 等于 10 成立,则设置 b 为 20,否则为 30
b = (a == 10) ? 20 : 30;
System.out.println( "b = " + b );
总结:运算的结合性和优先级
类别 | 操作符 | 关联性 |
---|---|---|
后缀 | () [] . (点操作符) | 左到右 |
一元 | + + - !〜 | 从右到左 |
乘性 | * /% | 左到右 |
加性 | + - | 左到右 |
移位 | >> >>> << | 左到右 |
关系 | >> = << = | 左到右 |
相等 | == != | 左到右 |
按位与 | & | 左到右 |
按位异或 | ^ | 左到右 |
按位或 | | | 左到右 |
逻辑与 | && | 左到右 |
逻辑或 | | | | 左到右 |
条件 | ?: | 从右到左 |
赋值 | = + = - = * = / =%= >> = << =&= ^ = | = | 从右到左 |
逗号 | , | 从左到右 |
2、分隔符
(1)分隔符(separatos)用于区分Java语言程序中的基本语法成分即单词符号。分隔符有空白符、注释和普通分隔符三种。
(2)空白符: 换行、回车、空格、tab,Java语言中单个空白符与多个空白符的作用是一样的。
(3) 普通分隔符:{} ; , :共四种
• {} 花括号: 用来定义复合语句、类体、方法体以及数组的初始化。
• ;分号: 表示一条语句的结束。
• :冒号: 说明语句标号。
• ,逗号: 用来分割变量说明和方法的参数等。
3、转义字符
加入\后使跟在其后的字符含义发生变化
4、注释
注释语句: 程序中的注释没有逻辑意义,但是又是十分重要的程序组成成分。恰当地书写注释可以增强程序的可读性,提高理解计算机程序的效率,降低程序维护的代价。
- // 一行的注释内容
- /* 一行或多行的注释内容 */
- /** 文档注释内容 */
六、自我介绍
System.out.println( "大家好 " );
System.out.println( "我叫阡陌飞絮" );
System.out.println( "我来自*** " );
System.out.println( "喜欢玩,看书 " );
System.out.println( "希望大家多多关照" );