java概述

java是由sun公司开发的一套编程语言,主要设计者是James Gosling.

java版本

1.java SE 桌面,服务器,嵌入式环境
Java SE(Java Platform Standard Edition,Java 平台标准版)以前称为 J2SE,它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web 服务开发的类,并为 Java EE 提供基础,如 Java 语言基础、JDBC 操作、I/O 操作、网络通信以及多线程等技术。

2.java EE 服务器端设备
Java EE(Java Platform Enterprise Edition,Java 平台企业版)以前称为 J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序。Java EE 是在 Java SE 基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(Service Oriented Architecture,SOA)和 Web 2.0 应用程序。

3.java ME 移动设备和嵌入式设备
Java ME(Java Platform Micro Edition,Java 平台微型版)以前称为 J2ME,也叫 K-JAVA。 Java ME 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。

Java ME 包括灵活的用户界面、健壮的安全模型、丰富的内置网络协议以及对可以动态下载的联网和离线应用程序。基于 Java ME 规范的应用程序 只需编写一次就可以用于许多设备,而且可以利用每个设备的本机功能。

java特点

Java 语言的风格很像 C 语言和 C++ 语言,是一种纯粹的面向对象语言,它继承了 C++ 语言面向对象的技术核心,但是拋弃了 C++ 的一些缺点,比如说容易引起错误的指针以及多继承等,同时也增加了垃圾回收机制,释放掉不被使用的内存空间,解决了管理内存空间的烦恼。

Java 语言是一种分布式的面向对象语言,具有面向对象、平台无关性、简单性、解释执行、多线程、安全性等很多特点,下面针对这些特点进行逐一介绍。

  1. 面向对象
    Java 是一种面向对象的语言,它对对象中的类、对象、继承、封装、多态、接口、包等均有很好的支持。为了简单起见,Java 只支持类之间的单继承,但是可以使用接口来实现多继承。使用 Java 语言开发程序,需要采用面向对象的思想设计程序和编写代码。
  2. 平台无关性
    平台无关性的具体表现在于,Java 是“一次编写,到处运行(Write Once,Run any Where)”的语言,因此采用 Java 语言编写的程序具有很好的可移植性,而保证这一点的正是 Java 的虚拟机机制。在引入虚拟机之后,Java 语言在不同的平台上运行不需要重新编译。
    Java 语言使用 Java 虚拟机机制屏蔽了具体平台的相关信息,使得 Java 语言编译的程序只需生成虚拟机上的目标代码,就可以在多种平台上不加修改地运行。
  3. 简单性
    Java 语言的语法与 C 语言和 C++ 语言很相近,使得很多程序员学起来很容易。对 Java 来说,它舍弃了很多 C++ 中难以理解的特性,如操作符的重载和多继承等,而且 Java 语言不使用指针,加入了垃圾回收机制,解决了程序员需要管理内存的问题,使编程变得更加简单。
  4. 解释执行
    Java 程序在 Java 平台运行时会被编译成字节码文件,然后可以在有 Java 环境的操作系统上运行。在运行文件时,Java 的解释器对这些字节码进行解释执行,执行过程中需要加入的类在连接阶段被载入到运行环境中。
  5. 多线程
    Java 语言是多线程的,这也是 Java 语言的一大特性,它必须由 Thread 类和它的子类来创建。Java 支持多个线程同时执行,并提供多线程之间的同步机制。任何一个线程都有自己的 run() 方法,要执行的方法就写在 run() 方法体内。
  6. 分布式
    Java 语言支持 Internet 应用的开发,在 Java 的基本应用编程接口中就有一个网络应用编程接口,它提供了网络应用编程的类库,包括 URL、URLConnection、Socket 等。Java 的 RIM 机制也是开发分布式应用的重要手段。
  7. 健壮性
    Java 的强类型机制、异常处理、垃圾回收机制等都是 Java 健壮性的重要保证。对指针的丢弃是 Java 的一大进步。另外,Java 的异常机制也是健壮性的一大体现。
  8. 高性能
    Java 的高性能主要是相对其他高级脚本语言来说的,随着 JIT(Just in Time)的发展,Java 的运行速度也越来越高。
  9. 安全性
    Java 通常被用在网络环境中,为此,Java 提供了一个安全机制以防止恶意代码的攻击。除了 Java 语言具有许多的安全特性以外,Java 还对通过网络下载的类增加一个安全防范机制,分配不同的名字空间以防替代本地的同名类,并包含安全管理机制。
    Java 语言的众多特性使其在众多的编程语言中占有较大的市场份额,Java 语言对对象的支持和强大的 API 使得编程工作变得更加容易和快捷,大大降低了程序的开发成本。Java 的“一次编写,到处执行”正是它吸引众多商家和编程人员的一大优势。

