黑马程序员Java零基础视频教程_上部(Java入门,含斯坦福大学练习题+力扣算法题和大厂java面试题)_哔哩哔哩_bilibili
JDK17 API帮助文档
1.java入门-01-java学习介绍
企业需要的是成品的人才
考虑到学习成本的问题以及产出
空杯心态
掌握java近30年来的核心思想面向对象
掌握java中最核心的知识点(api,集合,bio,nio,多线程,网络编程)
养成最为规范的编码规范(阿里巴巴的编码规范)
手写tomcat服务器,深入学习虚拟机,算法,数据结构
老师多年的经验 公司里的代码都是这些东西
不墨迹
侧重分析型讲解
讲法新颖,有趣味
持续更新
课程资料全部免费 -》反反复复即可
想要转行的
大学中有志青年
想学又怕学不会的
真零基础
你有梦想
不惧挑战
早日成为java大牛
早入成为java界的黑马
不要让课程在收藏夹里吃灰
过去最大的问题就是信息封锁过于严重,现在呢,不严重了,都送到你嘴里了,你还不学么
学历+技能 -》 行业前列 不管在哪上班都不能放弃自我提升以及需要争取的福利,不能总是被压榨 当狗使唤
- 环境配置
- 常见命令
- 综合使用-批处理
2.java入门-02-人机交互小故事
1981 ms-dos
xerox 施乐
ms-win 1.0
apple-lisa
GUI缺点:消耗内存,运行速度慢
3.java入门-03-打开cmd
win+R->cmd
4.java入门-04-cmd常见命令
盘符名称+冒号 -> E: 切换到E盘
dir 查看当前路径下的内容 隐藏的也会展示出来
cd 目录 进入单级目录
cd … 回退到上一级目录
cd 目录1\目录2… 进入多级目录
cd \ 回退到盘符目录
cls 清屏
exit 退出命令提示符窗口
5.java入门-05-利用cmd打开qq并配置环境变量
win+e 打开文件管理器
找到启动对应程序的启动程序 -》 进入对应文件夹 -》 启动 vscode.exe
“C:\Users\win10\AppData\Local\Programs\Microsoft VS Code\Code.exe”
cd C:\Users\win10\AppData\Local\Programs\Microsoft VS Code
Code.exe
这样太麻烦了,任意目录下都能打开vscode
配置环境变量:搜索:环境-》配置环境变量
C:\Users\win10\AppData\Local\Programs\Microsoft VS Code配置到path里,从上往下找,移到最上面
cmd里之后任意目录下直接Code.exe就可以打开了
为什么要配置环境变量:任意路径下都可以打开
场景:写个脚本,或者用java直接打开对应的路径,自动化的打开需要的环境
6.java入门-06-java概述和学习方法
0基础:不追求深度,追求广度,综合使用,锻炼逻辑思维
后续,深入
java基础语法
面向对象
api
字符串
集合
拼图游戏
基础语法
java入门
小概念
idea和运算符
判断和循环
方法
数组
斯坦福大学练习题
java是什么
java程序初体验
java的前世今生
java为什么这么火
jre和jdk
java是什么
排名前三
7.java入门-07-JDK17的下载与安装
特性:一文总结Java\JDK 17发布的新特性-阿里云开发者社区
注意:cpu架构-操作系统-位数
加速地址:https://hub.gitmirror.com/
下载链接:https://github.com/dragonwell-project/dragonwell17/releases/download/dragonwell-standard-17.0.10.0.11%2B7_jdk-17.0.10-ga/Alibaba_Dragonwell_Standard_17.0.10.0.11.7_x64_windows.zip
安装目录:
bin:该路径下存放了各种工具命令 比如javac java
conf:该目录下存放了相关配置文件
include:该目录下存放了一些平台特定的头文件
jmods:该路径下存放了各种模块
legal:该路径下存放了各模块授权文档
lib:存放了工具的一些补充jar包
配置:
JAVA_HOME=C:\Users\win10\Desktop\dragonwell-17.0.10.0.11+7-GA --> 如果换版本其实就是把这个换了
Path:%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin
CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
检测:
java -version
8.java入门-08-hello world小案例
vscode:
插件: extension pack for java java扩展包 -> 支持自动补全
chinese 语言包
为什么是helloworld
public class Demo {
public static void main(String[] args) {
System.out.println("hello");
}
}
javac Demo.java -> Demo.class 编译 将字符串编译成字节码
java Demo ->实际运行的是Demo.class 运行 -》 将中间的字节码翻译成二进制运行
9.java入门-09-常见问题
bug:过去是因为进入了虫子不能运行了
具备识别bug的能力-》多看
具备分析bug的能力-》多思考,多查资料
具备解决bug的能力-》多尝试,多总结
标点符号:必须是英文的 -》英文的比中文的标点符号占用少
10.java入门-10-环境变量
为什么要配置path环境变量?
我们想要在任意的目录下都可以打开指定的软件,就可以把软件的路径配置到环境变量中
11.java入门-11-nodepad
高级记事本,editplus,notepad++,sublime
12.java入门-12-java语言的发展
sun:oak 《- james gosling 1990
1992:完成了新平台的能力 类库等
1994:完成了第一个oak语言的网页,改名为java,因为oak已经被注册了
1995 :正式发布了java
1996:1.0
1997:1.1
1998:1.2
2000:1.3
2002:1.4
2005:5.0 - 第一个大版本
2006:6.0
2009:oracle收购了sun
2011:7.0
2014:8.0 - LTS 最为稳定
2017.9:9.0
2018.3 :10.0
2018.9:11.0 - LTS
2019.3:12.0
2019.9:13.0
2020.3 :14.0
2020.9:15.0
2021.3:16.0
2021.9:17.0 - LTS 学习的版本
为了不被市场淘汰,要快速迭代紧贴市场需求
13.java入门-13-java能干什么
java se:java语言的标准版本,用于桌面应用的开发 -》让用户在最短的时间内找到他们需要的功能,同时主动带领用户完成他们的工作并得到最好的体验 -》缺陷,比较复杂的动画的时候,java加载的速度有可能比较慢,桌面领域最合适的是c或者c++
学习javase很重要,是javaee的基础,这个阶段注重逻辑思维的养成
java me:jave语言的小型版,用于嵌入式电子设备或者小型移动设备 过去用于塞班等系统 随着塞班的没落 现在已经很少了java ee: java语言的企业版,用于web方向的网站开发,在这个领域,是当之无愧的no1;网站开发:浏览器+服务器
java能做什么:
桌面应用开发:各种税务管理软件,idea,clion,pycharm,因为java语言比较规范,健壮性好,不会有那么多的漏洞还有安全性问题
企业级应用开发:微服务,springcloud 还有一个go语言,国内go语言小众
移动应用开发:鸿蒙,android,医疗设备
科学计算:matlab
大数据开发:hadoop
游戏开发:我的世界 minecraft
14.java入门-14-java为什么这么火
用户量:
适用面:
与时俱进:更新速度
自身特点:面向对象,跨平台,开源,简单易用,多线程,安全性
面向对象:根据模板把东西创建出来
安全性:写出来的代码很安全漏洞少
多线程:就是同时做多件事
简单易用:
安全性:开源
跨平台:windows,mac,linux 写一次到处运行
15.java入门-15-java跨平台原理
高级语言的编译运行方式
编程:java写.java c写.c python写.py代码
编译:机器只认识0011的机器语言,把.java .c .py代码转化让机器认识的过程
运行:让机器执行编译后的指令
编译型:整体翻译
解释型:按行翻译
混合型,半编译,半解释:先编译后解释
python是天生开源的,必须把代码交给别人运行
16.java入门-16-JDK和JRE
JDK:java开发工具包
JVM:java虚拟机,是真正运行java代码的地方
核心类库:System.out.println(“Hello World”);
开发工具:javac 编译工具 java 运行工具 jdb 调试工具 jhat 内存分析工具。。。
JRE:java运行环境
JDK包含JRE
JRE包含JVM
第一个模块结束了
17.java基础概念-01,02-注释和关键字
注释
关键字
字面量
变量
注释:注释就是对代码的解释说明
单行注释: //注释信息
多行注释:/注释信息/
文档注释:/*注释信息/ 暂时用不到
文档注释:javadoc自动生成html 暂时用不到 不要好高骛远
public class Demo {
//main方法,表示程序的主入口
public static void main(String[] args) {
/*输出打印语句*/
System.out.println("hello");
}
}
注释的内容不参与编译和运行,仅仅是对代码的解释说明
不管是单行注释还是多行注释,在书写的时候都不要嵌套
关键字:被java赋予了特定含义的英文单词
关键字的字母全部小写
常用代码编辑器,针对关键字有特殊的颜色标记,非常直观
class:用于创建/定义一个类,类是java最基本的组成单元
18.java基础概念-03-字面量
告诉程序员:数据在程序中的书写格式
public class ValueDemo1 {
// main方法,表示程序的主入口
public static void main(String[] args) {
// 目标:需要掌握常见的数据在代码中如何书写的
// 整数
System.out.println(666);
System.out.println(-777);
// 小数
System.out.println(1.93);
System.out.println(-3.71);
// 字符串
System.out.println("黑马程序员");
System.out.println("尼古拉斯");
// 字符串
System.out.println('男');
System.out.println('女');
// 布尔
System.out.println(true);
System.out.println(false);
// 空类型
// null不能直接打印
// 如果要打印null,只能用字符串
// System.out.println(null);
System.out.println("null");
}
}
特殊字符:
\t \r \n…
\t 制表符:缩进,对齐,打空格
在打印的时候,把前面字符串的长度补齐到8,或者8的整数倍,最少补一个空格,最多补8个空格 可以让数据对齐
public class ValueDemo2 {
public static void main(String[] args) {
System.out.println("nameage");
System.out.println("tom23");
}
}
--------------------------------------------
nameage
tom23
-----------------------------------------------
public class ValueDemo2 {
public static void main(String[] args) {
System.out.println("name" + '\t' + "age");
System.out.println("tom" + '\t' + "23");
}
}
------------------------------------------------
> 自动补齐到8个字符
name age
tom 23
19.java基础概念-04-变量-基本用法
变量:在程序的执行过程中,值有可能发生改变的量(数据)
变量使用场景:当某个数据经常发生改变的时候,我们可以用变量存储,当数据变化时,只要修改变量里面的记录的值即可
定义格式:数据类型 变量名=数据值
public class ValueDemo2 {
//主入口
public static void main(String[] args) {
// 定义变量
//数据类型 变量名=数据值
//数据类型;限定了变量
}
}
71.方法-09-方法的基本内存原理
栈:方法运行时使用的内存,方法进栈运行,运行完毕就出栈
堆:new出来的,都在堆内存中开辟了一个小空间
方法区:存储可以运行的class文件
本地方法栈:jvm在使用操作系统功能的时候使用,和我们开发无关
寄存器:给cpu使用,和我们开发无关
方法调用的基本内存原理
执行完了以后逐步出栈,最后栈清空
72.方法-10-什么是基本数据类型和引用数据类型
73.方法-11-方法的值传递
每个方法有自己的内存空间
public class ValueDemo2 {
public static void main(String[] args) {
int number = 100;
System.out.println("调用chage方法前:" + number);
change(number);
System.out.println("调用change方法后:" + number);
}
public static void change(int number) {
number = 200;
}
}
------------------------------------------------
调用chage方法前:100
调用change方法后:100
public class ValueDemo2 {
public static void main(String[] args) {
int number = 100;
System.out.println("调用chage方法前:" + number);
number = change(number);
System.out.println("调用change方法后:" + number);
}
public static int change(int number) {
number = 200;
return number;
}
}
-----------------------------------------------
调用chage方法前:100
调用change方法后:200
传递引用数据类型
public class ValueDemo2 {
public static void main(String[] args) {
int[] number = { 10, 20, 30 };
System.out.println("调用chage方法前:" + number[1]);
change(number);
System.out.println("调用change方法后:" + number[1]);
}
public static void change(int[] number) {
number[1] = 200;
}
}
----------------------------------------------
调用chage方法前:20
调用change方法后:200
总结
87.面向对象-07-三种情况的对象内存图
执行完出栈,对象无指向变成垃圾
没有指向以后,对象就会变成垃圾以后都用不了了
89.面向对象-09-this的内存原理
局部变量,就近调用原则
87.字符串-03-String构造方法代码实现以及内存分析
字符串是不能发生改变的
先拿着这些数字到ascii的码表里查,查到了再转换成对应的
应用场景:网络中传输的数据其实都是字节信息
//一般要把字节信息进行转换,转换成字符串,此时要用到这个构造
StringTable只有直接赋值的字符串才会在串池里
字符串不能直接发生改变的
107.字符串-12-字符串相关类的底层原理
111.ArrayList-01-集合的基本使用
不要让课程在收藏夹里吃灰
为什么要有集合?
同时存储多个元素,该怎么办
数组的长度是固定的,集合的长度是可以变的,自动伸缩的
数组可以存储基本数据类型,可以存引用数据类型
集合存储数据类型的特点:
只能存引用数据类型,如果要存基本数据类型需要用对应包装类