# Java 零基础完整入门教程(超详细,循序渐进)

PyQt完整入门教程 1、GUI开发框架简介 19年来,一直在做Android ROM相关测试,也有了一定的积累;20年,计划把之前完整的测试方案、脚本、工具进行整合复用。 第一期计划是开发一个GUI的测试工具,近期也进行了相关调研。 1.1 通用开发框架 electorn:基于node-js,跨平台,开发成本低,运行效率低 qt:基于C++,跨平台,效率高,开发成本高 javafx:基于java,主要用于跨... 阅读详情
AI摘要

本文是一套完整的Java零基础入门教程,涵盖Java简介、开发环境搭建、核心语法、面向对象编程及实战案例。重点讲解JDK配置、HelloWorld程序、变量数据类型、流程控制、数组和OOP三大特征,帮助新手快速掌握Java基础开发能力。

你想要一套完整的Java编程语言入门教程,这份内容从零基础环境搭建到核心语法+实战案例全覆盖,逻辑清晰、知识点完整,学完能掌握Java基础开发能力,适合纯新手入门学习 ✅

一、Java 简介 & 核心优势(必知)

Java 是一门 面向对象、跨平台、编译型+解释型 的高级编程语言,由Sun公司(现Oracle)推出,诞生至今稳居编程语言排行榜前列。

Java 核心三大特性(灵魂)

  1. 跨平台(一次编写,到处运行) :Java代码编译后生成字节码文件(.class),不是直接运行在操作系统,而是运行在 JVM(Java虚拟机) 上。不同操作系统(Windows、Mac、Linux)安装对应版本的JVM,就能运行同一个class文件,这是Java最核心的优势。
  2. 面向对象(OOP) :Java纯面向对象,万物皆对象,核心思想是:封装、继承、多态,能更贴合现实世界的业务逻辑开发。
  3. 安全稳定 :Java自带垃圾回收机制(GC),自动释放内存,几乎不会出现内存泄漏;无指针操作,避免非法内存访问,广泛用于企业级项目、金融系统、大型网站。

Java 主要应用场景

  • 后端开发(主流):电商网站、金融系统、企业管理系统、微服务架构
  • 移动端:Android应用开发(Android的编程语言就是Java)
  • 大数据开发:Hadoop、Spark等大数据框架,核心开发语言都是Java
  • 桌面应用:桌面客户端软件(如IDEA部分功能)

二、Java 开发环境搭建(第一步,必做)

学习Java的第一步,必须先搭建好开发环境,核心是安装 JDK,这是所有Java开发的基础,缺一不可。

2.1 核心概念区分(避免混淆)

  • JVM(Java虚拟机) :运行Java字节码文件的核心,是跨平台的基础。
  • JRE(Java运行环境) :包含JVM + 运行Java程序的核心类库,只能运行Java程序,不能编译。
  • JDK(Java开发工具包) :包含JRE + 编译工具(javac)、运行工具(java)等开发必需的工具,开发Java程序必须安装JDK。

2.2 JDK 安装与环境变量配置(Windows/Mac通用)

✅ 步骤1:下载JDK

推荐版本:JDK8(最稳定,企业主流) 或 JDK17(长期支持版),Oracle官网或国内镜像站均可下载,安装无脑下一步即可(建议安装路径不要有中文和空格)。

✅ 步骤2:配置环境变量(核心,Windows重点)
  • 新增系统变量 JAVA_HOME :值为你的JDK安装根目录(例:C:\Program Files\Java\jdk1.8.0_301)
  • 编辑系统变量 Path :新增两个值 %JAVA_HOME%\bin 和 %JAVA_HOME%\jre\bin
  • Mac/Linux 无需手动配置,安装完成后自动生效
✅ 步骤3:验证是否安装成功

打开电脑「命令提示符(cmd)」或「终端」,输入以下两个命令,能输出版本信息即表示成功:

java -version
javac -version

三、Java 开发工具选择

