java入门
Java帝国的诞生
C&C++
1972年C诞生
- 贴近硬件,运行极快,效率极高。
- 操作系统,编译器,数据库,网络系统等。
- 指针和内存管理
1982年C++诞生
- 面向对象
- 兼容C
- 图形领域,游戏等等
反抗
- 我们要建立一个新的语言:
- 语法有点像C
- 没有指针
- 没有内存管理
- 真正的可移植性,编写一次,到处运行
- 每个操作系统上增加了一个抽象层JVM(Java虚拟机),实现了可移植性
- 面向对象
- 类型安全
- 高质量的类库
- …
java初生
- 1995年的网页简单而粗糙,缺乏互动性
- 图形界面的程序(Applet)
- Bill Gates说:这是迄今为止设计的最好的语言!
- Java 2 标准版(J2SE):去占领桌面
- 失败,开发桌面应用的根本无法接受Java,Java做的界面非常丑陋
- Java 2 移动版(J2ME):去占领手机
- 不受待见,当时互联网还未兴起
- Java 2 企业版(J2EE):去占领服务器
- 大家发现Java简直就是为服务器而生的,而且特别适合一些团队开发一些复杂的大型项目
- 大量的巨头加入
Java发展
他们基于Java开发了巨多的平台,系统,工具
- 构建工具:Ant,Maven,Jekins
- 应用服务器:Tomcat,Jetty,Jboss,Websphere,weblogic
- weblogic凭借着集群功能,第一次展示了复杂应用的可扩展性和高可用性
- 三高问题:高可用,高性能,高并发
- 三高问题这个中间界的东西把程序员从事务管理、安全管理、权限管理等方面解放出来,让他们能够专注于业务去开发
- Web开发:Struts,Spring,Hibernate,Mybatis
- 开发工具:Eclipse,NetBean,intellij idea,Jbuilder
- …
- 2006:Hadoop(大数据领域)
- 2008:Android(手机端)
- 一个伟大的帝国诞生了!!!!!!
Java特性和优势
- 简单性
- 可以说是C语言的纯净版,没有头文件,没有指针运算,不需要去分配内存,语法基于C,学习起来不费力
- 面向对象
- 程序设计基础,重点放在对象以及对象之间的接口上,模拟人的思维去写程序
- 万物皆对象
- 可移植性
- 跨平台性,可以通过JVM跨平台移植
- Write Once, Run Anywhere
- 高性能
- 即时编译
- 分布式
- Java就是为网络分布式来设计的,可以处理很多Tcp/Ip协议上的东西
- 可以通过网络调用方法
- 动态性
- 本身不具有动态性,但反射机制让它具有动态性
- 多线程
- 可以实现更多的交互行为和实时行为
- 比如:同时在听音乐的过程中打代码
- 安全性
- Java构成了一种防病毒放篡改的系统
- 健壮性
- Java几乎不会造成计算机的崩溃,在运行前会对内存进行一种检查,确认内存是合法的
- 基于异常处理机制,哪怕出了问题也不会崩溃
那么问题来了,Java为什么能够成功?
用中国的老话说就是:天时地利人和!!
Java三大版本
- Write Once, Run Anywhere
- JavaSE:标准版(桌面程序,控制台开发…)
- JavaME:嵌入式开发(手机,小家电…) 很少用
- JavaEE:E企业级开发(web端,服务器开发)
JDK JRE JVM
- JDK:Java Development Kit (JAVA 开发工具包)
- 除了包含JRE以外还包含了开发java程序所必须的命令工具
- JDK是 Java 语言的软件开发工具包(SDK)。在JDK的安装目录下有一个jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib合起来就称为jre
- JDK = JRE+编译、运行等命令工具
- JRE:Java Runtime Environment (JAVA 运行环境)
- 除了包含JVM以外还包含了运行java程序所必须的环境
- JRE = JVM+java系统类库(小零件)
- JVM:JAVA Virtual Machine(JAVA 虚拟机)
- 加载.class并运行.class
说明:
-
运行java程序的最小环境是 JRE
-
开发java程序的最小环境是 JDK
JAVA开发环境搭建
JDK8下载与安装
1.安装JDK
-
JDK11、12、13、14都已经出来了,但是***不稳定***,在企业中应用的并不多,***JDK8***是主流
-
官网下载需要注册登录oracle账号 点击进入官网下载
下载电脑对应的版本
-
双击安装JDK
-
记住安装的路径
-
配置环境变量
-
我的电脑–>右键–>属性
-
高级系统设置–>环境变量
-
所有环境变量添加在系统变量中
-
配置JAVAHOME 新建–>
-
变量名:JAVA_HOME
-
变量值:
刚才你安装的路径
E:\environment\java\jdk8
-
-
配置path变量 双击path–>
-
新建两个(
%JAVA_HOME%
代表引用JAVA_HOME这个环境变量的地址)
- %JAVA_HOME%\bin
- %JAVA_HOME%\jre\bin
-
-
-
测试JDK是否安装成功
-
打开cmd 输入
java -version
可以显示版本号说明已经安装成功了或者输入
java
、javac
也可以测试(本质是用cmd运行了bin目录中的程序)
-
2.卸载JDK
1.删除java的安装目录
2.删除JAVA_HOME
3.删除path下关于java的目录
4.java -version
JDK目录介绍
名称 | 作用 |
---|---|
bin | 用于放***可执行的程序***,上面说的在cmd中输入的java 、javac 就在这个目录中 |
include | 由于java是C和C++编写的,启动时需要引用C语言的头文件,这里就存放这些***头文件*** |
jre | jre就是***java运行环境*** |
lib | 全称为library,存放了java的一些***类库文件***,都是一些***.jar***文件 |
src.zip | 资源文件*,存放了一些***常用的类*** |
HelloWorld及简单语法规则
HelloWorld
1.随便新建文件夹,存放代码
2.新建一个java文件
- 文件后缀名.java
- Hello.java
- 【注意点】系统可能没有显示文件后缀名,我们需要手动打开
3.编写代码
public class Hello{
public static void main(String[] args){
System.out.print("Hello,World!");
}
}
4.编译javac java文件
5.运行class文件,java class文件
F:\2019菱川日常工作\09-其他\学习\07--JAVA\code>javac Hello.java
F:\2019菱川日常工作\09-其他\学习\07--JAVA\code>java Hello
Hello,World!
F:\2019菱川日常工作\09-其他\学习\07--JAVA\code>
可能遇到的问题
- 每个单词的大小不能出现问题,java大小写敏感;
- 尽量使用英文;
- 文件名 和 类名必须保持一致;
- 符号必须使用英文符号
Notepad++安装和使用
JAVA程序运行机制
在计算机的高级编程类型分为两种:
编译型(compile)
需通过编译器(compiler)将源代码编译成机器码,之后才能执行的语言。一般需经过编译(compile)、链接(linker)这两个步骤。编译是把源代码编译成机器码,链接是把各个模块的机器码和依赖库串连起来生成可执行文件
- 通俗来讲:就像一本书直接翻译成另一种语言
- Java通过编译程序直接编译成
.class
字节码文件 - 优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行
- 缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件
- 例子/主要语言:C / C++等
解释型
解释性语言的程序不需要编译,相比编译型语言省了道工序,解释性语言在运行程序的时候才逐行翻译
- 通俗来讲:就像一个翻译官一句话一句话给你翻译,文章被修改时,就把修改的再翻译
- 优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护
- 缺点:每次运行的时候都要解释一遍,性能上不如编译型语言
- 例子/主要语言:Java、Java Script、Python等
动态语言和静态语言
通常我们所说的动态语言、静态语言是指动态类型语言和静态类型语言 在我看来,动态语言和静态语言指的还是编译型和解释型
- 动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。
Python
和Ruby
就是一种典型的动态类型语言,其他的各种脚本语言如VBScript
也多少属于动态类型语言。 - 静态类型语言:静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,
C/C++
是静态类型语言的典型代表,其他的静态类型语言还有C#
、JAVA
等。
对于动态语言与静态语言的区分,套用一句流行的话就是:Static typing when possible, dynamictyping when needed
两种类型的小总结
- 这两个词听起来都有翻译的意思,但是它们两个有区别:时机不同。就是什么时候去翻译
- java既有编译型的特点,也有解释型的特点
- 解释型的性能不如编译型语言,但电脑硬件方面在提升,现在买个电脑,内存都有16G,32G之类的,所以现在而言编译型也是很快的
程序运行机制
源程序(.java
文件)通过编译器–>字节码(.class
文件)–>类装载器–>字节码校验器–>解释器–>操作系统平台
一个面试题——编译运行过程
-
编译期:
.java
源文件,经过编译,生成``.class`字节码文件 -
运行期:JVM加载
.class
并运行``.class`特点:跨平台、一次编程到处使用——Write Once, Use Anywhere
IDEA安装
什么是IDE(了解)
集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。如微软的Visual Studio系列,Borland的C++ Builder、Delphi系列等。该程序可以独立运行,也可以和其它程序并用。IDE多被用于开发HTML应用软件。例如,许多人在设计网站时使用IDE(如HomeSite、DreamWeaver等),因为很多项任务会自动生成。
IDEA介绍
IDEA 全称 IntelliJ IDEA,是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。它的旗舰版本还支持HTML,CSS,PHP,MySQL,Python等。免费版只支持Java等少数语言
传送门:
下载时发现IDEA有两个版本,一个是社区版,一个是旗舰版,旗舰版是付费的,贼贵。社区版就已经够用。但是有好的我干嘛不用对吧!
IEDA安装
- 下载完成后,双击
ideaIU-2020.1.3.exe
,打开安装软件;
PS: 确保电脑没有安装老版本软件,如有请卸载。
- 安装目录选择;
- 按自己电脑配置勾选:
- 点击
next
, 安心等待其安装完成:
- 安装完成后,勾选
Run IntelliJ IDEA
,点击finish
运行软件:
- 会先弹出一个注册框,勾选
Evaluate for free
, 点击Evaluate
: