Java学习计划

124 阅读12分钟

@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