Java入门全网最详细 - 从入门到转行
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
API简单使用:点击索引tab,输入关键字,回车,点击显示
失效评论找我,随叫随到
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,一般用来做逻辑判断
引用数据类型
数组,类,接口被称为引用数据类型,共同特点:值映射一段地址,于内存中。
- 首先为 Object, 它可以由我们自己来创造,Object是一个非常重要的类型,Object类是Javajava.lang包下的核心类,Object类是所有类的父类,何一个类时候如果没有明确的继承一个父类的话,那么它就是Object的子类。
class Person {}
class People {}
public class OObject {
public static void main(String[] args) {
Object object = new Person();
}
}
关于Object类型的API, 在此列举出一个,方便大家的参考,详情查看JDK1.8 API文档
大家可以在IDEA中尝试,自己做扩展才是学习的必要步骤
// toString(); 这是一个很常用的方法,该方法是为了获取对象的信息(返回对象的字符串表示形式)
- 1、数组(Array),是多个相同类型数据按一定顺序排列 的集合,并使用一个名字命名,并通过编号的方式 对这些数据进行统一管理。
2、数组本身是引用数据类型,而数组中的元素可以是任何数据类型,包括 基本数据类型和引用数据类型。
3、创建数组对象会在内存中开辟一整块连续的空间,而数组名中引用的是 这块连续空间的首地址。
5、数组的长度一旦确定,就不能修改。
6、我们可以直接通过下标(或索引)的方式调用指定位置的元素,速度很快。
创建数组以及数组的基本使用方法
- type[] *;
- type *[];
- String[] *;
- Double *[];
// 数组的基本使用
int[] arr = new int[3];
以上这段话的意思是: 声明一个名称为arr的数组,类型为int型,并且长度最多为3.
在输入时[3]称之为数组的动态初始化.
// 为数组下标位置赋值
在这里讲一句: 下方arr[0,1,2] 中的 0, 1, 2为数组的索引,从0开始.
比如:new int[5]; 它的索引为:0, 1, 2, 3, 4, 长度为5.
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
// 数组的静态初始化
int[] arr = new int[]{5,7,8};
或者
int[] arr = {5,7,8};
静态初始化: 提前写好数据,{}内部的元素为数组元素
获取数组的长度
array.length 为获取数组的长度(数组元素的个数), 任何一个对象都有自己的length。
String[] arr = new String[]{"1","2","3"};
system.out.println(arr.length); // 3
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)
--------------------------------------------------------------------------
后话
规划学习路线以及建议