✅ 入门首选(推荐100%新手用)

  1. 记事本/Notepad++ :纯文本编辑器,无任何语法提示,适合入门初期手写代码,能帮你牢牢记住语法规则,打好基础。
  2. IDEA(IntelliJ IDEA) :业界公认的最好用的Java开发工具,分社区版(免费)和旗舰版(付费),新手装社区版完全够用。IDEA自带语法提示、自动补全、编译运行一键搞定,后期写项目效率极高,学会记事本入门后,直接切换IDEA即可。

补充:Eclipse也是Java开发工具,免费,但界面和易用性不如IDEA,新手优先选IDEA。


四、Java 第一个程序 HelloWorld(必写)

所有编程语言的入门第一课,都是编写输出 Hello World 的程序,Java也不例外,我们分记事本手动编译运行和IDEA一键运行两种方式。

4.1 记事本编写 + 手动编译运行(核心,必须懂)

Java是严格区分大小写的语言,且语法规范极强,一个字符都不能错!

步骤1:新建记事本,编写代码

新建一个txt文件,重命名为 HelloWorld.java(⚠️ 后缀必须是.java,文件名必须和代码中的class类名完全一致,包括大小写),写入以下代码:

// 这是Java的单行注释:第一个Java程序 HelloWorld
public class HelloWorld {
    // main方法:程序的入口,所有Java程序都从main方法开始执行,固定写法
    public static void main(String[] args) {
        // 输出语句:控制台打印指定内容,分号是Java语句的结束标志,必须加
        System.out.println("Hello World! 你好,Java!");
    }
}
步骤2:编译Java源文件(javac命令)

打开cmd,进入HelloWorld.java所在的文件夹,执行编译命令:

javac HelloWorld.java

✅ 编译成功:文件夹中会新增一个 HelloWorld.class 文件(这就是Java的字节码文件,跨平台的核心)
❌ 编译失败:大概率是代码写错、大小写错误、少分号,对照修改即可。

步骤3:运行字节码文件(java命令)

在同一个cmd窗口,执行运行命令(⚠️ 命令里不要加.class后缀):

java HelloWorld

✅ 运行成功:控制台会打印出 Hello World! 你好,Java!

4.2 核心知识点解释(必须背会)

  1. public class 类名 :定义一个公共类,文件名必须和类名一致,Java源文件中可以有多个类,但只能有一个public类。
  2. public static void main(String[] args) :Java程序的唯一入口,这个写法是固定的,没有任何例外,必须记住!
  3. System.out.println("内容") :向控制台打印内容,打印后自动换行;如果不想换行,用 System.out.print("内容")。
  4. 分号 ; :Java中所有语句必须以分号结尾,这是语法规则,少写必报错。
  5. 注释 // :注释是给程序员看的,编译器会忽略,不影响程序运行,单行注释用//,多行注释用/* 注释内容 */。

五、Java 基础核心语法(完整版,循序渐进)

掌握了HelloWorld,接下来就是Java的核心基础语法,这是所有Java开发的根基,重中之重,知识点按「从易到难」排序,全部是高频考点和必用知识点。

✅ 语法规则前置(贯穿始终,必遵守)

  1. Java 严格区分大小写(Main 和 main 是两个完全不同的东西)
  2. 代码缩进不是语法要求,但必须缩进,增强可读性
  3. 大括号 {} 必须成对出现,包裹代码块
  4. 语句必须以分号 ; 结束

5.1 变量与数据类型

✅ 什么是变量?

变量是程序中用来存储数据的容器,本质是内存中的一块存储空间,通过变量名可以访问这块空间的数据。

✅ Java 数据类型(两大分类,强类型语言)

Java是强类型语言:变量在定义时,必须指定数据类型,且赋值的类型必须和定义的类型一致,不能随意转换。

① 基本数据类型(8种,最常用,必须记)

占内存固定,效率高,是Java的基础类型,分为4类8种:

1. 整数类型:
   byte    占1字节  范围:-128 ~ 127
   short   占2字节  范围:-32768 ~ 32767
   int     占4字节  范围:-2^31 ~ 2^31-1 【默认整数类型,最常用】
   long    占8字节  范围极大,赋值时结尾必须加 L 例:long num = 10000000000L;

