佳Java学习方式
学习 Java 既简单又有趣,无论您有什么背景。有了这本综合指南的帮助,您将可开始 Java 之旅,并拥有掌握基本概念的所有资源。
通过前面文章的介绍,理解了Java是——
Java 代码运行在 Java 虚拟机上,该虚拟机将 Java 代码转换为操作系统能够理解的语言。所有这些特性以及更多特性使 Java 依然是 2021 年(还将持续下去)的顶级编程语言之一。
Java很有魅力,对于新手或初学者,有没有最佳的学习方式呢?这就是本篇文章将要讨论的和表达的内容——这里主要是为初学者指明渐进式的Java学习核心基础点,这是针对性编程学习必备以及进阶的支持基本面。根据这个学习方式,就可把主题知识点连成体系化知识线,然后再根据需要来拓展关联技术面或深化体系知识“点”。
友情提醒:我虽然写了不少,但主要请关注小标题所说,以及最后的结论部分。具体的成长还得靠你自己!如果有学习需要或咨询,请给我留言或私信。
学习任何东西都没有捷径可走,Java 也是如此。如果你想掌握这门语言(相信我,这是值得的),你必须在你的系统上设置它并开始练习。下载(https://www.oracle.com/java/technologies/downloads/)并安装 JDK(Java 开发工具包)和 JRE(Java 运行时环境)以及您熟悉的任何 IDE。
对于初学者来讲,Easy Eclipse(http://easyeclipse.org/site-1.0.1/distributions/desktop-java.html) 非常适合编写程序和构建独立应用程序,也很适合用来开始Java编程的学习;开源的Eclipse(https://www.eclipse.org/downloads/packages/),建议初学者下载Eclipse IDE for Java Developers版即可,后续个根据需要下载企业版;NetBeans功能很强大,对于初学者来说也很适用,只是先不要对其本身关注太多,初学者很多功能还用不上;IntelliJ IDEA社区版不收费,但对于初学者有较高的要求,需要慢慢适应 ;针对初学者的BlueJ(https://www.bluej.org/),更关注学习。
随着对Java技术的提高和实际工作的需要,将来IDE的选择,建议NetBeans、Eclipse、以及IntelliJ IDEA(高级版收费的)
那在我们进入核心概念之前,这里有一些你应该永远记住的事情——
现在我们有了积极的心态和学习的动力,那就来看看学习用 Java 编写高效代码所需的所有概念——
每天,我们都会遇到不同类型的数据。例如,您的司机的电话号码是一个整数,但他的名字是一个字符串(字符数组)。同样,他给您车辆加的汽油价格是浮点数(十进制小数)。 Java 可处理很多数据类型,比如:
String driverName;
int telephoneNo;
float petrolPrice;
boolean isRegular;
Java 中的最佳实践之一是遵循正确的命名约定。上面的变量(driverName、telephone.etc...)和方法应该以小写开头,后面的单词以大写字母开头——driverName。同样,由于布尔数据类型返回 true 或 false,因此以 is、are、has 等开头的变量命名是一个好习惯......
将数据存储在变量中的好处是我们可以在代码的任何地方使用变量。使用变量的限制由其作用域定义,可以是局部的、静态的或全局的。
数据类型 char、int、float、boolean 和 double 被称为原始类型(也叫基本类型),Java对每一种类型都有对应的对象类。例如,int 有 Integer; boolean 有 Boolean 等等。一个字符串就是个String类型的对象。
那么,我们如何处理这些数据呢?我们要对其进行一些操作!
编程是要处理数据的,数据有很多种的。例如,根据司机是否规范合格,可以给他一些奖励,或者根据他加的油量,我们可以知道他开了多少公里。类似代码可以这样表示:
if (isRegular){
salary +=200;
}
条件表达式结果只能是布尔值(true或false)。如果我们比较两个字符串,例如if(driverName==“Chand”),则可使用比较运算符'==',它不同于赋值运算符'='。同样的,还有<、<=、> , >=等等。
就像我们在上面看到的那样,“if”是一个条件判断,用于测试某些内容是否准确并相应地返回结果(true或false)。if通常与可以处理多种情况的 else if 和 else 语句结合使用。
if(marks < 23)
grade=‘F’;
else if(marks > 23 && marks < 60)
grade=‘D’;
else
grade=‘B’;
请注意,&& 表示两个表达式都必须为true,if 判断检测才能成功。
还要记住的是代码执行中循环的相关应用:while和for。
我们编写的很多代码都可以分成代码块,以便应用程序的许多其它部分可以重用它们。系统的此类块称为函数/方法(基于OOP的叫法)。例如,grade可以是基于分数的函数。当系统被分成更小的函数时,它们看起来整洁、独立并且易于理解。函数是模块化的,可重复使用。
Java 中的函数名以小写开头,后面的单词首字母大写。例如,获取成绩的grades(float marks),返回字符的、 isRegular(String driverName)返回布尔值 等。
接下来就才是 Java 的真正强大——
如果您想了解 OOPS 概念的详细信息,请观看我之前嵌入在本文中的上述视频。尽管如此,对于本文,您需要知道的是,在 OOPS 中,一切都被视为对象。铅笔是一个对象,汽车、植物、动物,甚至司机也是一个对象。
继续我们的司机示例,假设以下属性标识司机 – driverName、joinDate、isRegular、dateOfBirth 和 avgCustomerRating。
假设像优步这样的服务提供商会有很多这样的司机。每个司机都具有所有这些属性,这些属性将以其独特的值加以区分。这意味着,我们可用这些属性作为司机的成员变量来创建类“Driver”。每当我们需要获取或设置特定司机的详细信息时,我们将使用 new 运算符创建 Driver 类的“对象”。
Driver driver=new Driver();
在创建类时,我们还为成员创建了“getter 和 setter”方法,通过这些方法我们可以获取属性成员各个值。假如必须设置整个对象,我们可使用在类中定义的构造函数。如下所示:
public Driver(String driverName, String joiningDate, boolean isRegular,
String dateOfBirth, float avgCustomerRating){
this.driverName=driverName;
this.joiningDate=joiningDate;
this.isRegular=isRegular;
this.dateOfBirth=dateOfBirth;
this.avgCustomerRating=avgCustomerRating;
}
现在,当想创建这样一个对象时,就可以通过调用 new 操作符和这个构造函数来实现:
Driver driver1=new Driver(“John”, “21/12/2018”, true, “12-01-1983”, 4.5);
如果您正在同时练习代码,则在修复编译错误(如果有)之后,就可构建并运行程序,然后还可继续扩展项目。同时您也将看到与每个 .java 文件对应的 .class 文件。
在Java中,有许多如数组、列表、映射、树等的数据结构。所有这些都在 Collection 框架下,除了 Array,它是 java.util 包的一部分。理解和掌握 Collection 将使您对存储和检索数据感到非常爽——这意味着您学习成功了一半。来用数组做一个简单的例子。在我的“何为Java...” (https://www.toutiao.com/a7045534771065438734/?log_from=4b2c72124184e_1640578614119)中,用 ArrayList 进行了类似的操作,可去看看。
Driver[] drivers=new Driver[5];
//为每个司机设置详细信息或从数据库或用户输入中获取它
假设有五个司机,我们想根据每个司机的一些条件设置工资。为此,我们使用“for”循环。
for(int i=0; i<5; i++){
if(driver[i].isRegular && driver[i].salary < 4000)
driver[i].salary +=200;
}
请注意,我们获取每个司机的详细信息,然后对每个司机进行一些检查。之后,我们设置一个值。在这里,我们将 Driver 的硬编码为 5个,但在实际应用程序中,我们将从数据库或控制台获取它。
那又该如何操作呢?请继续……
考虑从用户那里获取司机详细信息。对于每个数据,使用刚刚学习的 for 循环处理更多信息。首先,让我们创建数组。这次我们不设定长度,而是向用户询问要多少。
如果还没有创建 Driver 类,现在使用您的 IDE 来创建(我这里用的是NetBeans)。这些东西最好在实践中学习。要创建这个类,让我们首先在 IDE 上创建一个项目。创建一个任何名称的项目,例如 myLearning。然后创建一个名为 com.learning 的包(意思是源代码)。在包内,使用成员创建类 Driver。只需单击几个按钮,即可在 IDE 上生成 getter 和 setter。
创建包com.learning,完成后:
创建Driver类
在此类中编写或创建我们之前讨论过的构造函数。
接着可以创建Test类,此类拥有 public static void primary (String args[]) 方法以用于测试之用。
要从用户那里获得输入,最好的方式是使用“Scanner”方法。
之后,我们可以使用Scanner的 next() 方法来一一获取输入。我们第一件事是要知道存储司机数量的信息。然后,我们创建一个相同长度的数组,循环遍历它,实例化循环内的每个对象,并使用构造函数或 setter 方法设置类成员的值。
为了让我们的 java 代码连接到数据库,我们需要一个 JDBC 驱动程序。不同的数据库有不同的驱动;例如,对于 MySQL,驱动程序将是 com.mysql.jdbc.Driver。接下来,我们需要连接到数据库所在的 URL(位置)。为了访问数据库,我们还需要用户名和密码。获取连接后,我们可以通过代码执行查询以获取或设置必要的详细信息。
对于任何简单或复杂的 Web 应用程序,都必须了解 JDBC(Java 数据库连接)——这一点要在学习的过程中牢记。
Java 中的文件处理是使用两个类 FileWriter 和 FileReader 完成的。 Java 文档描述了这些类提供的所有方法和构造函数,它们非常简单。之前使用了 FileInputStream 和 FileOutputStream,但前两者更可取,因为它们写入字符流,而后两个是字节流类。请记住,对于文件处理,必须捕获像 FileNotFoundException 这样的异常。
当然,随着技能的提高,实际学习和应用中,还有更多的IO相关的操作API需要深入研究的。
Java 拥有很大的灵活性。但是作为开发人员需要知道:我们的代码在哪些情况下会给出错误的结果。一种这样的情况是用户没有输入正确的值。比如你把driverName设置为String,用户引入了一些数字或者随机字符,这样的情况我们应该可以处理并通知用户。这些通常在客户端使用 JavaScript 完成相关校验,但客户端也可以禁用 JavaScript。作为开发人员,我们也需要从我们这边(后台)完成此验证。一些标准的异常如:
Java 中有许多此类受检查异常和非受检异常,您需要注意这些异常才能获得健壮的代码。
虽然我们总是厌恶垃圾,但 Java GC 会是您喜欢的东西。作为程序员,您不必担心垃圾收集器线程的工作方式。它只是安静地完成它的工作。但是,如果您有兴趣,你要好好研究一下,因为在一些核心 Java 面试中会被问到。
为了处理并发,Java 支持多线程并具有高效的内置方法。虽然许多人认为线程是一个可怕的话题,但在 Java 中却并非如此,使用起来非常方便。线程的行为有时会有所不同,就如人们都会有某个时候情绪波动一样,没啥大惊小怪的?只要处理得当,线程总是像处于最佳状态。
例如,您正在某地某事尝试预订出租车,总会有很多用户尝试从相同的起点寻找相同的出租车——这里出现的多个人就像运行的多线程一样。
那当这样时,谁获得预订确认呢?
第一个被确认的人!如果您快速预订了,则车子为您锁定——其他打车人不会看到这辆特定的出租车。但是,如果您出于某种原因取消叫车,则会解除锁定,此车又可供其他人预定使用。线程也是如此。如果一个线程正在更改其他人想要访问的代码的一部分,则其他线程必须等待轮到它们,以便所有线程不会同时处理相同的数据并破坏它。多线程让我们的生活变得轻松——想想在线票务、银行交易和所有安全交易——如果每个人都可以同时访问相同的数据,那世界将肯定充满混乱!
好的,现在我们来到了真正的地方!学习 Java 的全部意义在于创建可交互且快速的强大 Web 应用程序。如果您已经安装了 IDE,那么您需要做的就是将 Jakarta EE(以前叫J2EE) 组件安装到您的 IDE 中。前面的掌握后,就要开始学习如何构建可扩展且健壮的 Web 应用程序了。
要构建 Web 应用程序,需要了解 servlet 和 JSP(Java 服务器页面)的基础知识,它们很容易学习。还有许多其他框架,如 Spring、Struts,等等,它们在与 Java 结合时提供了强大的 Web 应用程序支持。这个我们可以选择不同的相关教程来进一步学习。
Java Web 服务用于与 MVC 架构的不同层进行交互。 Java Web 服务 (JWS) 应用程序有两种通信方式——SOAP 和 RESTful 服务——这个通信是通过 WSDL(Web 服务描述语言)完成的。在学习到这一步后,可以找些关于 SOAP 和 REST 的内容丰富的教程,然后开始使用 Java Web 服务。
web服务,这个是走向微服务的热门抓手,请一定顺溜地学到这里,那说明你的技术已经可以独当一面了 ^_^
在本文中,我谈论了掌握 Java 所需了解的各种 子主题的摘要。 Java 还使用了许多其他 OOPS 概念——例如装箱、拆箱、设计模式、泛型等,可以帮助您来更好地进行编码实践,帮助您构建功能性应用程序。你还可通过做些面试题来检验你是否能回答这些 Java 面试问题来,以确保你的理解是正确的!
通过上面的Java编程的子主题,作为初学者在具体学习时就有了更清晰的进阶路线,即可快速打通知识点,由可针对性深挖“主题”知识。
为了这些子主题有落脚点,最后这里给出了一个Java学习的初级入门和高级进阶的书籍列表,基于我们谈到的这些循序渐进的学习主题,这些书籍将使你学习 Java 拥有更愉快而彻底的体验。
这些书籍是(都有对应的中文版):
除此之外,还……你先把上面的搞定再说吧。
习是一件很痛苦的事情,很多人们总问别人有没有捷径,问学习路线,好像问完了就学会了一样。其实我想说是:要是你真的想做一件事,那么就立刻去做好了,因为时间是不会等你的,在你犹豫的时候,时间早就流走了。所以与其犹豫不决不如理科开始行!
有的人说学Java要先学HTML,那就一起来看HTML是什么吧!
首先HTML 并不是一种编程语言,而是一种标记语超文本标记语言,负责展示网站的外观,用来控制各种属性的展示,要想做JavaWeb开发,HTML是必须学会的基础。
既然要学习开发,那么必须要有工具呀!
EditPlus 3
嗯!就先来认识一下HTML的一些标签
其中的主要的标签如下
<html>-------------------开始html文档
<head>--------------------开始文档头部
<title>---------------------开始文档标题
This is first page
</title>---------------------结束文档标题
</head>----------------------结束文档头部
<body>-----------------------开始文档体
Hello World.
</body>------------------------结束文档体
</html>------------------------结束html文档
新建 HTML 页面就会出现代码如下(绿色文字为注释):
一个页面的整体结构就是:
所有的内容都在<html></html>这两个标签内部。然后分为 <head> </head>头部和 <body> </body>身体两部分。
文档的头部描述了文档的各种属性和信息,包括文档的标题、在 Web 中的位置以及和其他文档的关系等。
绝大多数文档头部包含的数据都不会真正作为内容显示给读者。
<body>标签包含文档的所有内容
(比如文本、超链接、图像、表格和列表等等。)
<title> 定义文档的标题。
浏览器会以特殊的方式来使用标题,并且通常把它放置在浏览器窗口的标题栏或状态栏上。同样,当把文档加入用户的链接列表或者收藏夹或书签列表时,标题将成为该文档链接的默认名称。
下面的就算是一个简单的网页了。
让我们保存执行一下看看。
hello world!Java学习我来了!
AVA中将WORD转换为HTML导入到WANGEDITOR编辑器中(解决图片问题,样式,非常完美),wangEditor如何导入word文档,如何实现导入WORD文档到WANGEDITOR编辑器中?WANGEDITOR导入WORD文档 WANGEDITOR WORD导入插件,HTML富文本编辑器导入WORD,Web富文本编辑器导入WORD,WANGEDITOR富文本编辑器导入WORD,WANGEDITOR导入WORD,WANGEDITORWORD导入编辑,wangEditor集成word导入功能,
后端是用的JAVA,SpringBoot框架,实际上前端在集成的时候是不关心后端具体是用什么语言实现的。
它这个版本有几个wangEditor3,wangEditor4,wangEditor5,好用的是就3和4,5不支持插入HTML。但是用户用插入HTML这个功能用的比较多。
vue-cli-wangEditor3,vue3-cli-wangEditor4集成word导入功能。在VUE框架下面集成了WORD导入功能。
用户选择word文件后,自动转换成html,自动将word里面的图片上传到服务器中,自动将HTML添加到编辑器中。
主要的方案就是提供一个转换接口,转换接口使用RESTful协议,这样的话兼容性更好一点,其它的平台用起来的话更方便简单一点,而且测试起来也方便。
现有项目需要为TinyMCE增加导入word文件的功能,导入后word文件里面的图片自动上传到服务器中,返回图片和文字HTML,word里面的文本样式保留
用户一般在发新闻和发文章时用到,算是一个高频使用功能,用户体验上来讲确实是很好,和以前的发新闻或者发文章的体验比起来要方便许多,用户用的更爽。
1.下载示例
https://gitee.com/xproer/zyoffice-vue3-cli-wang-editor4
2.引入组件
3.添加按钮
4.配置转换接口
效果
开发文档:https://drive.weixin.qq.com/s?k=ACoAYgezAAwsDazDKJ
产品比较:https://drive.weixin.qq.com/s?k=ACoAYgezAAwh8oq8Zf
产品源代码:https://drive.weixin.qq.com/s?k=ACoAYgezAAwjJM8412
报价单:https://drive.weixin.qq.com/s?k=ACoAYgezAAwsfyDdrf
*请认真填写需求信息,我们会在24小时内与您取得联系。