1. Java基础语法
课程重点:
1. 进制的转换
2. 数字补码的计算
3. 代码的书写规则
4. 数据类型之间的转型
5. 字符类型
6. 运算符
1.1. 计算机理论基础
编程:编写程序。
其实就是操作计算机,让计算机帮我们实现我们想要的需求。
计算机其实是一个非常单一的机器,计算机只认识两个数字: 0 和 1,并且只会做加法。
1.2. 编程基础 ———— 进制分类、进制转换
进制:进位制,指的是数字进位的制度。
进制分类
-
二进制:使用数字0和1来表示所有的自然数,逢2进1位。
0, 1, 10, 11, 100, 101, 110, 111, 1000, ...
-
十进制:使用数字0~9来表示所有的自然数,逢10进1位。也是我们生活中使用的最多的进制。
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
-
八进制:使用数字0~7来表示所有的自然数,逢8进1位。
0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, ...
-
十六进制:使用数字0~9, a~f来表示所有的自然数,逢16进1位
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11, 12
不同进制的数字,在表示的时候是有区别的。
用0b开头,代表一个二进制数字: 0b1100, 0b1001
用0开头,代表一个八进制数字: 012, 076
用0x开头,代表一IG额额十六进制数字: 0x1234, 0xADF4
进制转换
-
十进制和其他进制之间的相互转换
- 十进制转其他进制
- 辗转相除法:用数字除进制,得到的商再除进制,一直到商为0结束,将每一步得到的余数倒着连接起来。
- 其他进制转十进制
- 用某一位的数字,乘上进制的位数-1次方,将所有的部分相加。
- 十进制转其他进制
-
二进制、八进制和十六进制之间的相互转换
-
一个八进制位可以等价替换成三个二进制位
011 001 010 100 100 100 101 010 010
->
312444522
763662636
->
111 110 011 110 110 010 110 011 110
-
一个十六进制位可以等价替换成四个二进制位
0011 0010 1010 0100 1001 0101 0010
->
32A4952
79AD6
->
0111 1001 1010 1101 0110
-
二进制 | 八进制 | 十六进制 |
---|---|---|
0 | 0 | 0 |
1 | 1 | 1 |
10 | 2 | 1 |
11 | 3 | 3 |
100 | 4 | 4 |
101 | 5 | 5 |
110 | 6 | 6 |
111 | 7 | 7 |
1000 | 10 | 8 |
1001 | 11 | 9 |
1010 | 12 | A |
1011 | 13 | B |
1100 | 14 | C |
1101 | 15 | D |
1110 | 16 | E |
1111 | 17 | F |
1.3. 原码、反码、补码
数据大小单位转换
每一个二进制位称作一个比特位(bit)
8bit => 1byte
1024byte => 1kb
1024kb => 1mb
1024mb => 1Gb
1024G => 1Tb
1024Tb => 1Pb
1024Pb => 1Eb
1024Eb => 1Zb
1024Zb => 1Yb
1024Yb => 1Bb
1024Bb => 1Nb
1024Nb => 1Db
...
关于负数的表示形式
在一个二进制数字中,最左侧的以为(最高位),不是用来表示数字大小的,而是用来表示数字的符号的。1表示负数,0表示正数。所以,最高位也被称作符号位。
0b1001 1100 -> -28
原反补
所有的数据在计算机中的存储和运算都是以补码的形式进行的。
原码:由一个直接计算得出的二进制表示形式
反码:对正数:和原码相同
对负数:符号位不变,其他为按位取反
补码:对正数:和反码相同
对负数:反码+1
1. 如果在运算的过程中,出现了值溢出的情况,直接将溢出的部分舍去不要。
2. 补码和补码进行运算,得到的结果还是一个补码。
3. 由补码求原码,只需要对这个补码再进行一次求补的操作即可
一个字节能够表示的数据范围是多少?
[-128,127]
[]: 闭区间
(): 开区间
[0, 100] : >= 0 && <= 100
[0, 100) : >= 0 && < 100
1.4. JDK的安装与环境变量的配置
JDK:
Java Development Kit,Java开发框架,包含了所有的Java开发需要使用的库,以及JRE.
JRE:
Java Runtime Envrioment,Java运行时环境,提供了Java程序运行所需要具备的各种环境因素,包含了JVM。
JVM:
Java Virtual Mechine,Java虚拟机。Java程序是运行在Java虚拟机上的。
1、JDK的安装
直接打开安装程序安装即可。但是需要注意: 如果要自定义安装的路径,则在这个路径中不要有中文。
2、环境变量的配置
2.1、为什么要配置环境变量?
希望在任意的工作目录下,都可以直接使用Java相关的命令
2.2、如何配置环境变量?
1、找到你的JDK的安装路径下的bin目录
2、在”我的电脑“上右键,选择”属性“,选择”高级系统设置“,选择”环境变量“
3、在“系统变量”中找到“Path”,并编辑(双击或者点击编辑按钮)
4、将JDK的安装路径粘贴到变量值的最前方,并在路径后添加一个英文半角的分号作为路径分隔符
如果是win10系统,还可以选择“新建”,添加一个新的行,并将JDK的路径粘贴到新的行中,然后上移到最上方
3、如何验证环境变量是否配置成功
打开一个新的DOS窗口,然后输入 javac
指令,如果不是错误提示,表示成功
1.5. eclipse的使用
IDE的选择: eclipse、IDEA。
1.6. 数据类型
Java中的数据类型分为两种: 基本数据类型 和 引用数据类型
基本数据类型分为四种:
数据类型 | 标识符 | 大小 | 取值范围 |
---|---|---|---|
字节型 | byte | 1byte | [-2^7^, 2^7^-1] |
短整型 | short | 2byte | [-2^15^, 2^15^-1] |
整型 | int | 4byte | [-2^31^, 2^31^-1] |
长整型 | long | 8byte | [-2^63^, 2^63^-1] |
单精度浮点型 | float | 4byte | - |
双精度浮点型 | double | 8byte | - |
布尔型 | boolean | 1byte | true、false |
字符型 | char | 2byte | \u0000 ~ \uffff |
1.7. 标识符
是一个由若干个字符组成的有序序列,用来描述程序中的一个数据。
命名规则
-
只能由字母、数字、下划线 和 $符号组成。
-
不能以数字做开头。
-
不能与系统关键字或保留字重复。
关键字与保留字都是满足以上两点要求的字符序列。只不过这些字符序列被系统占用了,我们就不能继续使用。
某些字符序列已经被赋予了特殊含义,这些字符序列,称作--关键字
某些字符序列暂时还没有被赋予特殊含义,但是可能在后续的版本中被赋予特殊含义。这些字符序列被称作--保留字
-
标识符是区分大小写的。
命名规范
- 望文知意
- 遵守驼峰命名法
- 大驼峰命名法
- 组成一个标识符的所有单词,首字母都大写。
- 小驼峰命名法
- 首个单词除外,从第二个单词开始,每个单词的首字母大写。
- 大驼峰命名法
1.8. 变量、常量
在程序运行的过程中,某些数据可以发生改变,某些数据不能发生改变。
可以改变值的数据,被称作--变量
不可以改变的数据,被称作--常量
1.9. java程序的编译和运行
1、编辑java程序,并保存,java源程序文件后缀名是 .java
2、打开DOS窗口,使用 javac
对源文件进行编译
3、使用 java
指令,对编译后生成的 .class 文件进行执行
备注:
1. 一个文件中可以写多个类,但是只有和文件名同名的类可以用public来修饰。
2. 如果一个文件中写了多个类,则编译后会生成多个.class文件(每个类都会生成一个.class文件)
在一个定义了3个类和2个方法的java文件编译后,会生成( D )
A、1个字节码文件,以.java为后缀名
B、1个字节码文件,以.class为后缀名
C、3个字节码文件,以.java后缀名
D、3个字节码文件,以.class为后缀名
1.10. 注释
一个Java源文件中的所有的代码都会被编译到字节码文件中,被虚拟机执行。但是某些时候,我们希望对某一段程序进行一个备注,方便日后查看这段程序。
我们可以使用注释,对某段程序进行描述,并且不用担心描述的内容会有语法错误的问题。因为注释部分不会被编译。
注释可以分为:单行注释、多行注释 和 文档注释
单行注释:以 // 开头,这一行后面所有的内容都是注释
多行注释:以 /* 开头,以 */ 作为结尾,中间所有的内容都被注释
文档注释:以 /** 开头,以 */ 作为结尾,中间所有的内容都被注释
文档注释中可以添加某些变量描述等信息,并且这些信息描述是可以作用到IDE上,被解析
1.11. 各种数据类型的使用
详见代码 Syntanx2.java
1.12. 数据类型转换
一个变量在定义完成后,所开辟的空间大小是不能发生改变的。一个变量是不能修改类型的。
所谓的数据类型转换,其实是定义一个需要转型到的类型的新的变量,然后将变量原来值给这个新的变量进行赋值。
自动类型转换
一般情况下,是由取值的范围小的数据类型转型到取值范围大的数据类型。
这个转型一定会成功,不需要做任何额外的操作,只需要一个简单的赋值即可。
因为没有任何额外操作,自动类型转换也被称作是--隐式转换
强制类型转换
一般情况下,是由取值的范围大的数据类型转型到取值范围小的数据类型。
这个转型不一定会成功,需要强制操作。
因为需要强制执行,强制类型转换也被称作是--显式转换
注意事项
byte、short、char类型的变量在参与运算的时候,会自动的将结果转型为int类型。
1.13. 转义字符
\
1.14. 字符类型 char
char与整型之间的相互转换
字符集
1.15. 常用运算符
1.15.1. 算术运算符
+ - * / %
++ --
1.15.2. 赋值运算符
=
+= -= *= /= %=
1.15.3. 关系运算符
> < >= <= == !=
1.15.4. 逻辑运算符
& | ! ^ && ||
1.15.5. 位运算符
& | ^ ~
<< >> >>>
1.15.6. 三目运算符
?: