@TOC
Java学习计划
第一天:
-
学习java概览,熟悉java的基本使用。20分钟 ✔️
1、java 是
跨平台性语言,一个文件可以在windows和Linux上运行,运行结果相同。 根本原因是因为JVM :
JVM是java虚拟机 [Java virtual machine] JVM:是一个虚拟计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据,内存,寄存器, 包含在
JDK中。不同的平台有不同的虚拟机。2、java是解释性语言:类似的还有javascript、php。编译性语言是:c/c++。
解释性语言:编译后的代码不能直接被机器执行,需要解释器来执行,编译性语言:编译后的代码,可以直 接被机器执行。 -
总结今天使用element-plus中的时间提起选择器的时候遇到的问题,及解决方法。10分钟 ✔️
第二天:
-
学习java基础语法,熟悉java代码的书写 。 90分钟 ✔️
JDK介绍: 1、JDK全称(Java Development Kit Java开发工具包),
JDK = JRE +java的开发工具 【java, javac,javadoc,javap等】。
2、JDK是提供给java开发人员使用的,其中包含了java的开发工具,也包括JRE。所以安装了JDK,就不用单 独对的安装JRE了。
JRE介绍: 1、JRE(Java Runtime Enviroment Java运行环境) JRE = JVM + Java核心类库[类]
2、如果想要运行一个开发好的java程序,计算机只需要安装JRE即可。
java开发的注意事项:
-
Java源文件以.java为扩展名,源文件的基本组成部分是类(class)。
-
Java应用程序的执行入口是main()方法,它有固定的书写格式:
public static void main(String[] args) {...} -
Java语言严格区分大小写。
-
Java方法由一条条语句构成,每个语句以 ";"结束。
-
一个源文件中最多包含有一个public类,其他类的个数不限。
-
如果源文件包含一个public类,则文件名必须按照该类名命名。
-
一个源文件中最多只能有一个public类。其它类的个数不限,也可以将main方法吸写在非public类中,然后指定运行费public类,这样入口方法就是非public的main方法。
文档注释:
注释的内容课可以被JDK提供的工具javadoc所解析,生成一套以网页文件形式 体现的该程序的说明文档, 一般写在类。
使用的方法:javadoc -d 文件夹名 -xx -yy Demo3.java
For example:
javadoc -d d:\\temp -author -version Connents.java
代码规范:
1、类、方法的注释,要以javadoc的方式来写。
2、使用tab操作,实现缩进,默认整体向右边移动,使用shift+tab 整体向左移动。
3、源文件要使用utf-8编码。
4、行宽度不要超过80字符。
5、 代码编写风格:行尾风格和此行风格,推荐使用行尾风格。
DOS基本使用:
//创建目录
md d:\\admin
//删除目录
rd d:\\admin
//切换磁盘C盘,使用切换开关符号 /D
cd /D c:
第三天:
- 学习java语法基础。 ✔️
数据类型:
1、java数据类型分为两大类:基本数据类型和引用类型。
2、基本数据类型有8种:数值型:[byte,short,int,long,float,double] ,char(字符类型),boolean。
long 类型:声明long类型整数,须后面加上 "l" 或 "L"。
一个byte(字节):有8个bit
3、引用类型:[类,接口,数组]。
4、浮点类型:
1、浮点数 = 符号位 + 指数位 + 尾数位。
2、尾数部分可能丢失,造成精度损失(小数都是近似值)。
3、Java的浮点型常量默认为double型,声明float型常量,须后面加上 "f" 或 "F"。
float num1 = 1.1;//错误的形式,因为默认是double类型。
float num2 = 1.1F; //正确
4、浮点数常量有两种表示形式:
1、十进制数形式:如5.12 ,512.0f(f表示float 单精度) .512(等价于0.512)。
2、科学计数法形式:5.12e2(等价于 5.12 * 10的2次方),5.12E-2(等价于5.12/10的2次方)。
5、通常情况下,应该使用double型,因为他比float型更精确。
5、char : 在java中,char 的本质是一个整数,在输出时,是Unicode码对应的字符。
char c1 = 97;
System.out.println(c1);//a
char c3 = '韩';
System.out.println(int(c3));//38889
char类型是可以进行运算的,相当于一个整数,因为它都有对应的Unicode码。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u7kz21xw-1673531119867)(C:\Users\吕晓亮\AppData\Roaming\Typora\typora-user-images\1673166500741.png)]
快捷键:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Lcj1UN0Y-1673531119868)(C:\Users\吕晓亮\AppData\Roaming\Typora\typora-user-images\1673168750068.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cKBvM0yl-1673531119869)(C:\Users\吕晓亮\AppData\Roaming\Typora\typora-user-images\1673168784991.png)]
基本数据类型转换规则:
自动类型转换:
介绍:
当java程序在进行赋值或者运算时,精确度小的类型会自动转换成精度大的数据类型,这个就是自动类型转换。
数据类型按照精度(容量)大小进行排序为:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NzCZsjDG-1673531119871)(C:\Users\吕晓亮\AppData\Roaming\Typora\typora-user-images\1673169234892.png)]
For example:
int a = 'c'; //正确
double d = 80;//正确
多种类型的数据混合运算时:
1、系统首先自动将所有的数据转换成容量最大的那种类型,然后再进行计算
int n1 = 10;
float d1 = n1 + 1.1; //错误,n1 + 1.1 =>结果类型是double
float d1 = n1 + 1.1F;// 正确 n1 + 1.1F =>结果是float类型
2、当我们把精度大的数据类型赋值给精度小的数据类型时,就会报错,反之就会进行自动类型转换。
int n2 = 1.1;//错误 dobuel -> int
3、(byte,short) 和 char 之间不会相互自动转换。
4、当把具体数赋值给byte时,首先判断该数是否在byte的范围 内,如果是就可以。
byte b1 = 10;//正确 byte范围是 -127-127之间。
int n2 = 1;//n2 是int类型
byte b2 = n2;//错误,n2现在是int类型,他有4个字节,肯定报错。
5、byte,short ,char 他们三者可以计算,在计算时首先转换为int类型。
byte b2 = 1;
byte b3 = 2;
byte b4 = b2 + b3;//错误,byte,short,char 他们三个不管单独相加还是任意相加都是int类型。
6、boolean 不参与自动类型转换。
强制类型转换:
介绍:
自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型,使用时要加上强制转换符 "()" ,但可能造成精度降低或溢出,格外要注意。
int i = (int)1.9;
System.out.println(i);
int j = 100;
byte b1 = (byte)j;
Sytem.out.println(b1);
- 学习数据算法与结构。✖️
- 练习吉他 10分钟。 ✔️
第四天:
- 学习java基础 ✔️
数学运算符:
System.out.println(10/4); //结果是2,因为10和4都是int类型的,所以结果默认也是int类型。
System.out.println(10.0/4);//结果是2.5,因为10.0是double类型。结果也是double类型。
double d = 10 / 4;//结果是2.0不是2.5,因为10/4得到的是2,又因为保存的是double格式,得到2.0
取模(取余):
在java中% 的本质 看一个公式:a % b = a - a / b * b。
System.out.println(10 % 3);//1;
System.out.println(10 % -3); //1;
System.out.println(-10 % -3);//-1
++的使用:
-
当单独使用的时候:
i++ 和 ++i是一样的。
-
当作为表达式使用的时候:
前++:++i先自增后赋值后++:i++先赋值后自增 -
面试题:
int i = 1; i = i++; System.out.println(i);//1; //导致上面结果的过程是:1、temp = i(先把i保存到临时变量temp中);2、i = i + 1;3、i = temp;(再把临时变量给i; int j = 1; j = ++j; System.out.println(j);// 1、j = j + 1: 2、temp = i; 3、i = temp;逻辑运算符:
- 重点注意短路与和短路或,逻辑异或。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ezAVn3Nn-1673531119873)(C:\Users\吕晓亮\AppData\Roaming\Typora\typora-user-images\1673274214707.png)]
第五天
逻辑运算符的使用:
- 短路与
&&:如果第一个条件为false,后面的额条件不再判断。 - 逻辑与
&:如果第一个条件为false,后面的条件仍会判断。 - 短路或
||:如果第一个条件为true,则第二个条件为不会判断,最终结果为true,效率较高。 - 逻辑或
|:如果第一个条件为false,后面的条件仍然会判断。 - 逻辑异或
a^b:当a和b不同时,则结果为true,否则为false。
进制:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1Rj5GkWF-1673531119874)(C:\Users\吕晓亮\AppData\Roaming\Typora\typora-user-images\1673446613818.png)]
进制的转换:(程序员的基本功)
-
十进制转2进制
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-levCZ4RL-1673531119876)(C:\Users\吕晓亮\AppData\Roaming\Typora\typora-user-images\1673447052082.png)]
看上面的结果可以发现,应该是0B100010,但是实际的结果却是0B00100010,这是因为一个字节是8为的,所以我们需要在前面加上两个0,并且不影响这个结果。
-
二进制转八进制
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pjeuMB2Z-1673531119877)(C:\Users\吕晓亮\AppData\Roaming\Typora\typora-user-images\1673447504552.png)]
-
二进制转16进制:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aea4YIJB-1673531119878)(C:\Users\吕晓亮\AppData\Roaming\Typora\typora-user-images\1673447628045.png)]
-
8进制转2进制:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a7BnDtOz-1673531119880)(C:\Users\吕晓亮\AppData\Roaming\Typora\typora-user-images\1673447793127.png)]
结果应该是0b010011111,但是一个字节8为数字,所以多出来一个0舍去。
-
16进制转2进制:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eYkqX7I7-1673531119882)(C:\Users\吕晓亮\AppData\Roaming\Typora\typora-user-images\1673447922587.png)]
第六天:
原码、反码、补码(重点,难点)
1、二进制的最高位是符号位:0表示正数,1表示负数。(口诀:0->0,1->-)口诀是旋转90度。1变成了-号
2、正数的原码,反码,补码都一样(三码合一)。
3、负数的反码 = 他的原码符号位不变,其他位取反(0->1,1->0)
4、负数的补码=它的反码 + 1,负数的反码 = 负数的补码 - 1。
5、0的反码,补码都是0。
6、java没有无符号数,换言之,Java中的数都是有符号的。
7、在计算机运行的时候,都是以补码的方式来运算的。
8、当我们看到运算结果的时候,要看他的原码。
位运算符:
java中有7个位运算符(&、|、^、~、>>、<<、和>>>)
运算规则:
按位与& : 两位全为1,结果为1,否则为0
按位或| : 两位有一个为1,结果为1,否则为0
按位异或^: 两位一个为0,一个为1,结果为1,否则为0
按位取反~:0->1 ,1->0
-
案例:
2&3:按位与
1//首先2,转成2进制是:00000000 00000000 00000000 00000010 (为啥是32bit ,因为2是整数,默认int类型,int是4个字节,1个字节是8个bit). 2//然后计算机运算都是以补码进行的,但是2是个正数,所以补码也是 00000000 00000000 00000000 00000010 3//同理:3的补码是:00000000 00000000 00000000 00000011 4//所以结果是:00000000 00000000 00000000 00000010, 5//然后需要转成原码:因为二进制最高位符号位是0,是个正数,所以原码跟补码相同,转成10进制就是2
算术右移 >>: 低位溢出(就是扔出,不要了),符号位不变,并用符号位补溢出高位。
算术左移<<: 符号位不变,低位补0。
>>>逻辑右移 :也叫无符号右移,,运算规则是:低位溢出,高位补0。
特别说明:没有<<<符号。
-
案例:
int a = 1>>2; 1// 1=> 00000000 00000000 00000000 00000001 2// 把 最右边的2位,0和1,扔出不要,用符号位0来补上 3// 结果就是00000000 00000000 00000000 00000000 就是0
00000 00000000 00000010, 5//然后需要转成原码:因为二进制最高位符号位是0,是个正数,所以原码跟补码相同,转成10进制就是2
算术右移 >>: 低位溢出(就是扔出,不要了),符号位不变,并用符号位补溢出高位。
算术左移<<: 符号位不变,低位补0。
`>>>`逻辑右移 :也叫无符号右移,,运算规则是:低位溢出,高位补0。
特别说明:没有<<<符号。
- 案例:
```java
int a = 1>>2;
1// 1=> 00000000 00000000 00000000 00000001
2// 把 最右边的2位,0和1,扔出不要,用符号位0来补上
3// 结果就是00000000 00000000 00000000 00000000 就是0