2. 浮点类型(小数):
   float   占4字节  单精度,赋值时结尾必须加 F 例:float price = 9.9F;
   double  占8字节  双精度 【默认浮点类型,最常用】例:double pi = 3.1415926;

3. 字符类型:
   char    占2字节  存储单个字符,必须用单引号包裹 例:char ch = 'A'; char ch2 = '中';

4. 布尔类型(判断真假):
   boolean 占1字节  只有两个值:true(真)、false(假)【判断语句核心】
② 引用数据类型

字符串、数组、类、接口等,最常用的就是字符串类型 String,用双引号包裹:

String name = "张三";
String address = "北京市朝阳区";
✅ 变量的定义格式(固定写法)
// 格式:数据类型 变量名 = 赋值;
int age = 18;          // 定义整型变量age,赋值18
double score = 95.5;   // 定义浮点型变量score,赋值95.5
char sex = '男';       // 定义字符型变量sex,赋值男
boolean flag = true;   // 定义布尔型变量flag,赋值真
String username = "Java学习者"; // 定义字符串变量

变量命名规范:首字母小写,后面单词首字母大写(驼峰命名),例:studentName、phoneNumber,不能用中文/数字开头。


5.2 运算符(运算的核心,常用)

Java的运算符和数学中的运算逻辑基本一致,分为几大类,都是高频使用:

✅ 算术运算符(加减乘除)

+ - * / % 其中 % 是取模(求余数),例:7%2 = 1、10%3 = 1

int a = 10;
int b = 3;
System.out.println(a + b); // 13
System.out.println(a / b); // 3 (整数相除,只取整数部分)
System.out.println(a % b); // 1 (取余数)

特别:+ 对字符串是「拼接」作用,例:System.out.println("年龄:" + 18); 输出:年龄:18

✅ 赋值运算符

= += -= *= /= 最常用的是 =,例:int num = 5;

✅ 比较运算符(判断大小,结果是布尔值)

> < >= <= == != 所有比较运算符的结果,只有 true 或 false,是if判断、循环的核心

int x = 10;
int y = 20;
System.out.println(x > y); // false
System.out.println(x == y); // false
System.out.println(x != y); // true
✅ 逻辑运算符(多条件判断)

&&(与)、||(或)、!(非)

  • && :多个条件同时满足,结果才是true
  • || :多个条件满足一个,结果就是true
  • ! :取反,true变false,false变true

5.3 流程控制语句(程序的执行逻辑,重中之重)

程序的执行逻辑默认是「顺序执行」:从上到下一行一行执行。而流程控制语句可以改变执行顺序,分为分支语句和循环语句,是所有编程逻辑的核心!

✅ 一、分支语句(条件判断,满足条件才执行对应代码)
1. if 语句(最常用,单条件判断)
// 格式1:单if
if (条件表达式) {
    条件为true时,执行的代码;
}

// 格式2:if-else 二选一执行
if (条件表达式) {
    条件为true时执行的代码;
} else {
    条件为false时执行的代码;
}

// 案例:判断年龄是否成年
int age = 20;
if (age >= 18) {
    System.out.println("你已成年");
} else {
    System.out.println("你未成年");
}
2. switch 语句(多值匹配,固定值判断)

适合判断一个变量的多个固定值,比如:判断星期几、判断月份。

✅ 二、循环语句(重复执行一段代码,解放双手)

当需要重复执行某段代码时(比如:打印100遍HelloWorld、计算1-100的和),用循环语句,三大循环:for、while、do-while,其中 for循环 最常用!

1. for 循环(固定次数循环,首选)
// 格式:for(初始化变量; 循环条件; 变量自增/自减) { 循环体 }
// 案例1:打印1-5的数字
for (int i = 1; i <= 5; i++) {
    System.out.println(i);
}

// 案例2:计算1+2+3+...+100的和
int sum = 0;
for (int i = 1; i <= 100; i++) {
    sum += i; // 等价于 sum = sum + i
}
System.out.println("1-100的和:" + sum); // 结果:5050
2. while 循环(未知次数循环)
// 格式:while(循环条件) { 循环体 }
// 案例:打印1-5的数字
int i = 1;
while (i <=5) {
    System.out.println(i);
    i++;
}

循环核心:必须有「循环终止条件」,否则会变成死循环,程序一直运行直到崩溃!


5.4 数组(存储多个同类型数据的容器)

数组是Java中最基础的引用数据类型,作用是:一次性存储多个相同数据类型的变量,比如:存储一个班级的所有学生成绩、存储10个整数。

✅ 数组的定义格式(两种常用格式)
// 格式1:推荐,可读性强
数据类型[] 数组名 = new 数据类型[数组长度];

// 格式2:兼容C语言写法,不推荐
数据类型 数组名[] = new 数据类型[数组长度];

// 案例:定义一个长度为5的整型数组,存储5个学生的成绩
int[] scores = new int[5];
✅ 数组的赋值与访问

数组的索引(下标)从0开始,比如长度为5的数组,索引是 0、1、2、3、4,通过 数组名[索引] 访问元素:

int[] scores = new int[5];
scores[0] = 90; // 给第1个元素赋值90
scores[1] = 85; // 给第2个元素赋值85
System.out.println(scores[0]); // 访问第1个元素,输出90

// 简化写法:定义数组时直接赋值(最常用)
int[] nums = {1,2,3,4,5}; // 长度自动为5
// 遍历数组:用for循环打印所有元素
for (int i = 0; i < nums.length; i++) {
    System.out.println(nums[i]);
}

数组名.length 可以获取数组的长度,是固定写法。


六、Java 面向对象核心(OOP,Java的灵魂)

Java 是纯面向对象编程语言,万物皆对象,面向对象是Java的核心思想,也是Java区别于C语言(面向过程)的本质,必须理解!

面向过程:关注「步骤」,比如:做饭要先买菜→洗菜→切菜→炒菜,一步一步执行。
面向对象:关注「对象」,比如:找一个「厨师对象」,让厨师去做饭,你只需要调用厨师的「做饭方法」即可,不用关心步骤。

6.1 面向对象的三大核心特征(必须理解+记忆)

✅ 1. 封装

把对象的属性和行为封装在一起,隐藏内部实现细节,只对外暴露访问接口,提高代码安全性。

例:定义一个「学生类」,属性是姓名、年龄、成绩,行为是学习、考试,这些属性和方法都封装在类中。

✅ 2. 继承

子类可以继承父类的属性和方法,减少代码重复,提高代码复用性。

例:「学生类」和「老师类」都继承自「人类」,人类的属性(姓名、年龄)和方法(吃饭、睡觉),学生和老师都可以直接使用。

✅ 3. 多态

同一个行为,对于不同的对象,有不同的表现形式,提高代码的扩展性。

例:同样是「吃饭」这个行为,学生吃饭是在食堂,老师吃饭是在教师餐厅,小狗吃饭是啃骨头。

6.2 类与对象(最基础的OOP概念,必懂)

✅ 核心关系:类是对象的模板,对象是类的实例
  • 类:是对一类事物的抽象描述,比如:人类、学生类、手机类,包含「属性(特征)」和「方法(行为)」。
    • 属性:事物的特征,比如:学生的姓名、年龄、成绩。
    • 方法:事物的行为,比如:学生的学习()、考试()、跑步()。
  • 对象:是类的具体实例,比如:张三是「学生类」的一个对象,李四也是「学生类」的一个对象。
✅ 类的定义与对象的创建(固定写法,必写)
// 1. 定义一个学生类(模板)
public class Student {
    // 1.1 定义属性(成员变量)
    String name; // 姓名
    int age;     // 年龄
    double score;// 成绩

    // 1.2 定义方法(成员方法)
    public void study() {
        System.out.println(name + "正在学习Java!");
    }

    public void exam() {
        System.out.println(name + "正在考试,成绩是:" + score);
    }
}

