Java入门全网最详细 - 从入门到转行

news2024/9/23 11:34:02

Java基础入门 - 坚持

  • Java 基本介绍
  • Java 学习须知
  • Java 学习文档
  • Java 基础
    • Java Hello World
    • Java 变量
    • Java 数据类型
    • Java 运算符
    • Java 修饰符
    • Java 表达式 & 语句 & 代码块
    • Java 注释
    • --------------------------------------------------------------------------
    • Java 控制语句
      • Java if else 条件
      • Java switch case 条件
      • Java for 循环
      • Java while 循环
      • Java break 语句
      • Java continue 语句
    • --------------------------------------------------------------------------
    • Java 数组
      • Java 数组
      • Java 多维数组
      • Java 数组复制
    • --------------------------------------------------------------------------
    • Java 日期与时间(Java8新增)
    • Java 正则表达式
    • Java Scanner(获取用户输入)
    • --------------------------------------------------------------------------
    • Java 面向对象详解
      • Java 面向对象 第一大部分
        • Java 类与对象
        • Java 方法
        • Java 方法重载
        • Java 构造方法
        • Java 字符串
        • Java 访问权限
        • Java this 关键字
        • Java final 关键字
        • Java 递归(恐怖故事)
        • Java instanceof 操作符
      • Java 面向对象 第二大部分
        • Java 继承
        • Java 方法重写
        • Java super 关键字
        • 抽象类 & 抽象方法
        • Java 接口
        • Java 多态
        • Java 封装
      • Java 面向对象高级(第三大部分)
        • 嵌套 & 内部类
        • Java static 关键字
        • Java 匿名内部类
        • Java 单例(两种)
        • Java 枚举类
        • Java 枚举构造方法
        • Java 枚举字符串
        • Java 反射
    • --------------------------------------------------------------------------
    • Java 异常处理
    • --------------------------------------------------------------------------
    • Java 集合
      • Java 集合框架
      • Java 集合接口
      • Java List 接口
      • Java ArrayList
      • Java Vector
      • Java Stack
    • --------------------------------------------------------------------------
    • Java 队列
      • Java 队列接口
      • Java 优先级队列
      • Java 双端队列接口
      • Java LinkedList
      • Java 数组队列
      • Java 阻塞队列接口
      • Java ArrayBlockingQueue
      • Java LinkedBlockingQueue
    • --------------------------------------------------------------------------
    • Java Map
      • Java Map 接口
      • Java HashMap
      • Java LinkedHashMap
      • Java WeakHashMap
      • Java EnumMap
      • Java SortedMap 接口
      • Java NavigableMap 接口
      • Java TreeMap
      • Java ConcurrentMap 接口
      • Java ConcurrentHashMap
    • --------------------------------------------------------------------------
    • Java Set
      • Java Set 接口
      • Java HashSet
      • Java EnumSet
      • Java LinkedHashSet
      • Java SortedSet 接口
      • Java NavigableSet
      • Java TreeSet
      • Java 集合算法
      • Java 迭代器接口
      • Java Listlterator 接口
    • --------------------------------------------------------------------------
    • Java 字节流
      • Java IO流简介
      • Java InputStream
      • Java OutputStream
      • Java FileInputStream
      • Java FileOutputStream
      • Java ByteArrayInputStream
      • Java ByteArrayOutputStream
      • Java ObjectInputStream
      • Java ObjectOutputStream
      • Java BufferedReader
      • Java BufferedWriter
      • Java StringWriter
      • Java PrintWriter
    • --------------------------------------------------------------------------
    • Java 并发编程
      • 进程与线
      • 多线程的入门类和接口
      • 线程组和线程优先级
      • 线程的状态及主要转化方法
      • 线程间的通信
    • 重排序和 happens-before
      • volatile
      • synchronized 与锁
      • CAS 与原子操作
      • AQS
      • 计划任务
      • Stream 并行计算原理
      • Frok/Join
      • 通信工具类
      • CopyOnWrite
      • 并发集合容器
      • 锁接口和类
      • 阻塞队列
      • 线程池原理
    • --------------------------------------------------------------------------
    • Java 虚拟机
      • Java 内存结构
      • Java 垃圾回收
      • JVM 内存区域
      • Java 虚拟机栈
      • class 文件
      • 字节码指令
      • JVM 参数调优
      • Java 对象模型
      • HotSpot
      • 类加载机制
      • 编译和反编译
      • 反编译工具(javap)
      • JIT
      • 虚拟机性能监控和故障处理工具(jps、jstack、jmap、jstat、jconsole、javap)
    • --------------------------------------------------------------------------
    • 后话