Java言语规范

一、标志符

命名规则:

标识符由26个英文字符大小写(azAZ)、数字(0~9)、下划线(_)和美元符号($)组成。
不能以数字开头,不能是关键字
严格区分大小写
标识符的可以为任意长度
命名规范

  1. 包名
    多个单词组成时所有字母小写(例:package com.itcast)

  2. 类名和接口

多个单词组成时所有单词的首字母大写(例:HelloWorld)

  1. 变量名和函数名

多个单词组成时第一个单词首字母小写,其他单词首字母大写(例:lastAccessTime、getTime)。

  1. 常量名

多个单词组成时,字母全部大写,多个单词之间使用_分隔(例:INTEGER_CACHE)

二、关键字

Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名。

三、注释

1.单行注释(line comment)用//表示,编译器看到//会忽略该行//后的所文本
2.多行注释(block comment)用/* */表示,编译器看到/时会搜索接下来的/,忽略掉//之间的文本。
3.文档注释用/
*/表示,是java特有的注释,其中注释内容可以被JDK提供的工具 javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档。

四、常量

整数常量 : 所有整数
小数常量 : 所有小数
布尔常量 : 只有true和false
字符常量 :使用’’引起来的单个字符
字符串常量 :使用“”引起来的字符序列,“” 、“a” 、” ”
null常量 : 只有一个值null

五、变量

java开发工具

开发工具

1 )Notepad++
Notepad++ 是 Windows 操作系统下的一套文本编辑器,有完整的中文化接口及支持多国语言编写的功能(UTF8 技术)。

Notepad++ 优点:
功能比 Windows 中的 Notepad(记事本)强大,除了可以用来制作一般的纯文字说明文件,也十分适合编写计算机程序代码。
不仅有语法高亮度显示,也有语法折叠功能,并且支持宏以及扩充基本功能的外挂模组。
是免费软件,可以免费使用,自带中文,支持所有主流的计算机程序语言。

Notepad++ 缺点:
比起专用的 IDE 缺少语法检查,颜色选取,代码的 outline,注释的解析,TODO,调试工具集成,部署工具集成等等好多功能。
打开大文件比较慢

Java开发工具Notepad++
Notepad++
2)EditPlus
EditPlus 是一款由韩国 Sangil Kim (ES-Computing)出品的小巧但是功能强大的可处理文本、HTML 和程序语言的 Windows 编辑器,甚至可以通过设置用户工具将其作为 C,Java,Php 等等语言的一个简单的 IDE。

EditPlus 优点:
EditPlus 界面简洁美观,且启动速度快。
对中文支持比较好。
支持多种日期、时间输入;支持语法高亮;支持代码折叠;支持代码自动完成。
配置功能强大,且比较容易,扩展也比较强。
适合编辑网页。

EditPlus 缺点:
不支持代码提示功能。
不免费,收费单位美元,注册费用高
功能较简单。
版本更新比较慢。
Java开发工具EditPlus
EditPlus
3)UltraEdit
UltraEdit 是一套功能强大的文本编辑器,可以编辑文本、十六进制、ASCII 码,完全可以取代记事本,它是一款需要花费 49.95 美元的共享软件。

UltraEdit 优点:
提供了友好界面的编程编辑器,支持语法高亮,代码折叠和宏。
内置了对于 HTML、PHP 和 JavaScript 等语法的支持,可同时编辑多个文件,而且即使开启很大的文件速度也不会慢。

UltraEdit 缺点:
启动速度较慢。
默认的设置中不支持 Pascal 语言。
对中文支持不是很好。
Java开发工具ultraedit
UltraEdit
4)Sublime Text
Sublime Text 是由程序员 Jon Skinner 于 2008 年 1 月份所开发出来,它最初被设计为一个具有丰富扩展功能的 Vim。

它是一款收费软件,但是可以无限期试用,它是一个跨平台的编辑器,同时支持 Windows、Linux、Mac OS X 等操作系统。

Sublime Text 优点:
主流前端开发编辑器
体积较小,运行速度快
文本功能强大
支持编译功能且可在控制台看到输出

Sublime Text
Sublime Text
5)Vim
Vim 是从 Vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。是 Unix 系统用户最喜欢的文本编辑器。

Vim 优点:
支持多种操作系统
打开大文件速度较快,在大文件中查找的速度也非常快。
免费,开源
有搜索高亮功能
支持多中编辑语言
功能强大

Vim 缺点:
比较难学
虽然有菜单,但 Windows 用户第一次上手会很难
界面不太好看
键盘命令多,必须长期使用才能熟练。

Java开发工具vim
Vim

集成开发工具介绍

Java 初学者为了能更好的掌握 Java 代码的编写,我们一般会选用一款高级记事本类的工具作为开发工具, 而实际项目开发时,更多的还是选用集成 IDE 做为开发工具,比如当下最流行的两款工具:Eclipse、IDEA。

所谓集成 IDE 就是把代码的编写、调试、编译、执行都集成到一个工具中了,不用单独在为每个环节使用工具。
1)Eclipse IDE
Eclipse 是一个开放源码的项目,是著名的跨平台的自由集成开发环境(IDE),最初主要用来 Java 语言开发,后来通过安装不同的插件 Eclipse 可以支持不同的计算机语言,比如 C++ 和 Python 等开发工具。

Eclipse 优点:
能提供关于代码完成、重构和语法检查这些急需的帮助。
能提供 JDT 的一系列工具,包括各种插件工具来帮助开发各种 Java 应用。
允许开发人员使用不同的语言支持,如它也可以提供 C/C++ 和 PHP 的 IDE。这使得它成为了 Java 开发的一个一站式资源。
Eclipse 是免费的,这点很重要,所以大多公司里依然是使用 Eclipse 这款 IDE,而且它良好的性能,也在市场占着不小的比重。

Eclipse 缺点:
版本间不兼容,特别是插件,在一个版本下可以很好工作,在另一个版本下就完全无法工作,就算两个版本的版本号只有微小的差异。
与 JDK 捆绑过于紧密。当 JDK 新的版本出来后,Eclipse 一般要滞后很长一段时间才有一个新版本支持新的 JDK,然后等各个插件能在新版本的 Eclipse 下使用又要过很长时间。

Java开发工具Eclipse

2)MyEclipse
MyEclipse 是同 Eclipse 一个公司的,在功能上增加了不少,相对于 Eclipse 来说,MyEclipse 更像将 Eclipse 中好多插件都集成起来了,当然,性能上面也有更好的考虑,不过这款 IDE 是收费的。

因 MyEclipse 属于收费软件,所以大公司很少使用。

Java开发工具MyEclipse

3)Intellij IDEA
Intellij IDEA 简称 IDEA,具有美观,高效等众多特点。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。它的旗舰版本还支持 HTML,CSS,PHP,MySQL,Python 等。免费版只支持 Java 等少数语言。

据传它有“最智慧的 Java ide”之称。它能帮助开发人员拿出最具有创造性的解决方案。它的“Smart Code Completion”和“On-the-fly Code Analysis”功能等可以提高开发人员的工作效率,并且还提供了对 web 和移动开发高级支持。

IDEA 缺点:
编辑超大文件不靠谱,易卡顿或直接卡死。
相对于一些专用工具,显得不够专业:比如批量修改项目中的文件编码效果就很差劲。
消耗大量硬件资源,IntelliJ IDEA 要求内存大,并且还要用的流畅还需要固态硬盘辅助。比如在做微服务类的项目的时候,一般需要同时启动多个项目,内存一会就上来的,8G 内存完全不够用的。

Java开发工具Intellij IDEA

4)NetBeans
NetBeans 是业界第一款支持创新型 Java 开发的开放源码 IDE。开发人员可以利用业界强大的开发工具来构建桌面、Web 或移动应用。同时,通过 NetBeans 和开放的 API 的模块化结构,第三方能够非常轻松地扩展或集成 NetBeans 平台。

NetBeans IDE 目前支持 PHP、Ruby、JavaScript、Ajax、Groovy、Grails 和 C/C ++ 等开发语言。

NetBeans 是甲骨文公司生产的 IDE,在其中也内置了许多功能,相对于 idea 和 Eclipse 市场还是较少的。

NetBeans 提供了功能全面的阵列。如转换器,编辑器和代码分析器,这些工具可以帮助你使用最新的 Java 技术实现应用程序。工具范围相当广泛,而且 IDE 背后的团队也在不断地改进。此外你还可以得到静态分析工具的帮助——编写出无 bug 的代码。