// 2. 创建对象并使用(main方法中执行)
public class Test {
    public static void main(String[] args) {
        // 格式:类名 对象名 = new 类名();
        Student stu1 = new Student();
        // 给对象的属性赋值
        stu1.name = "张三";
        stu1.age = 18;
        stu1.score = 98.5;
        // 调用对象的方法
        stu1.study();  // 输出:张三正在学习Java!
        stu1.exam();   // 输出:张三正在考试,成绩是:98.5
    }
}

这就是Java面向对象的基础,所有Java项目的代码,都是由一个个「类」和「对象」组成的!


七、Java 入门必做的小实战案例(巩固知识点)

学完基础语法后,一定要做实战案例,只有动手写,才能真正掌握,以下案例由浅入深,全部是入门级必做,覆盖所有核心基础:

  1. 计算圆的面积和周长(使用浮点类型、变量、公式)
  2. 判断一个数是奇数还是偶数(使用if语句、取模运算符)
  3. 打印九九乘法表(使用双层for循环,经典入门题)
  4. 找出数组中的最大值和最小值(数组+循环+判断)
  5. 定义一个「手机类」,包含品牌、价格属性,打电话、发短信方法,创建对象调用(面向对象入门)

八、Java 学习路线规划(零基础→入门→进阶,清晰指引)

✅ 阶段一:基础入门(你当前的阶段,1-2周)

完成以上所有内容:环境搭建 → HelloWorld → 基础语法(变量、运算符、流程控制、数组)→ 面向对象基础(类、对象、三大特征),能独立写简单的案例程序。

✅ 阶段二:Java 核心进阶(2-3周)

面向对象深入(构造方法、封装、继承、多态、抽象类、接口)→ 常用API(字符串String、集合框架ArrayList)→ 异常处理 → IO流(文件读写),这个阶段是Java的核心,学完能写中小型Java项目。

✅ 阶段三:Java 后端开发(就业方向,重点)

MySQL数据库 → JDBC连接数据库 → Web开发(HTML/CSS/JS、Servlet、SSM框架)→ 微服务(SpringBoot、SpringCloud),这是Java最主流的就业方向,市场需求大、薪资高。


总结

这份Java教程是零基础专属完整版,核心知识点总结如下:

  1. Java的核心优势是「跨平台、面向对象、安全稳定」,JVM是跨平台的核心。
  2. 开发Java必须安装JDK,第一个程序HelloWorld的编译命令javac,运行命令java,必须掌握。
  3. Java是强类型语言,8种基本数据类型是基础,流程控制(if/for)是编程逻辑核心。
  4. Java的灵魂是「面向对象」,类和对象是基础,三大特征(封装、继承、多态)是核心。
  5. 学习Java的核心法则:多看、多写、多练,语法背会没用,只有动手敲代码,才能真正掌握!

祝你学习顺利,早日掌握Java编程 💪!
在这里插入图片描述