Java 基本介绍


Java是一种通用的、高级的、面向对象的编程语言,最初由Sun Microsystems(目前为Oracle公司)于1995年发布。它被设计成一种可以在各种不同的环境中运行的语言,不论是桌面应用程序、企业级应用程序、移动设备或集群服务器,都可以使用Java来开发。

Java的特点包括:

  • 简单性:Java的语法相对于其他编程语言比较简单,易于学习和理解。

  • 面向对象:Java是一种完全的面向对象编程语言,支持类、继承、封装和多态等核心特性。

  • 平台无关性:Java编写的程序可以在不同的操作系统和硬件平台上运行。这得益于Java虚拟机(JVM),它可以把Java代码翻译成可以在任何计算机上运行的字节码。

  • 安全性:Java具有严格的安全机制,基于运行时的检查和验证机制来保证程序的安全性,防止恶意程序对系统造成损害。

  • 可移植性:Java语言的跨平台性保证了程序的可移植性,使得程序无需针对不同平台重新编写,只需编写一次即可在不同平台上运行。

  • 多线程:Java在语言层面就支持多线程编程,并且提供了丰富的库函数,有效地支持并发编程。

Java编写的程序可以划分为两个部分:Java编译器将源代码转换成字节码文件,JVM则将字节码解释、编译并执行。Java有着广泛的应用领域,包括Web开发、移动应用开发、游戏开发、企业级应用开发等。


Java 学习须知

本篇文章可以实现轻松带你入门Java, 在你认真学习的前提下, 一切都不成问题。
任何一门语言的学习都是漫长且枯燥的,读者本人要有足够的自制力。


学习周期: 7-15天不等(有足够时间)
学习目标: Java基础, Java高级
学习规划(建议): 不建议上班过程中学习,推荐下班回家空余时间进行学习, 如果你是学生请随意!


如果您觉得本教程有某些地方存在一些问题,欢迎评论区指正!
如果您觉的本教程晦涩难懂,请立马更换教程,选择适合自己的教程进行观看,避免走弯路


Java 学习文档

在此,我为大家整理了一小部分的Java学习文档
韩信带净化,如果您有更好的学习文档,提前感谢您上贡 贡献到评论区!~

Java API 中文文档(百度网盘): Java基础材料, 提取码: 0621
失效评论找我,随叫随到


Java 基础

至2023年,Java语言仍是主流后端语言,与其他后端语言占比为:12.22%,位列第三,其中第一与第二分别为:Python,C

如果你正处于初学Java,并未配置Java环境变量,下面是推荐的Java配置环境变量的博客,配置Java环境变量为学习Java语言的首发站,希望大家都能用心学习,一起学习,一起赚大钱_(:з」∠)_


Java配置环境变量: Java配置环境变量
作者: 心猿意马归

Java Hello World

输出 Hello World

public class HelloWorld { // 类名必须与文件名相同
	public static viod main(string[] args) { // main方法为程序入口
		system.out.println("Hello World"); // Java的每个输出与条件语句后面必须带;结束字段
	}
}

使用javac HelloWorld.java,即可输出Hello World

Hello World

Java 变量

Java是一种强类型语言,在Java中,有不同类型的变量,变量一般都是这样被定义的

type * = *;

其中type为类型,type后面紧跟着的为变量名,变量名可自定义。
如:

int num = 1;
float f1 = 1.22f;
boolean b1 = true;

Java 数据类型

在Java中,有8中基本数据类型,8中基本数据类型可以分为三类,分别为:数值型,字符型,布尔型。

