语言:是人与人之间用于沟通的一种方式。例如:中国人与中国人用普通话沟通。而中国人要和英国人交流,就要学习英语。计算机语言:人与计算机交流的方式。如果人要与计算机交流,那么就要学习计算机语言。计算机语言有很多种。计算机语言一般划分下面几代:
- 第一代语言:机器语言(相当于人类的原始阶段) 。指令以二进制代码形式存在。
- 第二代语言:汇编语言(相当于人类的手工业阶段) 。使用助记符表示一条机器指令。
- 第三代语言:高级语言(相当于人类的工业阶段) 。C、Pascal、Fortran面向过程的语言丶C++面向过程/面向对象丶Java跨平台的纯面向对象的语言
从上面这个简单的加法计算,可以看出越到高级语言,越接近人的思维,人使用起来就越方便。高级语言的出现,尤其是面向对象语言的出现,相当于人类的工业社会,高级语言极其易用,编程门槛和难度大大降低,大量的人员进入软件开发行业,为软件爆发性的增长提供了充足的人力资源。目前以及可预见的将来,计算机语言仍然处于“第三代高级语言”阶段。
Java语言概述
-
Java是目前应用最为广泛的软件开发平台之一。随着Java以及Java社区的不断壮大,Java 也早已不再是简简单单的一门计算机语言了,它更是一个平台、一种文化、一个社区。 -
作为一个平台,Java虚拟机扮演着举足轻重的作用。除了 Java语言,任何一种能够被编译成字节码的计算机语言都属于Java这个平台。Groovy、Scala、 JRuby、Kotlin等都是Java平台的一部分,它们依赖于Java虚拟机,同时,Java平台也因为它们变得更加丰富多彩。 -
作为一种文化,Java几乎成为了 “开源”的代名词。在Java程序中,有着数不清的开源软件和框架。如Tomcat、Struts, Hibernate, Spring等。就连JDK和JVM自身也有不少开源的实现,如OpenJDK、Apache Harmony。可以说,“共享”的精神在Java世界里体现得淋漓尽致。 -
作为一个社区,Java拥有全世界最多的技术拥护者和开源社区支持,有数不清的论坛和资料。从桌面应用软件、嵌入式开发到企业级应用、后台服务器、中间件,都可以看到Java的身影。其应用形式之复杂、参与人数之众多也令人咋舌。可以说,Java社区已经俨然成为了一个良好而庞大的生态系统。其实这才是Java最大的优势和财富。
Java 是最好的语言吗?
不是,因为在每个领域都有更合适的编程语言。
- C 语言无疑是现代计算机软件编程语言的王者,几乎所有的操作系统都是 C 语言写成的。C++ 是面向对象的 C 语言,一直在不断的改进。
- JavaScript 是能运行在浏览器中的语言,丰富的前端界面离不开 Javascript 的功劳。近年来的 Node.js 又在后端占有一席之地。
- Python 用于系统管理,并通过高性能预编译的库,提供 API 来进行科学计算,文本处理等,是 Linux 必选的解释性语言。
- Ruby 强于 DSL(领域特定语言),程序员可以定义丰富的语义来充分表达自己的思想。
- Erlang 就是为分布式计算设计的,能保证在大规模并发访问的情况下,保持强壮和稳定性。
- Go 语言内置了并发能力,可以编译成本地代码。当前新的网络相关项目,很大比例是由 Go 语言编写的,如 Docker、Kubernetes 等。
- 编写网页用 PHP,函数式编程有 Lisp,编写 iOS 程序有 Swift/Objective-C。
- R的思想是:它可以提供一些集成的统计工具,但更大量的是它提供各种数学计算、统计计算的函数,从而使使用者能灵活机动的进行数据分析,甚至创造出符合需要的新的统计计算方法
- SQL 是用于访问和处理数据库的标准的计算机语言, 这类数据库包括:MySQL,Oracle, Sybase, SQL Server, DB2, Access 等等
一句话概括,能留在排行榜之上的语言,都是好的语言,在其所在的领域能做到最好。
java的版本发展如下图所示:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Java技术体系平台? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
三者的关系如下图所示:
Java语言的主要特点:面向对象
Java语言的主要特点:跨平台性
- 通过Java语言编写的应用程序在不同的系统平台上都可以运行这就是跨平台性。原理:只要在需要运行 java 应用程序的操作系统上,先安装一个Java虚拟机 (JVM JavaVirtual Machine) 即可。由JVM来负责Java程序在该系统中的运行。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
Java虚拟机:JVM是一个虚拟的计算机。负责执行指令,管理数据、内存、寄存器。只有某平台提供了对应的java虚拟机,java程序才可在此平台运行。Java虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行”? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Java中的垃圾回收:
- 在C/C++等语言中,由程序员负责回收无用内存。Java 语言消除了程序员回收无用内存空间的责任:它提供一种系统级线程跟踪存储空间的分配情况。并在JVM空闲时,检查并释放那些可被释放的存储空间。垃圾回收在Java程序运行过程中自动进行,程序员无法精确控制和干预。Java程序还会出现内存泄漏和内存溢出问题吗?Yes!
Java语言的环境搭建
什么是JDK,JRE? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
JDK、JRE、JVM关系?
安装JDK
- 进入官网www.oracle.com,下载需要的JDK版本
- 傻瓜式安装,下一步即可。
- 建议:安装路径不要有中文或者空格等特殊符号。
- 如果操作系统是64位的,软件尽量选择支持64位的(除非软件本身不区分)。
JDK的安装目录? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
配置环境变量 path
- 根据windows系统在查找可执行程序的原理,可以将java工具所在路径定义到path 环境变量中,让系统帮我们去找运行执行的程序。具体过程可以百度。? ? ? ? ? ? ? ? ? ? ? ? ? ?
配置完path环境变量以后的验证? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
初步了解?Java?的加载与执行
- 搭建好了开发环境后,在编写第一个 Java 程序之前,我们应当对 Java 的加载与执行提前有一个简单的了解,请 看下图:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
通过上图,我们可以看到 Java 程序从开发到最终运行是这样进行的:
- 第一步(写代码):在任意位置创建一个.java 结尾的文件,程序员在该文件中编写符合 Java 语法的源代码,这个文件被称为Java 源文件。
- 第二步(编译):使用“javac”命令对 java 源文件进行编译,如果 Java 源文件符合 Java 语法规则,则编译生成 1 个或者多个以“.class”结尾的文件。“.class”结尾的文件我们称之 为字节码文件,注意字节码文件不是普通文本文件,使用记事本等文本编辑器是无法打开的, 但该文件内容也不是二进制,如果是二进制形式的话,操作系统是可以直接执行的,这个文件 的内容我们称之为字节码。注意:这里有一个“类名”的概念,假设生成的文件是 A.class, 则表示类名为 A,B.class 则表示类名为 B。
- 第三步(运行):使用“java”命令运行已编译的 Java 程序,假设编译之后的字节码文件 是 A.class,则在 dos 命令窗口中执行 java A命令,这个时候 Java 虚拟机(JVM)就启动了, Java 虚拟机通过“类装载器 ClassLoader”从硬盘中找到 A.class 文件并装载,字节码文件被装 载到 Java 虚拟机之后,Java 虚拟机解释器对字节码进行解释,最终解释为二进制码,然后操 作系统通过执行二进制指令来和硬件平台完成交互。
以下则是 Java 程序加载与执行的过程,接下来我给大家总结 7 条规则,大家可以理解并记忆一下:
- Java 程序从开发到运行包括编译和运行两个阶段,这两个阶段可以在不同的操作系统 中完成,例如在 windows 环境下进行编译,在 Linux 环境下运行,这是因为有 JVM 机制的存 在,做到了一次编译到处运行(跨平台/可移植)。
- 编译阶段需要使用 javac.exe(安装 JDK 之后该命令就存在了)命令,运行阶段需要使 用 java.exe(安装 JRE 之后该命令就存在了)命令。
- 一个 Java 源文件可能会编译生成多个 class 文件。
- Java 源文件中的源代码如果不符合 Java 的语法机制则编译时编译器会提示错误信息, 并且无法生成 class 文件。反之则生成 class 文件,而 class 文件才是最终要执行的程序,此时 将 Java 源文件删除是不会影响 Java 程序运行的(当然,我们也不必删除 java 源文件,因为在 运行 class 文件之后,如果没有达到预期的运行效果,这个时候还需要将 Java 源代码修改,重 新编译,以达到最终的运行效果)。
- 若生成的字节码文件名为 A.class,那么我们称 A为一个类的名字
- 当编译阶段完成之后,我们可以使用 JRE 中的 java.exe 命令运行程序,例如执行命令 “java A”,该命令执行后会启动类加载器,类加载器去硬盘上搜索 A.class 文件,找到该字节 码文件之后,将其加载到 JVM 当中,JVM 中的解释器会将 A.class 字节码文件解释为操作系 统可以执行的二进制码,然后操作系统通过执行二进制码和硬件平台交互。
- 运行 Java 程序的前提是当前操作系统上已经安装了对应版本的 JVM(JVM 不是单独 安装的,安装 JRE 即可,不同的操作系统需要安装不同版本的 JRE,不同版本的 JRE 对应不 同版本的 JVM)。
在了解了 Java 程序的加载与执行之后,我们开始动手实现第一个 Java 程序吧!
第一个Java程序HelloWorld
开发环境已经搭建完毕,可以开发我们第一个Java程序了。?步骤如下:
- 将 Java 代码编写到扩展名为 .java 的文件中。
- 通过 javac 命令对该 java 文件进行编译。
- 通过 java 命令对生成的 class 文件进行运行。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
1:编写Java源程序?
选择最简单的编辑器:记事本。 敲入如下代码
public class HelloWorld {
public static void main(String[] args) {
System.out.println("hello world !!!");
}
}
将文件保存成HelloWorld.java,这个 文件是存放java代码的文件, 称为源文件。文件名必须是 HelloWorld ,保证文件名和类的名字是一致的,注意大小写。每个字母和符号必须与示例代码一模一样。第一个 HelloWord 源程序就编写完成了,但是这个文件是程序员编写的,JVM是看不懂的,也就不能运行,因此我们必须将编写好的 Java源文件 编译成JVM可以看懂的 字节码文件 。
2:编译Java源文件
在DOS命令行中,进入Java源文件的目录,使用 javac 命令进行编译。
编译成功后,命令行没有任何提示。打开 d:\day01 目录,发现产生了一个新的文件 HelloWorld.class ,该文件 就是编译后的文件,是Java的可运行文件,称为字节码文件,有了字节码文件,就可以运行程序了。
3:运行Java程序
在DOS命令行中,进入Java源文件的目录,使用 java 命令进行运行。
入门程序说明??
- 编译:是指将我们编写的Java源文件翻译成JVM认识的class文件,在这个过程中, javac 编译器会检查我们 所写的程序是否有错误,有错误就会提示出来,如果没有错误就会编译成功。
- 运行:是指将 class文件 交给JVM去运行,此时JVM就会去执行我们编写的程序了。
java HelloWorld的执行过程以及原理
注释
注释是对代码的解释和说明,其目的是让程序员能够更加快速的理解代码。它是编写程序 时,写程序的人给一个语句、程序段等的解释或提示,能提高程序代码的可读性。我认为添加 注释,是为了程序更容易理解与维护,特别是维护,更是对自己代码负责的一种体现。?注释在编译的时候不会生成到 class 字节码文件当中,它只在 java 源文件中保留。?Java中的注释类型:
注意:
- 对于 javadoc 注释来说,这里的注释会被 JDK bin 目录下的 javadoc.exe 命令解 析并生成帮助文档(生成帮助文档后期做项目的时候大家会接触到的)。
- 对于单行和多行注释,被注释的文字,不会被JVM(java虚拟机)解释执行。
- 多行注释里面不允许有多行注释嵌套。
下面我们对刚才开发的第一个Java程序进行注释
/**
* 文档注释
*
* @author wrg
* @version 1.0
* 这是我的第一个java程序!
*/
public class HelloWorld {
/*
多行注释:
如下的main方法是程序的入口!格式是固定的!作用:程序的入口。
*/
public static void main(String[] args) {
//单行注释:如下的语句表示输出到控制台
System.out.println("hello world !!");
}
}
注释应该怎么写
- 编写注释是程序员最基本的素质,养成编写注释的好习惯,要有编写注释的意识。当然, 写注释也是有技巧的,不是所有位置都写,不是把写的代码原版翻译过来,老程序员往往在写 注释的时候,不多不少,能够做到恰到好处,几句话就可以描述清楚程序的核心功能。
- 通常要在类和接口上写注释,这一部分注释是必须的。在这里,我们需要使用 javadoc 注 释,需要标明:创建者,创建时间,版本,以及该类的作用。在方法中,我们需要对入参,出 参,以及返回值,均要标明。对常量,我们需要使用多行注释,进行标明该常量的用途。在关 键算法上,添加注释并且按照顺序依次标明,写明白该方法为什么这么做。
- 注释的作用不在于表示代码的含义,而在于表示代码的功能。
Java API的文档
- API (Application Programming Interface,应用程序编程接口)是 Java 提供 的基本编程接口。
- Java语言提供了大量的基础类,因此 Oracle 也为这些基础类提供了相应的 API文档,用于告诉开发者如何使用这些类,以及这些类里包含的方法。? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
第一个Java程序小结:
- 在 java 编程中,一定要注意成对儿的符号要成对儿写,以上 HelloWorld 当中成对 儿的符号包括:小括号(),中括号[],大括号{},双引号""。这些符号在编写的时候建议成对编写。
- 在以下程序中 HelloWorld类名后面的大括号{ },这个大括号{ }里被称为类体。类体当中,不能直接写输出语句,例如直接写上System.out.println("hello1")是非法的。;如下所示:
//在java中任何有效的代码必须写到“类体”当中,最外层必须是一个类的定义。
public class HelloWorld {
// 类体
}
- 程序的入口又叫做 main 方法,或者叫做主方法。大家记住固定写法即可。另外在 main 方法后面的大括号{ }我们称之为方法体,方法体也是由大括号括起来的。如果没有main方法,程序可以编译通过,而无法运行。运行会报 、错误: 找不到或无法加载主类?。不能定义多个main方法,编译不通过。对于主方法来说只有args可以改名字,其它位置不能动,不建议修改。
public class Test { // 声明/定义一个公开的类,起个名字叫Test
// 类体
/*
main方法(程序的入口,SUN公司java语言规定的)
也就是说:JVM在执行程序的时候,会主动去找这样一个方法。没有这个规格的方法,程序是无法执行的。
main方法也可以叫做主方法。
注意:方法必须放到“类体”中,不能放到“类体”外面。
任何一个程序都要有一个入口,没有入口进不来,无法执行。
一个类中main方法是独一无二的
*/
public static void main(String[] args) { //这是一个入口方法。
// 方法体
}
}
public class?和?class?的区别
- 一个源文件中最多只能有一个public类。其它类的个数不限,如果源文件包含 一个public类,则文件名必须按该类名命名。
- 虽然一个 java 源文件可以定义多个 class,实际上这是不规范的,我们建议大家,不管是否是public,都与源文件名保持一致,而且一个源文件尽量只写一个类,目的是为了好维护。
- 任何一个 class 中都可以设定程序入口,也就是说任何一个 class 中都可以写 main 方法(主方法),想从哪个入口进去执行,则让类加载器先加载对应的类即可。例如:想让 A类中的 main 方法执行,则执行:java A,想让 B 类中的 main 方法执行,则执行:java B。但实际上,对于一个完整的独立的应用来说,只需要提供一个入口,也就是说只需要定义一个 main 方法即可。
- 在源文件中只要有一个class的定义,那么必然会对应生成一个class文件。
- java 源文件的名字并不是类名,并且也不需要符合标识符的命名规则呢。源文件的名字 可以与 类名不一致,只要类名被 public修饰 那么源文件的名字必须和类名保持一致?
- 我们编译的是类名而不是源文件的名字。?
标识符
标识符(identifier)是指用来标识某个实体的一个符号,在不同的应用环境下有不同的含 义。在计算机编程语言中,标识符是用户编程时使用的名字,用于给变量、常量、函数、语句 块等命名,以建立起名称与使用之间的关系。标识符通常由字母和数字以及其它字符构成。 在编程语言中,标识符就是程序员自己规定的代表一定含义的单词(java 源程序当中凡是 程序员自己有权利修改的名字),比如类名,属性名,变量名等。如以下代码所示:
public class Demo {
int age;
public void setAge(int a) {
age = a;
}
}
其中,Demo?是一个类名,表示学生类;age 是一个属性名表示学生的年龄属性,setAge 是一个方法名,a 表示一个变量名。这些都是标识符。
标识符都可以标识什么?在 java 源程序当中,标识符可以用来标识:
- 类名,例如:Student 学生类、User 用户类、Product 商品类、Order 订单类等。
- 接口名,例如:Runable 可运行的、Comparable 可比较的等。
- 变量名,例如:name 名字、age 年龄、birth 生日、length 长度等。
- 方法名,例如:login 登录、logout 登出、eat 吃、drink 喝等。
- 常量名,例如:LOGIN_SUCCESS、ACCESS_TOKEN 等。
除了标识以上之外,还可以标识其他的,这里就不再一一列举,大家主要先把以上的了解 一下。技巧:凡是自己可以起名字的地方都叫标识符。
标识符命名规则(?如果不遵守如下的规则,编译不通过!需要大家严格遵守)
- 由26个英文字母大小写,0-9?,_或?$?组成
- 数字不可以开头。
- 不可以使用关键字和保留字,但能包含关键字和保留字。
- Java中严格区分大小写,长度无限制。
- 标识符不能包含空格。
标识符命名规范(如果不遵守如下的规范,编译可以通过!建议大家遵守)
- 包名:多单词组成时所有字母都小写:xxxyyyzzz
- 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
- 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个 单词首字母大写:xxxYyyZzz
- 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
- 在起名字时,为了提高阅读性,要尽量有意义,“见名知意”。
- java采用unicode字符集,因此标识符也可以使用汉字声明,但是强烈不建议使用。
关键字
被Java语言赋予了特殊含义,用做专门用途的字符串(单词)我们称之为关键字
- 特点:关键字中所有字母都为小写
- 官方地址:?https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
常见的关键字有哪些呢?请看以下表格:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
对于关键字不 需要去死记硬背,随着后面内容的学习,每一天的积累,不断的敲代码,慢慢的就掌握了。
|