SpringBoot整合Swagger超详细完整指南 本文详细介绍了Swagger在SpringBoot项目中的完整应用指南,主要内容包括: 技术选型与版本对比:比较Springfox与SpringDoc两种实现方案,并提供版本兼容性矩阵 项目配置: 详细的环境准备与项目结构设计 Maven依赖配置示例 多环境(开发/生产)配置文件说明 核心功能实现: 基础配置类与Web配置类详解 完整的注解系统指南(Controller/实体类/枚举类) 实体建模与数据传输设计模式(DTO/VO/统一响应) 企业级实践: 用户管理和认证控制器的完整示例 安全认证配置(JWT 阅读详情

相关推荐

java零基础从入门到精通(全)

目录前言1. 入门知识1.1 java体系1.2 JDK/JRE/JVM区别1.3 编译与运行理解1.4 类体函数细节2. 标识符 前言 java优势 健壮性(JVM(C++语言写的一个虚拟的计算机)、GC(垃圾回收机制)) 多线程并发 可移植性/跨平台 1. 入门知识 1.1 java体系 JavaSE:标准版 JavaEE:企业版 JavaME:微型版 1.2 JDK/JRE/JVM区别 JVM是不能独立安装的。 JRE和JDK都是可以独立安装的 层层嵌套,jvm包括jdk,jdk包括jre

码农研究僧的博客 6万+

Java 入门 (超级详细)

Java是一种高级编程语言,由Sun Microsystems公司于1995年推出。Java具有跨平台性、面向对象、健壮性、安全性、可移植性等特点,被广泛应用于企业级应用开发、移动应用开发、大数据处理、云计算等领域。Java程序可以在不同的操作系统上运行,只需编译一次,就可以在任何支持Java虚拟机(JVM)的平台上运行。Java还提供了丰富的库和框架,可以加快开发过程,提高开发效率。变量是计算机程序中用于存储数据的一种数据类型。它是一个名称,代表了一个值或一个对象,可以在程序中多次使用。

qq_63519395的博客 10万+

java在线观看(jav在线网站)

java在线网站给大家展示6个java在线网站)。后面还有java在线API,各种java在线在线api地址。 java在线观看1、LintCode Java学习爱好者的福音,和LeetCode类似,也是一个刷题的OJ网站,提供闯关式的阶梯训练以及国内外知名大厂的笔试面试真题。它不仅有算法题、数据库题、Java题目可以刷,还有Java和Sql的教程的手把手教程,一遍做题一边学习加深印象,非常地贴心,不过网站内容更适合Java学习爱好者。

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 13万+

Java/JDK下载安装与环境配置(Windows 10 超详细的图文版教程 )

前言:对于很多初学者来说,我想可能很多人都会遇到的一个问题就是Java环境变量的配置问题。自己明明就是按照度娘上的教程去一步步配置的,但还是会有很多的人出现配置不成功的问题。所以今天在这里分享一下windows 10 系统下安装Java的教程,希望对Java初学者能有所帮助。 一. Java的下载与安装 作为初学者,要想学习Java语言,第一个条件就是要让电脑上具备有Java环境,那么怎么让电...

奔三的Uncle 44万+

Java学习路线总结(思维导图篇)

优快云最强Java专栏,包含全部Java基础知识点、Java8新特性、Java集合、Java多线程、Java代码实例,理论结合实战,实现Java的轻松学习。

学Java,找哪吒 19万+

Vivado2023.2与Vitis协同开发:从Hello World到BOOT.BIN的完整流程解析

本文详细解析了使用Vivado 2023.2与Vitis协同开发ZYNQ/MPSoC平台的完整流程。从环境安装、硬件设计、软件编写、在线调试到生成独立的BOOT.BIN启动文件,手把手指导开发者完成从Hello World到系统固化的全步骤,并提供了常见问题的避坑指南,帮助初学者快速掌握软硬件协同开发的核心技能。

weixin_29197051的博客 176

Java 入门(完整教程)

1991 年,美国的 Sun 公司为了开发智能家电等嵌入式设备的控制系统,由詹姆斯・高斯林(James Gosling)领导的 Green 计划 团队开始了一种新语言的研发。最初该语言被命名为 Oak(橡树),它是基于 C++ 开发的,吸收了 C++ 的优点并做出来扩展,同时摒弃了 C++ 中的一些复杂概念,使得 Java 功能强大的同时又易于理解和使用。

野生派蒙的博客 2万+

清理异常值(MAD:绝对中位差)

清理异常数据: 中位数绝对偏差(MAD):用来描述单变量样本在定量数据中可变的一种标准 在统计学中,绝对中位差是刻画一元数据样本变化的一个鲁棒度量。由公式可以看出,其求解还算简单,给定一个数据样本集,首先求其中位数,然后求原始数据减去中位数的绝对值从而形成一个新的数据样本,再求新的数据样本的中位数即为绝对中位差。比如说有一个数据样本集X={2 3 8 7 9 6 4},这时候数据的中位数是6,原...

spider_man 1万+

Java基础学习大全(一)