类型类型名称
数值型byte, short, int, long, float, double
布尔型boolean
字符型char

在这里插入图片描述

整型: byte(字节型)、short(短整型)、int(整型)、long(长整型)

byte numA = 100;
short numB = 1000;
int numC = 100000; 
long numD = 100000L; 

声明长整型时必须在结尾加L或l。

浮点型:float(单精度型/浮点型) 、double(双精度型)

float fA = 1.1f;
double fB = 1.2;

声明浮点型时在结尾加F或f。

字符: char(字符型)

char cA = 'a';

声明字符型时,要加单引号,并且单引号内只能放一个符号。

布尔型:Boolean

布尔型为 true/false,一般用来做逻辑判断

引用数据类型

Java 运算符

Java 修饰符

Java 表达式 & 语句 & 代码块

Java 注释


--------------------------------------------------------------------------

Java 控制语句

控制语句

Java if else 条件

Java switch case 条件

Java for 循环

Java while 循环

Java break 语句

Java continue 语句


--------------------------------------------------------------------------

Java 数组

数组

Java 数组

Java 多维数组

Java 数组复制


--------------------------------------------------------------------------

Java 日期与时间(Java8新增)

Java 正则表达式

Java Scanner(获取用户输入)


--------------------------------------------------------------------------

Java 面向对象详解

面向对象

Java 面向对象 第一大部分

Java 类与对象

Java 方法

Java 方法重载

Java 构造方法

Java 字符串

Java 访问权限

Java this 关键字

Java final 关键字

Java 递归(恐怖故事)

Java instanceof 操作符

Java 面向对象 第二大部分

Java 继承

Java 方法重写

Java super 关键字

抽象类 & 抽象方法

Java 接口

Java 多态

Java 封装

Java 面向对象高级(第三大部分)

嵌套 & 内部类

Java static 关键字

Java 匿名内部类

Java 单例(两种)

Java 枚举类

Java 枚举构造方法

Java 枚举字符串

Java 反射


--------------------------------------------------------------------------

Java 异常处理

Java抛出的错误称之为异常, 但是不是所有错误都是异常, 并且有些错误是可以避免的

异常发生的原因有很多,通常包含以下几大类:

  • 用户输入了非法数据。
  • 要打开的文件不存在。
  • 网络通信时连接中断,或者JVM内存溢出。

这些异常有的是因为用户错误引起,有的是程序错误引起的,还有其它一些是因为物理错误引起的。
要理解Java异常处理是如何工作的,你需要掌握以下三种类型的异常:


检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。


运行时异常: 运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。


错误: 错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。

Java 程序通常不捕获错误。错误一般发生在严重故障时,它们在Java程序处理的范畴之外。

Error 用来指示运行时环境发生的错误。

例如,JVM 内存溢出。一般地,程序不会从错误中恢复。

异常类有两个主要的子类:IOException 类和 RuntimeException 类。

Exception 类的层次, 所有的异常类是从 java.lang.Exception 类继承的子类。
Exception 类是 Throwable 类的子类。除了Exception类外,Throwable还有一个子类Error 。
在这里插入图片描述
Java 内置异常类

Java 语言定义了一些异常类在 java.lang 标准包中。

标准运行时异常类的子类是最常见的异常类。由于 java.lang 包是默认加载到所有的 Java 程序的,所以大部分从运行时异常类继承而来的异常都可以直接使用。

Java 根据各个类库也定义了一些其他的异常,下面的表中列出了 Java 的非检查性异常。

