当前位置: 首页 > article >正文

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、我们可以直接通过下标(或索引)的方式调用指定位置的元素,速度很快。

创建数组以及数组的基本使用方法

  1. type[] *;
  2. type *[];
  3. String[] *;
  4. Double *[];
// 数组的基本使用
int[] arr = new int[3];
以上这段话的意思是: 声明一个名称为arr的数组,类型为int型,并且长度最多为3.
在输入时[3]称之为数组的动态初始化.
// 为数组下标位置赋值
在这里讲一句: 下方arr[0,1,2] 中的 012为数组的索引,从0开始.
比如:new int[5]; 它的索引为:01234, 长度为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)


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

后话

规划学习路线以及建议


http://www.kler.cn/news/18073.html

相关文章:

  • MySQL安装配置教程(保姆级,包含环境变量的配置)适合小白
  • 【Java笔试强训 33】
  • 【python脚本系列】python脚本2——PDF转word文档
  • Rosetta从头蛋白抗体设计、结构优化及在药物研发中的应用
  • Grafana 系列-统一展示-1-开篇
  • 本地使用3台centos7虚拟机搭建K8S集群教程
  • 璞华助力“数字人社”,为成都市人社数字化建设提供多方位的产品与技术支持!
  • Chapter4:频率响应法(下)
  • tiechui_lesson01_入口函数和卸载函数
  • MySQL数据库——MySQL存储函数详解
  • Java版本企业电子招投标采购系统源码之项目说明和开发类型源码
  • [面试题] 判断二维空间中一点是否在旋转矩形内部
  • 活动策划进阶指南:细节决定成败
  • 飞腾ft2000-麒麟V10-SP1安装Docker、运行gitlab容器
  • JSP网络远程作业处理系统(源代码+论文+开题报告+实习报告)
  • 揭秘镭速传输点对点传输技术,NAT+Raysync强强组合
  • 进程替换函数组介绍exec*
  • 嵌入式设备逆向所需的工具链
  • SPSS如何绘制常用统计图之案例实训?
  • 华为MPLS跨域——后门链路实验配置
  • 直线飙升到10万+star的AutoGpt,有多强?帮我写了个网页!
  • 文鼎创智能物联云原生容器化平台实践
  • 为什么网络安全缺口很大,招聘却很少?
  • 乐鑫esp32-c2开发板 烧录演示
  • PMP-项目整合管理
  • MySQL ---- 事务
  • golang - 函数的使用
  • 什么是网络——TCP/IP协议
  • explain都不懂?搞什么数据库优化,快进来学习了
  • PAT A1032 Sharing