(2)Classpath是配置class文件所在的目录,用于指定类搜索路径,JVM就是通过它来寻找该类的class类文件的。(1)概述:面向对象是相对于面向过程而言的,面向过程强调的是功能,面向对象强调的是将功能封装进对象,(1)path是配置Windows可执行文件的搜索路径,即扩展名为.exe的程序文件所在的目录,比如我要达到某种结果,我就寻找能帮我达到该结果的功能的对象,如我要洗衣服我就买洗衣机,(1)this关键字代表本类对象的一个引用,谁调用this所在的方法,this就代表谁。

qq_35932189的博客 4434

proteus仿真51单片机操作指南:串口通信仿真配置详解

深入讲解如何在proteus仿真51单片机中实现串口通信,涵盖虚拟串口设置、电路连接与调试技巧,帮助开发者高效完成通信仿真验证。

weixin_36197669的博客 570

ChatGPT Plus账号被降智?3个实用检测方法+终极解决方案(附国内支付指南)

本文针对ChatGPT Plus账号性能下降问题,提供了3个科学检测方法和系统级解决方案。通过详细分析症状、专业诊断技巧和优化策略,帮助用户有效应对GPT-4o等高级功能失效、响应质量下降等问题,特别包含国内用户关心的支付方案和账号管理建议。

weixin_42639633的博客 472

最详细的Java入门到入土完整学习教程,学Java先收藏了!

Java从入门到入土!!!

qq_45311781的博客 9416

构建面向嵌入式Linux的ARM64交叉编译工具链:从sysroot配置到CMake实战

本文详细介绍了如何构建面向嵌入式Linux的ARM64交叉编译工具链,从sysroot配置到CMake实战。通过分步指导,帮助开发者解决架构不一致问题,提升编译效率,特别适用于树莓派等ARM64设备开发。文章涵盖sysroot机制、环境搭建、CMake配置及常见问题解决方案,是嵌入式开发的实用指南。

weixin_42537142的博客 199

Java笔记——Java小白(学习Java详细讲解)从入门到精通

掌握Java基础对于成为优秀的开发人员至关重要。通过学习变量、控制流、函数和方法等基本语法,以及面向对象编程的概念,您可以构建更复杂的程序。同时,了解常用库和框架将使您能够更高效地开发应用程序。通过实践项目,您将能够将所学知识应用于实际场景中,提高自己的技能水平。本篇根据个人理解与结合老师的PPT对JAVA进行详细讲解。**四、Java语法基础 ****四、Java语法基础 **一次定义,多次调用。

a25847a的博客 1万+

Redis 可视化工具 RedisInsight 的保姆级安装以及使用(最新)

Redis 可视化工具 RedisInsight 的保姆级安装以及使用(最新)

一名全栈小白的博客 1万+

citespace基本操作

聚类分析 时间线图 这些结果都是高被引文献的相关呈现结果,代表该领域的文献基础 下面可以看看该project的前沿领域 选择keywords 和term go! 调整显示方式 生成凸线图:表示 在某个研究领域或者时间段内 ,大家对某个领域或者某个词的关注度突然增高,凸显前沿方向的转变 以此来发现热点 ...

生信小博士的博客 1万+

探索Java编程之旅 —— "韩顺平_循序渐进学Java零基础"全面解析

探索Java编程之旅 —— "韩顺平_循序渐进学Java零基础"全面解析 【下载地址】韩顺平_循序渐进学Java零基础完整笔记1分享 韩顺平_循序渐进学Java零基础【完整笔记】1欢迎来到“循序渐进学Java零基础”笔记资源库 ...

gitblog_06678的博客 958

调用魔搭API出现Please bind your Alibaba Cloud account before use的解决方案

本文主要介绍了调用魔搭API出现Please bind your Alibaba Cloud account before use解决方案,希望能对使用大模型的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 3万+

Python入门教程(超详细)

三万字Python入门教程,建议收藏

wangyuxiang946的博客 1万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

零基础编程语言入门教程:从语法到实践(Java/Python/C++/Go)

