🏠HelloWorld小案例
步骤:
- 创建一个名为HelloWorld文本文档,将后缀名.java
- 打开文件,在里面写点内容:
```java class HelloWorld { public static void main(String[] args) { System.out.println(“约吗”); } }
1.什么地方加空格,什么地方加. 2.什么地方大写,什么地方小写 3.什么地方用{},什么地方用[],什么地方用()
3. 将HelloWorld.java文件放入到jdk安装的目录中的bin目录中
3. 编译<br />如何编译?<br />需要使用javac.exe编译工具<br />格式:javac HelloWorld.java<br />编译完之后,会生成一个新的文件,叫做HelloWorld.class
3. 运行<br />如何运行?<br />需要使用java.exe运行工具<br />格式:java HelloWorld
<a name="88ece357"></a>
# 🔪注释
> 注释是对代码的解释和说明文字。Java中的注释分为三种。
<a name="vnvKF"></a>
## 注释的分类
1. 单行注释:
`//注释的内容`
2. 多行注释:
`/*注释的内容*/`
3. 文档注释:
`/**注释的内容*/`<br />文档注释一般是生成帮助文档用的
快捷键:<br />单行注释:ctrl+/<br />多行注释:ctrl+shift+/
<a name="OqPO6"></a>
## 注释的作用
1. 用来解释说明,提高了代码的阅读性
1. 可以帮助我们查找错误
<a name="UVj4b"></a>
## 注释的注意事项
1. 单行注释可以嵌套
1. 多行和文档注释都不能嵌套使用。
<a name="071a46fc"></a>
# 💣关键字
> 被Java语言赋予了特殊含义,用作专门用途的字符串(单词)的单词,这些关键字不能用于常量、变量、和任何标识符的名称。
💡 关键字的特点:
- 关键字的字母全部小写。
- 常用的代码编辑器对关键字都有高亮显示,比如现在我们能看到的public、class、static等。
- main不是关键字
![image.png](https://cdn.nlark.com/yuque/0/2022/png/21490994/1647221559925-3482b843-6fea-4479-b867-3d3841e5b113.png#clientId=u486ac653-bc52-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=833&id=u7853f84c&margin=%5Bobject%20Object%5D&name=image.png&originHeight=762&originWidth=477&originalType=binary&ratio=1&rotation=0&showTitle=false&size=65991&status=done&style=none&taskId=u365fb4e2-bb91-439e-a757-13dff69020d&title=&width=521.5)
<a name="56fa84eb"></a>
# 🔦标识符
> 用来标识类名、变量名、方法名、类型名、数组名及文件名的有效字符序列称为标识符,简单来说就是我们自己起的名字。
<a name="GM030"></a>
## Java中标识符的组成规则
1. 由字母、数字、下划线“_”、美元符号“$”组成,长度不受限制。
1. 第一个字符不能是数字字符。
1. 不能使用java中的关键字作为标识符。也不能是true、false、null。
1. 标识符对大小写敏感(区分大小写)。
<a name="PxY3R"></a>
## 标识符的两种命名方式
针对不同类型的标识符用不同的命名方式,以下是两种常用的命名方式:
1. **小驼峰式命名:首字母小写,从第二个单词开始每个单词的首字母大写。**
1. 例如:name、userName、studentNumber
2. **大驼峰式命名:每个单词的首字母都大写。**
1. 例如:ChinaMade、WaterLake等。
不同场合不同使用:
- **包名:全部小写,多级包用.隔开。**
举例:com.jourwon,com是公司,也是行业规定。
- **类、接口:大驼峰命名**
举例:Student,Car,HelloWorld
- **方法和变量:小驼峰式命名**
举例:age,maxAge,show(),getAge()
- **常量:如果是一个单词,所有字母大写,如果是多个单词,所有的单词大写,用下划线区分每个单词。**
举例:DATE,MAX_AGE
- **项目名:全部用小写字母,多个单词之间用横杆-分割。**
举例:demo,spring-boot
<a name="af7c4e3e"></a>
# 🔮常量
> 在程序执行的过程中,其值不可以发生改变的量。
![image.png](https://cdn.nlark.com/yuque/0/2022/png/21490994/1647222226190-22605a8a-2c5a-4a26-a177-82f5b41ef8a3.png#clientId=u486ac653-bc52-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=266&id=u7880d185&margin=%5Bobject%20Object%5D&name=image.png&originHeight=506&originWidth=1083&originalType=binary&ratio=1&rotation=0&showTitle=false&size=216511&status=done&style=none&taskId=u7a5daa9f-c136-4e8b-be66-ef93b61ff24&title=&width=569.5)
<a name="Yz8DQ"></a>
## 字符串常量
"a", "ab", "123", "abc123", "约吗", ""
注意:
1. 字符串常量是必须用双引号括起来的
1. 双引号里面可以有一个数据,可以有多个数据,可以没有数据
<a name="zgj4B"></a>
## 字面值常量
- 整数常量
1, 2, 12
- 小数常量
3.14, 1.2
- 字符常量
'a', 'b', '1', '#', '在', ' ' 都是字符常量<br />'abc', '' 不是字符常量
注意:
1. 字符常量是必须用单引号括起来的
1. 引号里面有且只能有一个字符
<a name="taAql"></a>
## 布尔常量
只有2个值<br />true、false
<a name="kxjnN"></a>
## 空常量
只有一个值:null
自定义常量(以后学)
<a name="aTLqy"></a>
## 注意事项
- 除空常量外,其他常量均可使用输出语句直接输出。
- 在定义常量时就需要对该常量进行初始化。
- final 关键字不仅可以用来修饰基本数据类型的常量,还可以用来修饰对象的引用或者方法。
- 为了与变量区别,常量取名一般都用大写字符。
<a name="68a240a2"></a>
# 🛡Java进制
> 进制也就是进位计数制,是人为定义的带进位的计数方法。十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。生活中常用的是十进制
<a name="wNW7p"></a>
## Java中的进制的分类
- 十进制:逢十进一,正常写
12, 5, 123<br />10
- 二进制:逢二进一,0b
0101010<br />0b10
- 八进制:逢八进一,0
1234, 12<br />010
- 十六进制:逢十六进一,0x
10 -> A<br />11 -> B<br />12 -> C<br />13 -> D<br />14 -> E<br />15 -> F<br />123AB<br />0x10
在计算机中,数据最终都会变成二进制,也就是由多个1或者多个0来组成的,而每一个1或者0都称为一个位,也叫做1bit。
注意:在计算机中进行存储和运算的最小单位是字节(byte)<br />1byte = 8bit<br />1KB = 1024byte<br />1MB = 1024kb<br />1GB = 1024MB<br />1TB = 1024GB
<a name="hOjph"></a>
## 进制转换
<a name="QSYkI"></a>
### 二进制转十进制
> 8421码方法为:把二进制数按权展开、相加即得十进制数。
![image.png](https://cdn.nlark.com/yuque/0/2022/png/21490994/1647223355072-494c2689-f0fd-4219-86cf-1c42bf1fa3d3.png#clientId=u486ac653-bc52-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=336&id=u38a2b233&margin=%5Bobject%20Object%5D&name=image.png&originHeight=734&originWidth=1280&originalType=binary&ratio=1&rotation=0&showTitle=false&size=302496&status=done&style=none&taskId=u5aa45681-d2b9-4b1e-8e32-b2fe5d55b63&title=&width=586)
<a name="JIhxN"></a>
### 二进制转八进制
![image.png](https://cdn.nlark.com/yuque/0/2022/png/21490994/1647223571010-df08e57f-a3b2-45aa-bd87-f5d2836d8764.png#clientId=u486ac653-bc52-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=346&id=u3d3bb290&margin=%5Bobject%20Object%5D&name=image.png&originHeight=692&originWidth=1218&originalType=binary&ratio=1&rotation=0&showTitle=false&size=251104&status=done&style=none&taskId=u417a9c73-b7a6-4273-91a5-758df2f677b&title=&width=609)
<a name="q13bx"></a>
### 二进制转十六进制
![image.png](https://cdn.nlark.com/yuque/0/2022/png/21490994/1647223837920-07323992-8b25-4790-a283-0550eee29099.png#clientId=u486ac653-bc52-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=389&id=ubf9b37e8&margin=%5Bobject%20Object%5D&name=image.png&originHeight=778&originWidth=1354&originalType=binary&ratio=1&rotation=0&showTitle=false&size=265938&status=done&style=none&taskId=u2685469a-5f2e-4dc7-a6d4-185b527a2cc&title=&width=677)
<a name="uwklH"></a>
### 十进制转二进制
> 十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为止。
![image.png](https://cdn.nlark.com/yuque/0/2022/png/21490994/1647224067932-cb59d206-4317-4de6-bb6a-137c9cae3aa6.png#clientId=u486ac653-bc52-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=351&id=u8abb5884&margin=%5Bobject%20Object%5D&name=image.png&originHeight=226&originWidth=311&originalType=binary&ratio=1&rotation=0&showTitle=false&size=14960&status=done&style=none&taskId=u5f4d0792-9aaf-479c-b64c-a85ec5a079a&title=&width=483.5)
<a name="mMneY"></a>
# 🍐原码,反码和补码
<a name="BY2er"></a>
## 原码
> 原码:将一个整数转换成**二进制表示**
以 int 类型为例,int类型占4个字节、共32位。<br />例如:<br />2 的原码为:00000000 00000000 00000000 00000010<br />-2的原码为:10000000 00000000 00000000 00000010
<a name="DIcEl"></a>
## 反码
> 正数的反码:与原码相同
> 负数的反码:原码的符号位不变,其他位取反
例如,-2 的反码为:11111111 11111111 11111111 11111101
<a name="FSfGc"></a>
## 补码
> 正数的补码:与原码相同
> 负数的补码:反码+1
例如,-2 的补码为:01111111 11111111 11111111 11111110
- 符号位
> 二进制的最左边的那一个位,就称为符号位,正数的符号位是0,负数的符号位是1
<a name="TWs8H"></a>
## 计算机在对数据进行运算的原理
3 - 2 = 1<br />3 + (-2) = 1
1. 先将3这个十进制,变成二进制的原码形式,然后变成反码形式,最后变成补码形式
1. 先将-2这个十进制,,变成二进制的原码形式,然后变成反码形式,最后变成补码形式
1. 将这两个数二进制的补码形式参与运算会得到一个二进制补码形式
1. 然后再将这个二进制的补码形式最终变回二进制的原码形式,然后再变成十进制,就得到1
![image.png](https://cdn.nlark.com/yuque/0/2022/png/21490994/1647225024595-242a7eb0-953b-4472-964a-c9ff6dc77e98.png#clientId=u486ac653-bc52-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=388&id=u16d76185&margin=%5Bobject%20Object%5D&name=image.png&originHeight=776&originWidth=1866&originalType=binary&ratio=1&rotation=0&showTitle=false&size=466880&status=done&style=none&taskId=u20413ae8-6962-4f6d-be73-dcd94fa88e5&title=&width=933)
<a name="N3yuc"></a>
## 总结
- 正数的原码反码和补码的转换规则
正数的原码,反码和补码是一样的
- 负数的原码反码和补码的转换规则
负数的原码变反码:符号位不变,其余的0变1,1变0<br />负数的反码变补码,只需要+1
<a name="jGlDK"></a>
# 🥯变量
> 在一定范围内,可以发生变化的量
<a name="HufAt"></a>
## 变量的定义格式
- 格式一:数据类型 变量名 = 数据;(直接定义)
int a = 12;
- 格式二:数据类型 变量名;(间接定义)
变量名 = 数据;
```java
int i;
i = 2;
💡思考:当我们在程序中写了int i = 12这样一句代码,当我们运行的时候,内存中到底做了哪些事情呢?
在内存中会开辟一块内存空间,该空间的名字就是我们起的变量名i,该空间中存储的数据的数据类型就是我们给的int类型,该空间中存储的数据就是我给的12。
注意问题
当我们给float类型变量赋值的时候,要在数据的后面加上F或者f
float i = 1.45F;
当我们给long类型变量赋值的时候,建议在后面加上L或者l
long i = 120000L;
当我们想要使用某个变量的时候,一定要先赋值,再使用,要不然会报错
- 当我们想要给某个变量赋值的时候,一定要考虑该变量的范围,要不然会报错
- 在同一对花括号内,不能定义同名变量 ```java int i = 12; int i = 13;//错误的
int i = 12; i = 13;//正确的额,这是二次赋值
<a name="h4Wj6"></a>
# 🍞数据类型
> Java语言是强类型语言,对于每一种数据都定义了明确的具体的数据类型,在内存中分配了不同大小的内存空间。共2大类4小类8小种
![image.png](https://cdn.nlark.com/yuque/0/2022/png/21490994/1647239827172-17b4edf6-4f46-416c-b16a-716e7e41a0cf.png#clientId=u2ae119fd-629c-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=371&id=u17fe4e16&margin=%5Bobject%20Object%5D&name=image.png&originHeight=561&originWidth=1007&originalType=binary&ratio=1&rotation=0&showTitle=false&size=47645&status=done&style=none&taskId=u22cd8889-5f21-45e1-8ad2-eae66ba900b&title=&width=666.5)<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/21490994/1647239913968-54c36d28-c86a-4ea4-b760-b268f69ae58f.png#clientId=u2ae119fd-629c-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=213&id=uaf445545&margin=%5Bobject%20Object%5D&name=image.png&originHeight=371&originWidth=1157&originalType=binary&ratio=1&rotation=0&showTitle=false&size=71464&status=done&style=none&taskId=u3456582b-b3f0-43cf-aeee-05c3fdc7c72&title=&width=664.5)
<a name="U3Xao"></a>
## 整型
- byte(1个字节)
- short(2个字节)
- int(4个字节)
- long(8个字节)
一个整数,默认的数据类型是int
<a name="yJkoJ"></a>
## 浮点型
- float(4个字节)
- double(8个字节)
一个小数,默认的数据类型是double
<a name="QNMbQ"></a>
## 字符型
- char(2个字节)
<a name="BmE1B"></a>
## 布尔型
- boolean(1个字节)
- true或false。
<a name="UrB99"></a>
## 引用数据类型(以后学)
<a name="FcAsL"></a>
# 🥥数据类型的转换
> 小的数据类型会自动提升为大的数据类型
```java
举例子:
byte b = 1;
short s = 2;
int i = 3;
long l = 4;
float f = 3.14f;
double d = 3.14;
double dd = b + s + i + l + f + d;
当多个数据类型参与运算的时候,小的数据类型会自动提升为大的数据类型
注意:boolean类型不能和其他数据类型相互转换
常见的考试题?
情况一:
byte b1 = 1;
byte b2 = 2;
byte b3 = b1 + b2;
System.out.println(b3);//编译报错
short s1 = 1;
short s2 = 2;
short s3 = s1 + s2;
System.out.println(s3);//编译报错
情况二:
byte b1 = 1;
byte b2 = b1 + 2;
System.out.println(b2);//编译报错
short s1 = 1;
short s2 = s1 + 2;
System.out.println(s2);//编译报错
结论:针对byte类型和short类型的时候,只要右边有一个是变量,就会编译报错
情况三:
byte b = 126 + 1;
System.out.println(b);//正确,127
情况四:
byte b = 127 + 1;
System.out.println(b);//编译报错,因为byte范围最大值是127
强制类型转换
是指大的数据类型被强制转换成小的数据类型
强制类型转换的格式?
小的数据类型 小的数据类型的变量名 = (小的数据类型)大的数据类型的变量名;
举例子:
int i = 130;
byte b = (byte)i;
注意:我们能不使用强制转换,尽量不要使用,因为转不好会出现问题
int i = 130;
byte b = (byte)i;
System.out.println(b);//却是得-126
🍅ASCII编码表
字符也是可以参与计算中的
char aa = 'a';
System.out.printIn(a);
System.out.printIn( '' + 0); //查询语句
'a' -> 97
'A' -> 65
'0' -> 48