这里写目录标题
Java简介
詹姆斯·高斯林(James Gosling)
1977年获得了加拿大卡尔加里大学计算机科学学士学位,1983年获得了美国卡内基梅隆大学计算机科学博士学位,毕业后到IBM工作,设计IBM第一代工作站NeWS系统,但不受重视。后来转至Sun公司,1990年,与Patrick,Naughton和Mike Sheridan等人合作“绿色计划”,后来发展一套语言叫做“Oak”,后改名为Java。
Java发展历程
1995年5月23日,Sun公司在Sun world会议上正式发布Java。
1996年1月,Sun公司发布了Java的第一个开发工具包(JDK 1.0),这是Java发展历程中的重要里程碑,标志着Java成为一种独立的开发工具。
1997年2月,JDK 1.1面世。
1997年4月2日,Java One会议召开,参会者逾一万人,创当时全球同类会议规模之纪录。
1997年9月,Java Developer Connection社区成员超过10万
1998年12月8日,第二代Java平台的企业版J2EE发布。
1999年6月,Sun公司发布了第二代Java平台(简称为Java2)的3个版本:J2ME;J2SE;J2EE。
1999年4月27日,HotSpot虚拟机发布。
2000年5月,JDK1.3、JDK1.4和J2SE1.3相继发布,几周后其获得了Apple公司Mac OS X的工业标准的支持。
2001年9月24日,J2EE1.3发布。
2002年2月26日,J2SE1.4发布。
2004年9月30日,J2SE1.5发布,成为Java语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE 1.5更名为Java SE 5.0。
2005年6月,Sun公司发布了Java SE 6。此时,Java的各种版本已经更名,已取消其中的数字2,如J2EE更名为JavaEE,J2SE更名为JavaSE,J2ME更名为JavaME。
2006年11月13日,Java技术的发明者Sun公司宣布,将Java技术作为免费软件对外发布。
从2007年3月起,全世界所有的开发人员均可对Java源代码进行修改。
2009年,甲骨文公司宣布收购Sun 。
2010年,Java编程语言的共同创始人之一詹姆斯·高斯林从Oracle公司辞职。
2011年,甲骨文公司举行了全球性的活动,以庆祝Java7的推出,随后Java7正式发布。
2014年,甲骨文公司发布了Java8正式版。
2014 年 3 月 18 日,Oracle 公司发表 Java SE 8。
2017 年 9 月 21 日,Oracle 公司发表 Java SE 9
2018 年 3 月 21 日,Oracle 公司发表 Java SE 10
2018 年 9 月 25 日,Java SE 11 发布
2019 年 3 月 20 日,Java SE 12 发布
Java语言平台版本
J2SE(Java 2 Platform Standard Edition)标准版
该版本是为开发普通桌面和商务应用程序提供的解决方案;该技术体系是其他两者的基础,可以完成一些桌面应用程序的开发。
J2ME(Java 2 Platform Micro Edition)小型版
该版本是为开发电子消费产品和嵌入式设备提供的解决方案。
J2EE(Java 2 Platform Enterprise Edition)企业版
该版本是为开发企业环境下的应用程序提供的一套解决方案;该技术体系中包含的技术如 Servlet、Jsp等,主要针对于Web应用程序开发 B/S。jdk1.5以后,我们将其更名为: JAVASE , JAVAME , JAVAEE
注:
B/S和C/S都是随着互联网的发展而出现的一种网络结构模式,而其用的非常广泛,在我们生活中都很常见。
B/S就是“Browser/Server”的缩写,即“浏览器/服务器”模式。是随着互联网的发展,web出现后兴起的一种网络结构模式。这种模式统一了客户端,让核心的业务处理在服务端完成。
C/S就是“Client/Server”的缩写,即“客户端/服务器”模式。是一种软件系统体系结构,也是生活中很常见的。这种结构是将需要处理的业务合理地分配到客户端和服务器端,这样可以大大降低通信成本,但是升级维护相对困难。比如我们手机中安装的微信、qq、王者荣耀等应用程序就是C/S结构。
Java语言的特点
简单性,面向对象,分布式,健壮性,编译和解释性,结构中立,安全性,可移植性,高性能,多线程性,动态性。
开源,跨平台(通过JVM实现)。
Java语言跨平台原理——JVM
Java语言跨平台只要在需要运行java应用程序的操作系统上,先安装一个Java虚拟机(JVM Java Virtual Machine)即可。 由JVM来负责Java程序在该系统中的运行。
图解
因为有了JVM,所以同一个Java程序在三个不同的操作系统中都可以执行。这样就实现了Java程序的跨平台性。也称为Java具有良好的可移植性。
注意:
JAVA语言是跨平台的,而JVM不是跨平台的。
JVM是不跨平台的,因为针对不同的操作系统,JAVA提供了不同的JVM,而各个操作系统的可执行文件是不同。
JRE和JDK
JRE:Java运行环境(Java Runtime Environment)
包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。
JDK:Java开发工具包(Java Development Kit)
JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。
为什么JDK中包含一个JRE
其一,开发完的程序,总需要运行一下看看效果。
其二,也是最重要的,JDK中的开发工具其实都是java语言编写的应用程序,为了方便使用才打包成exe文件,如果没有JRE,那么这些工具是运行不了的。
JDK,JRE,JVM的作用和关系
用jdk编写一个java程序交由jre 运行起来 由jvm实现跨平台。
JDK安装路径下的目录解释
bin目录:
该目录用于存放一些可执行程序。如javac.exe(java编译器)、java.exe(java运行工具),jar.exe(打包工具)和javadoc.exe(文档生成工具)等。
db目录:
db目录是一个小型的数据库。从JDK 6.0开始,Java中引用了一个新的成员JavaDB,这是一个纯Java实现、开源的数据库管理系统。这个数据库不仅轻便,而且支持JDBC 4.0所有的规范,在学习JDBC 时,不再需要额外地安装一个数据库软件,选择直接使用JavaDB即可。
jre目录:
"jre"是 Java Runtime Environment 的缩写,意为Java程序运行时环境。此目录是Java运行时环境的根目录,它包括Java虚拟机,运行时的类包,Java应用启动器以及一个bin目录,但不包含开发环境中的开发工具。
include目录:
由于JDK是通过C和C++实现的,因此在启动时需要引入一些C语言的头文件,该目录就是用于存放这些头文件的。
lib目录:
lib是library的缩写,意为 Java 类库或库文件,是开发工具使用的归档包文件。
src.zip文件:
src.zip为src文件夹的压缩文件,src中放置的是JDK核心类的源代码,通过该文件可以查看Java基础类的源代码。
Java基础语法
对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
类:类是一个模板,它描述一类对象的行为和状态。
方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。
实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。
我们的第一个java程序:Hello World.java
public class Hello{
public static void main(String [] args){
System.out.println("Hello World");
}
}
定义类
格式: class 类名 {}
写main方法
在大括号中间添加一个主(main)方法/函数(一个程序中只会有一个main方法)
格式: public static void main(String[] args){}
写输出语句
在主方法的大括号中间添加一行输出语句
格式: System.out.println("HelloWorld");
编译和运行程序
使用javac命令编译HelloWorld源文件,生成字节码文件(后缀名为.class)
格式: javac 文件名.java (注意:这里是带有后缀名的)
使用java命令对class字节码文件进行解释运行
格式: java 字节码文件名 (注意:这里是没有后缀名的)
注:
字节码: Java程序经过虚拟机编译后产生的.class文件 只面向虚拟机 。因为字节码的存在,可以不针对专一的特定的机器,Java通过字节码无需编译可在多种不同的机器上运行。
Java基本语法
编写Java程序时应当注意以下几点:
大小写敏感:Java 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的。
类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。
方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java。(如果文件名和类名不相同则会导致编译错误)。
主方法入口:所有的 Java 程序由 public static void main(String[] args) 方法开始执行。
Java标识符
标识符的概述和组成规则
Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
关于Java标识符应当注意以下几点:
所有的标识符都应该以字母(A-Z 或者 a-z),美元符($
)、或者下划线()开始。
首字符之后可以是字母(A-Z 或者 a-z),美元符($
)、下划线()或数字的任何字符组合。
关键字不能用作标识符。
标识符是大小写敏感的。
合法标识符举例:age、$salary、_value、__1_value.
非法标识符举例:123abc、-salary.
标识符中常见的命名规则
包(就是文件夹,它的存在是为了解决我们同一个目录下不能同时存在两个相同名称的文件。)
字母都是小写,例: itcast 。
类或者接口
一个单词: 首字母大写,其余字母小写 ,
例:Student , Teacher , Spring , Struts , Hibernate。
多个单词: 每一个单词的首字母都是大写,其余字母小写,
例: StudentName , UserLoginController。
方法或者变量
一个单词: 字母全是小写
例: name , age。
多个单词: 从第二个单词开始,首字母大写,其余字母小写
例: getName , getAge。
常量
一个单词: 字母全是大写
例: NAME , AGE
多个单词: 字母全是大写,每一个单词之间使用 _ 隔开
例:STUDENT_MAX_AGE
Java修饰符
Java可以使用修饰符来修饰类中方法和属性。主要有两类修饰符:
访问控制修饰符 : default, public , protected, private
非访问控制修饰符 : final, abstract, static, synchronized
Java关键字
以下列表列出的关键字不能用于常量、变量、和任何标识符的名称命名。
类别 | 关键字 | 含义 |
---|---|---|
访问控制 | private | 私有的 |
访问控制 | protected | 受保护的 |
访问控制 | public | 公共的 |
访问控制 | default | 默认 |
类、方法和变量修饰符 | abstract | 声明抽象 |
类、方法和变量修饰符 | class | 类 |
类、方法和变量修饰符 | extends | 扩充,继承 |
类、方法和变量修饰符 | final | 最终值,不可改变的 |
类、方法和变量修饰符 | implements | 实现(接口) |
类、方法和变量修饰符 | interface | 接口 |
类、方法和变量修饰符 | native | 本地,原生方法(非 Java 实现) |
类、方法和变量修饰符 | new | 新,创建 |
类、方法和变量修饰符 | static | 静态 |
类、方法和变量修饰符 | strictfp | 严格,精准 |
类、方法和变量修饰符 | synchronized | 线程,同步 |
类、方法和变量修饰符 | transient | 短暂 |
类、方法和变量修饰符 | volatile | 易失 |
程序控制语句 | break | 跳出循环 |
程序控制语句 | case | 定义一个值以供 switch 选择 |
程序控制语句 | continue | 继续 |
程序控制语句 | default | 默认 |
程序控制语句 | do | 运行 |
程序控制语句 | else | 否则 |
程序控制语句 | for | 循环 |
程序控制语句 | if | 如果 |
程序控制语句 | instanceof | 实例 |
程序控制语句 | return | 返回 |
程序控制语句 | switch | 根据值选择执行 |
程序控制语句 | while | 循环 |
错误处理 | assert | 断言表达式是否为真 |
错误处理 | catch | 捕捉异常 |
错误处理 | finally | 有没有异常都执行 |
错误处理 | throw | 抛出一个异常对象 |
错误处理 | throws | 声明一个异常可能被抛出 |
错误处理 | try | 捕获异常 |
包相关 | import | 引入 |
包相关 | package | 包 |
基本类型 | boolean | 布尔型 |
基本类型 | byte | 字节型 |
基本类型 | char | 字符型 |
基本类型 | double | 双精度浮点 |
基本类型 | float | 单精度浮点 |
基本类型 | int | 整型 |
基本类型 | long | 长整型 |
基本类型 | short | 短整型 |
变量引用 | super | 父类,超类 |
变量引用 | this | 本类 |
变量引用 | void | 无返回值 |
保留关键字 | goto | 是关键字,但不能使用 |
保留关键字 | const | 是关键字,但不能使用 |
保留关键字 | null | 空 |
注释
//单行注释 Line Comment
/*
多行注释
Block Comment
*/
/**
* @Description 文档注释
* @Author 作者名
* @Version 版本号
* @since 最小jdk版本
* @param 参数名
* @return 返回值情况
* @throws 异常抛出情况
*
*/
注释的作用
解释说明程序。
帮助我们调试程序。