异常描述
ArithmeticException当出现异常的运算条件时,抛出此异常。例如,一个整数"除以零"时,抛出此类的一个实例。
ArrayIndexOutOfBoundsException用非法索引访问数组时抛出的异常。如果索引为负或大于等于数组大小,则该索引为非法索引。
ArrayStoreException试图将错误类型的对象存储到一个对象数组时抛出的异常。
ClassCastException当试图将对象强制转换为不是实例的子类时,抛出该异常。
IllegalArgumentException抛出的异常表明向方法传递了一个不合法或不正确的参数。
IllegalMonitorStateException抛出的异常表明某一线程已经试图等待对象的监视器,或者试图通知其他正在等待对象的监视器而本身没有指定监视器的线程。
IllegalStateException在非法或不适当的时间调用方法时产生的信号。换句话说,即 Java 环境或 Java 应用程序没有处于请求操作所要求的适当状态下。
IllegalThreadStateException线程没有处于请求操作所要求的适当状态时抛出的异常。
IndexOutOfBoundsException指示某排序索引(例如对数组、字符串或向量的排序)超出范围时抛出。
NegativeArraySizeException如果应用程序试图创建大小为负的数组,则抛出该异常。
NullPointerException当应用程序试图在需要对象的地方使用 null 时,抛出该异常
NumberFormatException当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常。
SecurityException由安全管理器抛出的异常,指示存在安全侵犯。
StringIndexOutOfBoundsException此异常由 String 方法抛出,指示索引或者为负,或者超出字符串的大小。
UnsupportedOperationException当不支持请求的操作时,抛出该异常。

下面的表中列出了 Java 定义在 java.lang 包中的检查性异常类。

异常描述
ClassNotFoundException应用程序试图加载类时,找不到相应的类,抛出该异常。
CloneNotSupportedException当调用 Object 类中的 clone 方法克隆对象,但该对象的类无法实现 Cloneable 接口时,抛出该异常。
IllegalAccessException拒绝访问一个类的时候,抛出该异常。
InstantiationException当试图使用 Class 类中的 newInstance 方法创建一个类的实例,而指定的类对象因为是一个接口或是一个抽象类而无法实例化时,抛出该异常。
NoSuchFieldException请求的变量不存在。
NoSuchMethodException请求的方法不存在。

如何捕获异常?

使用 try 和 catch 关键字可以捕获异常。try/catch 代码块放在异常可能发生的地方。

  • try / catch代码块中的代码称为保护代码,使用 try / catch 的语法如下:
try
{
   // 程序代码
   ...notErr
}catch(ExceptionName error)
{
   //Catch 块
   ...err
}

Catch 语句包含要捕获异常类型的声明。当保护代码块中发生一个异常时,try 后面的 catch 块就会被检查。

如果发生的异常包含在 catch 块中,异常会被传递到该 catch 块,这和传递一个参数到方法是一样。

try catch 案例

import java.io.*;
public class ExcepTest{
 
   public static void main(String args[]){
      try{
         int a[] = new int[2];
         System.out.println("Access element three :" + a[3]);
      }catch(ArrayIndexOutOfBoundsException e){
         System.out.println("Exception thrown  :" + e);
      }
      System.out.println("Out of the block");
   }
}

该方法声明一个 长度为2的数组,当访问它第4个元素时,就会抛出一个异常

以上代码编译运行输出结果如下:

Exception thrown: java.lang.ArrayIndexOutOfBoundsException: 3
Out of the block

更多异常捕获请详看文档或查询相关书籍,在此就 不 一 一 赘 述。 (O.o)


--------------------------------------------------------------------------

Java 集合

集合

Java 集合框架

Java 集合接口

Java List 接口

Java ArrayList

Java Vector

Java Stack


--------------------------------------------------------------------------

Java 队列

队列

Java 队列接口

Java 优先级队列

Java 双端队列接口

Java LinkedList

Java 数组队列

Java 阻塞队列接口

Java ArrayBlockingQueue

Java LinkedBlockingQueue


--------------------------------------------------------------------------

Java Map

JavaMap

Java Map 接口

Java HashMap

Java LinkedHashMap

Java WeakHashMap

Java EnumMap

Java SortedMap 接口

Java NavigableMap 接口

Java TreeMap

Java ConcurrentMap 接口

Java ConcurrentHashMap


--------------------------------------------------------------------------

Java Set

Set

Java Set 接口

Java HashSet

Java EnumSet

Java LinkedHashSet

Java SortedSet 接口

Java NavigableSet

Java TreeSet

Java 集合算法

Java 迭代器接口

Java Listlterator 接口


--------------------------------------------------------------------------