本文提供了四种主流编程语言的入门指南,适合不同学习目标和应用场景的开发者: Python:最适合零基础学习者,语法简洁,适用于数据分析、AI和自动化脚本。教程涵盖环境搭建、核心语法和文件批量重命名实战案例。 Java:企业级开发首选,跨平台特性强。教程包含JDK配置、语法基础和成绩管理系统实现,适合想进入大厂的开发者。 C++:高性能开发必备语言,接近硬件底层。内容涉及编译器安装、指针操作和简易计算器开发,适合游戏和系统编程方向。

zzywxc787的博客 1477

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

JAVA入门教程

建议学习者配合官方文档(docs.oracle.com/javase)同步查阅,遇到问题时可使用。初学者推荐:IntelliJ IDEA Community Edition。项目实战(持续):建议从控制台程序过渡到Spring Boot。轻量级替代:VS Code + Java扩展包。进阶阶段(4周):集合框架/IO/多线程。基础阶段(2周):语法+OOP。工具快速测试代码片段。强类型语言需声明类型。

2509_93005452的博客 274

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

ant design入门_Ant Design of React 超详细入门教程

关注米兜Java并置顶,一起涨姿势~关注米兜Autumn2020热点推荐1为什么我应当使用Apache OpenOffice?2Ant Design of React - 项目实战3Ant Design of React - 快速上手4Ant Design of React - 入门了解Ant Design of React - 超详细入门教程一、Ant Design Pr...

weixin_30661119的博客 1581

Java #{}和${}区别

Java #{}和${}区别 Mybatis中使用#{}可以防止sql注入 #{}: 表示一个占位符号,实现向PreparedStatement占位符中设置值(#{}表示一个占位符?),自动进行Java类型到JDBC类型的转换(因此#{}可以有效防止SQL注入).#{}可以接收简单类型或PO属性值,如果parameterType传输的是单个简单类型值,#{}花括号中可以是value或其它名称. :表示拼接SQL串,通过:表示拼接SQL串,通过{}可将parameterType内容拼接在SQL中而不进行JDB

gcfffff的博客 1844

java中$符和#符的详细说明

在jquery中,“$”是jQuery的简称,是jquery库提供的一个函数,是“选取”的意思($是jQuery的别称,也就是 $是jQuery的对象,所有在用到 $的地方都可以使用JQuery来代替);“$()”函数可以根据括号里的参数进行查找和选择html文档中的元素,括号内不仅可以是ID,也可以是各类选择器。

Java_KangRen的博客 4599

# 主流编程语言零基础教程(Java/Python/C++/Go 完整版,入门+核心+方向)

1. **Python** → 全能极简、入门最快,**零基础首选**,用途最广(入门难度 ⭐) 2. **C++** → 底层王者、性能极致,万物之基,入门最难(入门难度 ⭐⭐⭐⭐⭐) 3. **Java** → 企业级标配、就业最稳,中流砥柱,入门适中(入门难度 ⭐⭐⭐) 4. **Go(Golang)** → 云计算时代新贵、高并发王者,语法简洁,入门偏易(入门难度 ⭐⭐) ### 学习优先级建议

[Blog][Domain] programb.blog.youkuaiyun.com 1213

java中#{} 和 ${} 的区别?

需要注意的是,默认情况下,占位符的值被视为字符串。在Spring和MyBatis等框架中,可以通过设置相关配置来指定占位符的默认类型或执行自定义类型转换逻辑。是Property Placeholder占位符,用于在Java应用程序中引用外部属性或配置项的值。是MyBatis框架中使用的占位符,也被称为参数占位符。是Spring框架中使用的占位符,也被称为属性占位符。来表示一个参数占位符,它将会在SQL执行时被替换为实际的参数值。是MyBatis中使用的参数占位符,用于在SQL语句中插入参数值。

qq_45688811的博客 2538
上一篇: 虚拟机性能优化实战
下一篇: 归并排序和基数排序是两种重要的排序算法,各自基于不同的思想实现高效、稳定的排序
Bol5261
Bol5261 新星创作者: Java技术领域 新星创作者: Java技术领域 优质创作者: 学术研究与理论基础技术领域 优质创作者: 学术研究与理论基础技术领域
博客等级 码龄7年 4万+粉丝 1万+原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bol5261

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值