做为一个想要进阶java后端但又恐惧java的前端工程师,你只是缺乏适合本身的教程,你们都是编程的人,彻底不必从int,String,Boolean,if,else,witch,for,while....这种东西学起了。那就让我开始,先行寻找java后端之旅的路线,而后跟你们一块儿快速进击java后端吧。javascript
了解Java包以前先看看如何使用它。使用IDEA工具建立一个普通的java项目。html
这里对于IDEA工具的下载安装以及jdk的下载就不介绍了(若是真的不会安装jdk,点击查看详细安装步骤),可是你必须保证已经安装了IDEA工具以及jdk才能继续看下去:前端
step1 点击 Create New Project 建立一个工程 vue
step2 这里必须保证的一点就是蓝色框中jdk必须选中一个,若是没有,就点击右边的New将你下载的jdk添加进来,其他选框均不用勾选,点击next java
step3 出现选择模板的界面,默认未勾选,为了方即可以勾选并选择Java Hello Word模板,点击next react
step4 第一行输入项目名称,第二行选择一下项目存储路径,点击Finish完成项目建立 c++
step5 进入Main.java后右键菜单里点击Run 'Main'就能够体验本身的第一个java程序了 web
做为一个职业的前端选手,你可能常常游走于vue/react项目,对项目src目录有着深入的看法,本身也会设计符合本身风格的目录存放相应的代码,那么在java中也是同样的,咱们能够在src中建立不一样的目录来管理不一样的Java代码。算法
来个简单的例子: 当你准备建立Directory(WebStorm里是Directory)的时候,你忽然发现,WDMY 居然没有这个选项,可是有个你在WebStorm里没见过的东西,那就是Package
,没错,Java就是经过这个叫Package
的东西来管理文件目录的。spring
好了,那就建立一个learning.base
的Package(包)
吧,而后你会发现src目录下多了个learning.base
的包。
你能够点击右上角红色框中的齿轮按钮,将Compact Middle Packages
选项的勾去掉,就能够看到learning.base
已经变成了一个learning/base
的级联目录。
此时就能够清楚的解释java中的包究竟是什么东西,他就是用来管理和组织java项目文件的一种目录。
当了解到包的时候,咱们知道包的本质就是个文件夹或者说是目录,可是你(实际上是我)可能会有些许困惑,为何java把目录叫作包,为何还须要包这个概念,咱们写前端也有目录啊,也没见人家把目录抽象成什么包的概念。
那么既然叫作包,它确定不是一种普通目录,那么它跟普通目录到底有什么区别呢?
在寻找答案的时候,发现网上的回答都说没有区别,但我不能放弃啊,没有区别那凭什么会有包的概念而不是叫目录。
我的的理解是这样的:java的包是一种接受java规范的目录结构。它与普通的目录却别就在于它受制于某种规定,而普通目录你能够随意建立。
这种规范包含:
命名规范:包名只能是字符串、数字、下划线、$且不能以数字开头,通常是小写英文字(大写不报错)。
package learning.base;
public class Hello {
}
复制代码
package learning.base
包名声明在java代码中,若是包名中出现什么加减乘除符号,是否是不合理,因此这一规范很是重要。包结构的组织规范:包的结构通常以域名倒写来组织,包名之间以点号.
来链接。好比我有个域名叫作geekrole.com
我就能够这样组织包名com.geekrole.user
。
com/geekrole/user
,你就知道了,目录的命名是个总分结构的,因此包名也是。咱们已经知道,java中的包是来管理和组织java项目文件的一种目录,因此咱们能够将某一类代码封装到同一个包中,java提供的不少标准库文件也是经过包的形式进行组织,只不过它是全局的,并以java开头,好比java.lang
,java.util
等。
打破畏惧心理
此时你(实际上是我)可能会有种面对未知的忧虑和惧怕,我怎么知道它须要有些什么包,它的包有些什么方法,每次调用导入包怎么导入...
好吧,说实话,这种担忧应该是多余的,Idea能够帮咱们自动导入一些用到的包, 你能够试试下面的代码,当你写到Scanner回车后会自动导入Scanner包。若是是自定义包,idea也会有相应提示,以帮助咱们自动导入。
package learning.base;
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
// 输入两个数字比较大小,输出大数
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
int num2 = sc.nextInt();
int res = Math.max(num1, num2);
System.out.println(res);
}
}
复制代码
解决了包导入的问题,那么如何知道有哪些包,这就是个积累的问题了,若是开发过程当中须要用到时间相关,那么就查一查时间相关的包,看看有哪些方法能够供咱们使用,一下是java9官方文档,能够找到你想要用的各类包(java9文档)
tips
能够注意一下包的声明方式与导入方式。package关键字用于声明包,import关键字用于导入包
既然说到了包,那就不妨把jar包和war包也简单说明,避免后续它们给咱们编程带来未知的恐惧。
你可能不了解jar包,但必定知道并用过zip压缩工具,好比2345好压,经过它能够把不少文件甚至文件夹打包到一块儿,方便传输给别人,同时它也拥有压缩算法,能够把文件体积变小。
jar包的本质就是java中的zip包,本质相同,但既然他是jar,就必定跟zip包有区别,jar与zip的区别是什么:jar文件不只用于压缩和发布,并且还用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用(此句来自百度)。
也就是说jar包能够进一步将咱们封装的各类类文件(可能经过包形式阻止起来的类)进一步作个打包文件,而且这个文件在使用的时候彻底不用解压缩,能够直接使用。除此以外还拥有一些zip包的优点,好比压缩。
到此,jar包到底有什么优势本身也能够大体推断出一二了,若是实在强迫症,百度搜一搜,而后你会发现本身也能根据zip包和以上jar与zip的区别猜出来。
说了jar包,怎么又有个war包,直白一点,war包就是把一个web应用打包起来的包,而且跟jar包相似,它也能够直接运行。
咱们能够这样理解,jar包是对各类工具的打包,war则是以整个网站,或者一个网站的一个模块的打包,它能够直接运行。
虽然本文并无什么实质性的编程相关的东西,但它能够从另外一个角度来帮助一些没有java的基础的朋友快速对java有个大体的认识。
如下为闲谈 说到为何要写java相关的文章,就想起了做为一个计科专业的学生,居然只学过c/c++,都没认真玩过java,而后兴趣和机会让我接触了前端,但java始终是块心病啊。
可能java的内容真的有点多,一本正常点的java SE语法书也要四五百页,看起来真的像本字典。就说说我最近看的一本java书《写给大忙人的JavaSE9核心技术》,500多页也像字典同样,大忙人
也没有空看字典啊。
在网上找了找能够快速学习的资料,可是没找到想要的,要么就是介绍int,Integer,String,Boolean, if, else, switch要么开始介绍一堆面向对象的特色,jdk、jre是什么。这种教程内容是很全,可不适合我快速学习,做为一个学过c系语言(c,c++,java,javascript都算)的人,一些基础语法,if,else,switch,while,do while,for都如出一辙啊,重复学习并无多大的必要。
因此想着那就本身开始挑着学吧,而后记录下来,也为一些前端朋友进阶java认真作点事,你们都是编程的,不少不用说的东西那就别说了,快速熟悉java,尽快过分到spring boot等框架,开始真正的后端编程才是重要的,而不是追求内容够多,多了学不完要他何用?
还有个缘由,报了慕课网7月老师的java全栈课,却没有java基础,因此基础这里得本身补一下了。