课程体系:
JavaSE-数据结构与算法-MySQL数据库-JavaWeb-JVM虚拟机优化-Java高并发-SSM框架-SpringBoot- SpringCloud-Hadoop
学习方法:
多敲,多练,多总结
网站
优快云 查问题 写博客
牛客网 做选择题
力克网 编程题
任务
上三休一 为一周期 休息的一天交作业(下午六点之前交作业)
任务:在牛客网 Java选择题每期30道,智力题6道,数量关系题6道,判断推理6道
csdn上笔记总结
leetcode 3道编程题(一个小时写不出来没关系,实在做不出来查别人的思路)
一个录屏作业(标记的作业,第一道第二道…)
惩罚措施:
一次作业没完成 警告
两次作业没完成 约谈
三次作业没完成 劝退
第一部分 语法基础篇
第一章 概述
1.1计算机组成部分
硬件、软件
硬件是可以看见的一些物理部分部分,都是一些电子元器件
软件是看不得到的部分,它是一些列的指令,这些指令主要用于控制硬件来完成一些列特定的工作
常见的硬件:
cpu:Center Processing Unit中央处理器 主要指令控制和数值计算功能
内存 :临时性储存数据的存储设备RAM,当内存不通电的时候,这数据也就消失了
显卡 GPU:Graphic Processing Unit图形图像处理单元 主要用于计算图形数据
存储设备:永久性存储设备ROM 任何数据都是以二进制的形式存储的
机械硬盘
固态硬盘
U盘
光盘
移动硬盘
输入输出设备
键盘:输入字符数据
鼠标:输入定位数据
显示器:输出图形图像文本数据
扬声器:输出声音数据
麦克风:输入声音数据
打印机:输出图形图像文本数据
扫描仪:输入图形图像数据
网络设备
输入:从互联网上下载数据
输出:从本地上传数据到互联网
1.2人机交互方式
我们如何与计算机打交道
图形化界面操作方式:操作简单,表现直观,容易上手操作,步骤繁琐,占用空间大
命令行操作方式CMD(Command win+R输入cmd回车)窗口:操作复杂,命令较多,不容易上手,步骤简单,占用空间小,适合远程操作
常用dos命令
c:进入c盘根目录
d:进入D盘根目录
cdxxx进入xxx目录
dir 查看当前目录下有什么文件和目录
cd/进入到当前所在盘符的根目录
cd…返回上一级目录
cls清屏
exit退出cmd窗口
1.3计算机语言
计算机本身就是有一系列物理硬件组成的,它们之间的沟通方式就是电信号,高低电压-二进制数
据
所以和计算机之间打交道,就得通过二进制来做,早期的编程语言/命令都是以二进制形式存在
机器语言
根据平台的不同其所表现的形式也不同,为了让计算机能够懂得人类的目的,人类必须以二进制的
形式向计算机输入数据。计算机能懂,人不太懂,对初学者十分不友好的。比如要计算两个数字的加法
100101001010100101010101
汇编语言
通过一些单词也叫助记符,将一些常用的操作用单词表示,在程序中慢慢出现了人类的语言。比如
计算2+3的结果,在汇编语言里是一下结果。这种代码计算机读不懂,还得将这些助记符包括数据转换
成对应的二进制提交给计算机进行计算。转换的工具,称之为汇编器。汇编语言它的计算方式,还是依
赖于计算机的计算方式的。想学好汇编语言,还得事先了解计算机的工作原理。
add 2,3 reslut
高级编程语言
从20世纪50年代产生,第一个众所周知的高级编程语言:C语言->C++语言->Java语言->C#-Python
高级编程语言完全由单词,符号和数字组成,并且书写流程也是符号人类流程。比如计算2+3如下
代码所示,更容易让人类去理解。同样计算机不能够读懂这段代码,还得将代码进行转换二进制提交给
计算机。转换的形式:编译,解释
静态编译语言:C C++ Java
静态:在定义变量的时候有明确的数据类型的区分
编译:将源代码全部进行编译 生成一个可执行的二进制文件 计算机去执行这个二进
制文件来运行程序。(翻译一本英文书)
动态解释语言:Python JS
动态:在定义变量的时候没有明确的数据类型的区分
解释:将源代码从头到尾 读取一行 编译一行 运行一行(同声传译)
软件的分类:
系统软件:也称之为是操作系统,主要是用来控制和底层管理硬件的一套指令,操作系统为用户提供最基本的计算机功能。
应用软件:基于系统之上的为用户带了特定领域服务的软件。
1.4软件与软件开发
软件是指一系列按照特定顺序组织的计算机数据与指令的集合
软件 分为:系统软件和应用软件
软件开发的定义就是去编写上述软件。
软件开发的流程:
1、需求分析
2、编码实现
3、测试编码
4、上线运维
5、更新迭代
6、下线
软件岗位
移动端软件研发Anroid IOS-物联网
Web前端研发 - 数据可视化工程师
PC端研发
后端研发
1.5Java语言介绍
Java语言的前身Oak(橡树),1994年詹姆斯高斯林和他的团队开发出来的嵌入式编程语言。随着
互联网的发展,紧随潮流编程互联网应用程序开发语言(面向对象),一直到2010年Sun公司被Oracle
收购,Java就属于Oralce的子产品。
Java开发环境搭建
JRE与JDK
JRE(Java Runtime Environment)Java运行环境:如果我们的计算机仅仅想运行Java程序的话,装
这个软件即可。JRE = JVM + 核心类库。
JDK(Java Development Kit)Java开发工具包:如果我们的计算机想要去开发一个Java程序的话,
装这个软件即可。JDK = 开发工具 + JRE。 JDK的下载与安装
- 先登录注册Oracle 2. 去Oralce官网下载JDK,最新JDK15,我们目前用JDK8 https://www.oracle.com 3. 点击Products 4. 点击SoxWare下的Java 5. 右上角DownloadJava 6. 找到JavaSE8 点击JDK Download 7. 下拉 在下载列表中选择Windows X64 8. 双击打开jdk安装程序
- 点击下一步
- JDK不需要更改目录 直接下一步
- JRE不需要更改目录 直接下一步
- 安装完成 点击关闭即可
- 验证jdk是否安装成功
- win+r 打开cmd 输入 java -version
java version “1.8.0_77” Java™ SE Runtime Environment (build 1.8.0_77-b03) Java HotSpot™ 64-Bit Server VM (build 25.77-b03, mixed mode)
说明安装成功!
jdk安装目录介绍
bin目录:binary放的都是开发工具
javac.exe:java编译工具
用法: javac java.exe:java运行工具
用法: java [-options] class [args…] (执行类) 或 java [-options] -jar jarfile [args…] (执行 jar 文件) db 目录:放的是支持数据库开发的一些工具包
include目录:放的是一些链接底层的一些C头文件代码
jre目录:jdk自带的运行环境
lib目录:library 存放的是一些第三方Java库 javafx-src.zip:javafx图形化界面开发的源码包
src.zip:Java本身的源代码包
C:\Users\HENG>cd / C:>cd “Program Files” C:\Program Files>cd Java C:\Program Files\Java>cd jdk1.8.0_77 C:\Program Files\Java\jdk1.8.0_77>cd bin
1.7运行Java程序
VSCode代码编辑器 https://code.visualstudio.com/
汉化:左下角管理 Extension 搜索Chinese 选择Chinese中文简体汉化包 点击绿色install 右下角提示
重启 重启即可
主题:管理 颜色主题 自选
编码:管理 设置 文本编辑器 文件 Encoding 选择gbk结尾
C:\Users\HENG>cd / C:>cd “Program Files” C:\Program Files>cd Java C:\Program Files\Java>cd jdk1.8.0_77 C:\Program Files\Java\jdk1.8.0_77>cd bin
字体:管理 设置 文本编辑器 字体 font size
关联代码所在的文件夹:文件 打开文件夹 选择JavaDay01
步骤一:新建Java源代码文件并写入类
点击新建文件按钮,输入Java源代码文件名称和后缀名,例如Sample01.java
在文件中写入如下代码:
public class Sample{
}
步骤二:编译该源代码文件
步骤三:运行该字节码文件
1.8常见错误
语法错误
指在编译的过程中出现的一些错误,这种错误的原因主要由那些因素产生呢?
单词评写
遗漏分号
使用中文符号的问题
大括号不匹配
遗漏关键字单词
运行错误
是指编译能够通过,但是在运行期间出现的问题
逻辑错误
代码的运行结果和自己认为的结果不一样!
遗漏括号
遗漏分号
遗漏引号
非法使用中文符号
单词拼写错误
1.9编程练习题
课后作业
Demo02 Demo03 Demo05
第2章 数据与运算
2.1关键字
关键字是指被高级编程语言赋予特殊含义的一些单词,关键字一般都是由小写字母组成。好比是汉
语当中的一些专有名词:北京,天安门,兵马俑。不能乱用。
用于定义数据类型的关键字:byte short int long float double char boolean void class interface
用于定义数据类型值的关键字:true false null
用于定义流程控制语句的关键字:if else switch case default while do for break continue return
用于定义访问权限修饰符的关键字:public protected private
用于定义继承关系的关键字:extends implements
用于定义实例对象的关键字:new this super instanceof
用于定义函数类型的关键字:static final abstract synchronized
用于处理异常的关键字:try catch finally throw throws public class Demo01 { public static void main(String[] args) { System.out.println((9.5 * 4.5 - 2.5 * 3) / (45.5 - 3.5)); } }public class Demo04 { public static void main(String[] args) { System.out.println(14 / 1.6 / (45 * 60 + 30) * 3600 + “英里/小时”); } }public class Demo06 { public static void main(String[] args) { System.out.println(“x=” + (44.5 * 0.55 - 50.2 * 5.9) / (3.4 * 0.55 - 50.2 * 2.1)); System.out.println(“y=” + (3.4 * 5.9 - 44.5 * 2.1) / (3.4 * 0.55 - 50.2 * 2.1));} }
用于包的关键字:package import
其他的一些修饰关键字:native assert volatile transient
2.2标识符
标识符指的是我们在程序中对变量、函数、类、接口、常量所定义的名称,也就是说这些名称是我
们自定义的。
标识符必须满足以下组成规则:
标识符可以由数字、字母、下划线 _ 、美元符 $ 组成
标识符不能以数字开头,当然下划线和美元符其实是可以开头的,但不推荐
标识符不能是关键字
标识符也不能是Java内置类的名称
标识符可以为任意长度,但必须是一个连续的词
标识符严格区分大小写
标识符是为那些抽象的数据进行的自定义起名,为了方便程序的阅读和理解,起名尽量要有
含义,不要通篇都是a b c d e f g…。在一些特殊的情况下(循环里 特殊数学符号),可以使用i j k m n 之类的。
标识符命名的规范:
大驼峰式:主要针对类名,接口名。所有单词的首字母大写
小驼峰是:主要针对于变量名,函数名。除了第一个单词之外,其他单词首字母大写
常量规范:所有单词字母大写,单词与单词之间用下划线分隔
包名规范:所有单词字母小写,单词与单词之间用句号 . 分隔
2.3注释
注释是用于注解和说明程序的一些程序中的内置文本信息的,但这些内置文本不属于代码的范畴。
所以在对含有注释的源代码进行编译时,所生成的字节码中不含有注释。注释给人看的!
注释主要有三种:
单行注释 //注释内容 直到换行为止
多行注释 /* 注释内容 内部可以进行换行 /
文档注释 /* 注释内容 内部可以进行换行 */ :文档注释可以被编译器识别,并生成相应
的程序说明书。对某一个类进行文档生成时,该类必须是public型
2.4常量与进制
常量就是指在程序中直接出现的一些数据,也叫字面量
常量都有哪些:
整数常量
小数常量
字符常量:由一个字母、数字、符号被单引号( ‘’ )标识的数据
字符串常量:由若干个字母、数字、符号被双引号( “” )标识的数据
布尔类型常量
null常量
二进制转十进制
规律就是:1 1 1 1 1 1 1 1 - 128 64 32 16 8 4 2 1 10010101 十进制是 128 + 16 + 4 + 1 = 149
十进制149 = 9 * 100 + 4 * 101 + 1 * 102
二进制1011 = 1 * 20 + 1 * 21 + 0 * 22 + 1 * 23 = 1 + 2 + 0 + 8 = 11
一个二进制位称之为是一个比特 bit;八个比特称之为一个字节 byte;字节是计算机当中的最小计
数单元。
1 byte = 8 bit 1 kb = 1024 byte 1 mk = 1024 kb 1 gb = 1024 mb 1 tb = 1024 gb
十进制转二进制
53 ÷ 2 = 26 ~ 1 26 ÷ 2 = 13 ~ 0 13 ÷ 2 = 6 ~ 1 6 ÷ 2 = 3 ~ 0 3 ÷ 2 = 1 ~ 1 1 ÷ 2 = 0 ~ 1
余数从下到上 110101 = 1 + 4 + 16 + 32 = 53
二进制转八进制
10010101 => 010-010-101 => 0225 = 5 * 80 + 2 * 81 + 2 * 82 =5 + 16 + 128 = 149
二进制转十六进制
10010101 => 1001-0101 => 0x95 = 5 * 160 + 9 ^ 161 = 5 + 144 = 149
二进制转六进制
10010101 => 149 149 ÷ 6 = 24 ~ 5 24 ÷ 6 = 4 ~ 0 4 ÷ 6 = 0 ~ 4
所以六进制为405 => 5 * 60 + 0 * 61 + 4 * 62 = 5 + 0 + 144 = 149
负数的二进制
-29的二进制 将正数部分的二进制先取反 再加1 即为负数的二进制
00011101 =>取反 11100010 =>加1 11100011
2.5变量
指的是变化的量
变量的本质就是在内存中程序所处的进程中的一个临时存储区域
该区域的存储值有限制的
该区域值的变化必须是同类型的或向下兼容的
该区域有其自身的物理内存地址-指针
该区域中 存储值的限制 和 数据的变化类型 由 数据类型 来决定
该区域中 其空间的分配 和 空间的物理内存地址 由计算机底层来决定
回顾一下指针
2.6数据类型
在Java当中,数据类型主要分为两大类:
基本数据类型:在变量的空间中存储数据
整型
byte 1字节 2^8 256 -128~127 -2^7 ~ 2^7 - 1 short 2字节 2^16 65536 -32768~32767 -2^15 ~ 2^15 - 1 int 4字节
long 8字节
浮点型
float 4字节
double 8字节
字符型
char 2字节
布尔型
boolean 不确定
引用数据类型:数据是在堆内存中存储,变量仅仅存放的是数据在堆内存中的地址
字符串
数组
对象
2.7运算符
算术运算符
赋值运算符
比较运算符
运算的结果为布尔类型
大于
< 小于
= 大于等于
<= 小于等于
!= 不等于
逻辑运算符
& 单与
| 单或
^ 异或
! 非&& 双与
|| 双或
位运算符
&位于
| 位或
^ 位异或
右移
<< 左移
三目运算符
2.8常见错误
未声明变量,未初始化变量而使用变量
整型溢出问题
取整错误
一个是小数的问题,小数主要去的是近似值 想要得到一个0.5这个值的话 有可能会得到0.4999999
一个是整数的问题,1/3 = 0.3333 * 3 = 0.99999 数学上1
超出预期的除法问题
/左右两边是整数,结果为整数,如果出现小数则结果为小数
额外冗余的输入对象
2.9编程练习题
课后作业Demo08 Demo10 Demo12 Demo13 Demo14 Demo16
第3章 流程控制语句
3.1if 条件语句
单分支if语句‘
多分支if-else-if语句、
…CodeA if (布尔表达式1) { 语句组A; } else if (布尔表达式2) { 语句组B; } else if (布尔表达式3) { 语句组C; } else { 语句组D; }…CodeB
3.2switch分支语句
与if分支语句一样,都是对条件的判断。switch一般用在条件较多的情况下,但是有一个重要的细节
及时,if语言可以对区间值或固定值进行判断,switch只能对固定值进行判断。
switch的一些使用细节
switch所传入的变量,char,byte,short,int,String或者枚举类型
值1,值2,一直到值n,这几个值必须是同一个数据类型的
当变量匹配的相关case的值的时候,执行case中的语句,直到遇到break结束;如果该case语句
中没有break,则继续向下执行,直到遇到另外一个break结束
3.3for循环语句
循环主要解决具有规律性的且具有重复性的代码问题,避免程序冗余
循环的四要素
1循环的初始化:循环的第1次执行从哪里开始
2循环的继续条件:循环从当前轮是否向后执行下一轮
3循环体:需要被循环执行的部分
4循环的步长、周期:当前循环到下一轮循环之间的变化
我们常见的循环问题可以分为两大类:
已知循环次数的 一般用for语句做
未知循环次数但是已知循环结束条件 一般用while语句做
3.4while循环语句
while循环主要用于解决循环次数未知,但循环结束条件已知的情况。
while其实和for循环是可以相互转换的,是因为都逃不开循环四要素
3.5break、continue跳转语句
break在循环语句中叫做终止语句,终止的是break最近的一层循环
continue在循环语句中叫做跳过语句,跳过本次循环开启下一轮循环
3.6编程练习题
课后作业