跟着黑马学java-黑马程序员Java零基础视频教程_上部(Java入门,含斯坦福大学练习题+力扣算法题和大厂java面试题)

黑马程序员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

image.png

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代码转化让机器认识的过程
运行:让机器执行编译后的指令

编译型:整体翻译
解释型:按行翻译
混合型,半编译,半解释:先编译后解释

image.png
image.png

image.png
python是天生开源的,必须把代码交给别人运行
image.png

image.png

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最基本的组成单元

image.png

18.java基础概念-03-字面量

告诉程序员:数据在程序中的书写格式

image.png

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-变量-基本用法

变量:在程序的执行过程中,值有可能发生改变的量(数据)
变量使用场景:当某个数据经常发生改变的时候,我们可以用变量存储,当数据变化时,只要修改变量里面的记录的值即可

定义格式:数据类型 变量名=数据值
image.png

public class ValueDemo2 {
    //主入口
  public static void main(String[] args) {
    // 定义变量
      //数据类型 变量名=数据值
      //数据类型;限定了变量
  }
}

71.方法-09-方法的基本内存原理

栈:方法运行时使用的内存,方法进栈运行,运行完毕就出栈
堆:new出来的,都在堆内存中开辟了一个小空间
方法区:存储可以运行的class文件
本地方法栈:jvm在使用操作系统功能的时候使用,和我们开发无关
寄存器:给cpu使用,和我们开发无关

方法调用的基本内存原理
image.png
image.png
执行完了以后逐步出栈,最后栈清空

72.方法-10-什么是基本数据类型和引用数据类型

image.png
image.png
image.png

73.方法-11-方法的值传递

image.png
image.png
每个方法有自己的内存空间

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

传递引用数据类型

总结

image.png

87.面向对象-07-三种情况的对象内存图

image.png
image.png
一个对象
image.png

执行完出栈,对象无指向变成垃圾

两个对象
两个引用指向同一个对象
image.png
image.png
没有指向以后,对象就会变成垃圾以后都用不了了

89.面向对象-09-this的内存原理

image.png
局部变量,就近调用原则
image.png
image.png
image.png

87.字符串-03-String构造方法代码实现以及内存分析

image.png
image.png
image.png

字符串是不能发生改变的

image.png
先拿着这些数字到ascii的码表里查,查到了再转换成对应的
应用场景:网络中传输的数据其实都是字节信息
//一般要把字节信息进行转换,转换成字符串,此时要用到这个构造
image.png
image.png
StringTable只有直接赋值的字符串才会在串池里
直接赋值的
字符串不能直接发生改变的
image.png
创建对象的

107.字符串-12-字符串相关类的底层原理

111.ArrayList-01-集合的基本使用

不要让课程在收藏夹里吃灰

为什么要有集合?
同时存储多个元素,该怎么办
数组的长度是固定的,集合的长度是可以变的,自动伸缩的
数组可以存储基本数据类型,可以存引用数据类型

集合存储数据类型的特点:
只能存引用数据类型,如果要存基本数据类型需要用对应包装类

image.png

  • 29
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
力扣是一个在线编程平台,提供了大量的算法目,可以帮助程序员提高算法能力。回溯算法是一种搜索算法,它通过不断地尝试所有可能的解来求解问。在回溯算法中,我们首先定义一个解空间,然后从解空间中搜索所有可能的解,直到找到符合要求的解为止。回溯算法通常用于求解组合问、排列问、子集问等。 在 Java 中实现回溯算法,通常需要定义一个递归函数来搜索解空间。在递归函数中,我们首先判断当前状态是否符合要求,如果符合要求,则将当前状态加入到解集中;否则,我们继续搜索下一个状态。在搜索下一个状态时,我们需要对当前状态进行一些修改,然后递归调用自身来搜索下一个状态。当搜索完所有可能的状态后,我们需要回溯到上一个状态,继续搜索其他可能的状态。 以下是回溯算法的一般步骤: 1. 定义解空间:确定问的解空间,并定义一个数据结构来表示解空间中的每个状态。 2. 确定约束条件:确定哪些状态是合法的,并定义一个函数来判断当前状态是否符合要求。 3. 确定搜索策略:确定搜索解空间的顺序,并定义一个函数来生成下一个状态。 4. 搜索解空间:使用递归函数搜索解空间,如果当前状态符合要求,则将其加入到解集中;否则,继续搜索下一个状态。 5. 回溯:当搜索完所有可能的状态后,回溯到上一个状态,继续搜索其他可能的状态。 以下是一个力扣目的回溯算法 Java 实现示例: ``` class Solution { List<List<Integer>> res = new ArrayList<>(); List<Integer> path = new ArrayList<>(); public List<List<Integer>> subsets(int[] nums) { dfs(nums, 0); return res; } private void dfs(int[] nums, int start) { res.add(new ArrayList<>(path)); for (int i = start; i < nums.length; i++) { path.add(nums[i]); dfs(nums, i + 1); path.remove(path.size() - 1); } } } ``` 该算法用于求解给定数组的所有子集。在递归函数中,我们首先将当前状态加入到解集中,然后从当前位置开始搜索下一个状态。在搜索下一个状态时,我们将当前元素加入到路径中,并递归调用自身来搜索下一个状态。当搜索完所有可能的状态后,我们需要回溯到上一个状态,继续搜索其他可能的状态。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值