Java 字节流

IO流

Java IO流简介

Java InputStream

Java OutputStream

Java FileInputStream

Java FileOutputStream

Java ByteArrayInputStream

Java ByteArrayOutputStream

Java ObjectInputStream

Java ObjectOutputStream

Java BufferedReader

Java BufferedWriter

Java StringWriter

Java PrintWriter


--------------------------------------------------------------------------

Java 并发编程

并发

进程与线

多线程的入门类和接口

线程组和线程优先级

线程的状态及主要转化方法

线程间的通信

重排序和 happens-before

volatile

synchronized 与锁

CAS 与原子操作

AQS

计划任务

Stream 并行计算原理

Frok/Join

通信工具类

CopyOnWrite

并发集合容器

锁接口和类

阻塞队列

线程池原理


--------------------------------------------------------------------------

Java 虚拟机

虚拟机

Java 内存结构

Java 垃圾回收

JVM 内存区域

Java 虚拟机栈

class 文件

字节码指令

JVM 参数调优

Java 对象模型

HotSpot

类加载机制

编译和反编译

反编译工具(javap)

JIT

虚拟机性能监控和故障处理工具(jps、jstack、jmap、jstat、jconsole、javap)


--------------------------------------------------------------------------

后话

规划学习路线以及建议

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/505794.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在vue中引入高德地图