Java开发工具NetBeans

java 程序开发过程

1.源文件(.java文件)
2.编译(javac.exe命令)
3.字节码文件(.class文件)
4.解释执行(java.exe命令)

我的第一个java程序

public class Hello{public static void main(String args[]){System.out.println("hello world!");}
}

将以上代码打入记事本,并将记事本保存为.java文件

用cmd进入dos控制台

#进入.java文件所在目录
d:\java>cd 训练/ch1d:\java\训练\ch1>dir驱动器 D 中的卷是 私人信息卷的序列号是 2C3D-3B51d:\java\训练\ch1 的目录2021/11/13  15:29    <DIR>          .
2021/11/13  15:29    <DIR>          ..
2021/11/13  15:29               119 Hello.java1 个文件            119 字节2 个目录 54,727,544,832 可用字节
#编译源文件
d:\java\训练\ch1>javac Hello.javad:\java\训练\ch1>dir驱动器 D 中的卷是 私人信息卷的序列号是 2C3D-3B51d:\java\训练\ch1 的目录2021/11/13  15:30    <DIR>          .
2021/11/13  15:30    <DIR>          ..
2021/11/13  15:30               416 Hello.class #已生成的字节码文件
2021/11/13  15:29               119 Hello.java2 个文件            535 字节2 个目录 54,727,544,832 可用字节d:\java\训练\ch1>java Hello #执行文件
hello world!

命令行参数

public class Calculator{public static void main(String[] args){int result=0;if(args.length!=3){System.out.println("参数个数不对!");System.exit(0);}switch(args[1].charAt(0)){case '+':result=Integer.parseInt(args[0]) + Integer.parseInt(args[2]);break;case '-':result=Integer.parseInt(args[0]) - Integer.parseInt(args[2]);break;case '*':result=Integer.parseInt(args[0]) * Integer.parseInt(args[2]);break;case '/':result=Integer.parseInt(args[0]) / Integer.parseInt(args[2]);break;}System.out.println(args[0]+ args[1]+args[2]+"="+result);}}

编译此文档,在执行时后面加上参数

d:\java\训练\ch2>javac Calculator.javad:\java\训练\ch2>java Calculator 6 + 5
6+5=11

本章小结

java语言是面向对象的编程语言,该语言编写的软件具有:简单、面向对象、健壮、体系结构中立、可移植性、解释型、分布式、多线程、动态加载等特点
开发一个java程序需要经过三个步骤:编写源文件、编译源文件、执行字节码

课后习题

1.开发java应用程序需要经过哪些主要步骤?
答:编写源文件、编译源文件、执行字节码
2.java区分大小写吗?
答:区分
3.编译java源程序的命令,解释器的命令。
答:编译:javac,解释器:java
4.java源程序的后缀名是什么?字节码的后缀名是什么?
答:源程序:.java ,解释器:.class
5.创建一个java源文件,源文件名为Welcome.java,代码如下:

public class Welcome{public static void main(String args[]){System.out.println("我爱学习!");}
}

5.1 打出代码
答:略
5.2 编译源文件,并运行字节码

d:\java\训练\ch3>javac Welcome.javad:\java\训练\ch3>java Welcome
我爱学习!

5.3 将“我爱学习!”改成“我爱学习java!”并编译运行

d:\java\训练\ch3>javac Welcome.javad:\java\训练\ch3>java Welcome
我爱学习java!

5.4 将Main 替代 main 重新编译并运行,查看其返回的错误信息

d:\java\训练\ch3>javac Welcome.javad:\java\训练\ch3>java Welcome
错误: 在类 Welcome 中找不到 main 方法, 请将 main 方法定义为:public static void main(String[] args)
否则 JavaFX 应用程序类必须扩展javafx.application.Application

5.5 使用命令 javac welcome.java 代替javac Welcome.java,并查看其返回错误信息

d:\java\训练\ch3>javac welcome.javad:\java\训练\ch3>java welcome
错误: 找不到或无法加载主类 welcome
原因: java.lang.NoClassDefFoundError: Welcome (wrong name: welcome)

5.6 使用命令 java Welcome.class 代替 java Welcome,查看其返回错误信息

d:\java\训练\ch3>java Welcome.class
错误: 找不到或无法加载主类 Welcome.class
原因: java.lang.ClassNotFoundException: Welcome.class

6.什么是当前目录?
答:当前文件指针所在的目录