既然要用到高德地图首先要申请成为高德地图开发者,并申请使用高德地图的key这两点在这篇文章就不过多赘述,有需要的小伙伴可以查查资料,或者去高德地图api官网都有很详细的介绍。高德地图官网 简单提一下申请秘钥流程(web端&#…

Python入门教程+项目实战-12.2节: 字典的操作方法

目录 12.2.1 字典的常用操作方法 12.2.2 字典的查找 12.2.3 字典的修改 12.2.4 字典的添加 12.2.5 字典的删除 12.2.6 知识要点 12.2.7 系统学习python 12.2.1 字典的常用操作方法 字典类型是一种抽象数据类型,抽象数据类型定义了数据类型的操作方法&#x…

想成为神经网络大师?这些常用算法和框架必须掌握!

神经网络是机器学习和人工智能领域中的一种常用算法,它在图像识别、自然语言处理等方面都有广泛的应用。如果你想入门神经网络,那么这篇文章就是为你准备的。 首先,了解基本概念是入门神经网络的基础。神经元是神经网络的基本组成部分&#x…

AQS底层源码解析

可重入锁 又叫递归锁,同一个线程在外层方法获得锁的时候,再进入该线程内层方法会自动获取锁,(前提锁对象是同一个对象)。不会因为之前已经获取过还没释放而阻塞。 Synchronized和ReentrantLock都是可重入锁&#xff…

玩游戏时突然弹出”显示器驱动程序已停止响应并且已恢复”怎么办

随着3A游戏大作不断面市,用户也不断地提升着自己的硬件设备。但是硬件更上了,却还会出现一些突如其来的情况,比如正准备开启某款游戏时,电脑右下角突然出现“显示器驱动程序已停止响应并且已恢复”。遇事不慌,驱动人生…

创新指南|5大策略让创新业务扩张最大避免“增长痛苦”

公司在开发和孵化新业务计划方面进行了大量投资,但很少有公司遵循严格的途径来扩大新业务规模。虽然80%的公司声称构思和孵化新企业,但只有16%的公司成功扩大了规模。典型案例是百思买在许多失败倒闭的扩大新业务取得了成功。它经历了建立新业务所需的3个…

如何使用 Python+selenium 进行 web 自动化测试?

使用Pythonselenium进行web自动化测试主要分为以下步骤: 在华为工作了10年的大佬出的Web自动化测试教程,华为现用技术教程!_哔哩哔哩_bilibili在华为工作了10年的大佬出的Web自动化测试教程,华为现用技术教程!共计16条…

VMware ESXi 7.0 U3m macOS Unlocker OEM BIOS (标准版和厂商定制版)

VMware ESXi 7.0 U3m macOS Unlocker & OEM BIOS (标准版和厂商定制版) 提供标准版和 Dell (戴尔)、HPE (慧与)、Lenovo (联想)、Inspur (浪潮)、Cisco (思科) 定制版镜像 请访问原文链接:https://sysin.org/blog/vmware-esxi-7-u3-oem/,查看最新版…

AC/DC、DC/DC转换器

什么是AC? Alternating Current(交流)的首字母缩写。 AC是大小和极性(方向)随时间呈周期性变化的电流。 电流极性在1秒内的变化次数被称为频率,以Hz为单位表示。 什么是DC? Direct Current&…

C语言的存储类别,链接和内存管理

目录 1.1作用域 1.2链接 1.3存储期 1.4存储类别 1.4.1自动变量 1.4.2寄存器变量 1.4.3块作用域的静态变量 1.4.4外部链接的静态变量 1.4.5内部链接的静态变量 1.4.6存储类别说明符 1.5动态内存管理 1.5.1出现原因 栈内存 数据段与代码段 堆内存 1.5.2动态内存函…

Flink第二章:基本操作

系列文章目录 Flink第一章:环境搭建 Flink第二章:基本操作 文章目录 系列文章目录前言一、Source1.读取无界数据流2.读取无界流数据3.从Kafka读取数据 二、Transform1.map(映射)2.filter(过滤)3.flatmap(扁平映射)4.keyBy(按键聚合)5.reduce(归约聚合)6.UDF(用户自定义函数)7.…

4个ChatGPT拓展出来的工具

现在ChatGPT 相关 的方向非常的多,各个大厂一个一个推出了自己的大模型,从国外到国内,ChatGPT 相关 也有几十个,这是大厂的方向。 对于比较小的团队,很多都是在ChatGPT 的基础上进行的开发,下面罗列出4个在…

ASO优化之应用内活动的投放策略

我们可以在“落地页”,“搜索结果页”,“详情页”,“today标签页”等各个版面展示应用的活动投放,这不仅能够快速被用户浏览到,自然能带来更多的流量,还能促进用户的活跃度。 那我们该如何进行投放呢&…

哪一本书让你逢人就推荐的?

小编逢人就推荐的程序员经典书目: 1、【樊登推荐】浪潮之巅 第四版 作者:吴军 这不是一本科技产业发展历史集,而是在这个数字时代,一本IT人非读不可,而非IT人也应该拜读的作品。 《浪潮之巅 第四版》是一本介绍互联…

【算法与数据结构】链表——题目详解

题目详解 Leetcode-206. 反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head [1,2] 输出&#x…

《Andorid开源》greenDao 数据库orm框架

一 前言:以前没用框架写Andorid的Sqlite的时候就是用SQLiteDatabase ,SQLiteOpenHelper ,SQL语句等一些东西,特别在写SQL语句来进行 数据库操作的时候是一件很繁琐的事情,有时候没有错误提示的,很难找到错误的地方&a…

C#--使用Quartz实现定时任务

C#小技巧–使用Quartz实现定时任务 Quartz.net 简介 Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等。 Quartz.NET允许开发人员根据时间间隔(或天&…

js - 原型和原型链的简单理解

前言 有一个概念需要清楚,只有构造函数才有.prototype对象,对象是没有这个属性的,__proto__只是浏览器提供的非标准化的访问对象的构造函数的原型对象的一种方式; prototype(原型对象) 函数即对象,每个函数都有一个prototype属…

代码随想录 数组篇 螺旋矩阵II Java实现

文章目录 (中等)59. 螺旋矩阵II(中等)54. 螺旋矩阵(简单)JZ29 顺时针打印矩阵 (中等)59. 螺旋矩阵II 因为我是先做的JZ29,所以看到这题的时候,几乎就是一样的…

最适合家用的洗地机哪个牌子好?2023洗地机推荐

洗地机是目前众多清洁工具中的热门之选,我身边很多朋友都选择了洗地机来处理家居清洁,一说一,洗地机可以处理干湿垃圾,还都有一键自清洁功能,用起来确实方便简单。不过,市面上的洗地机参差不齐,…