第1单元 Java入门
1.1 Java的诞生与发展历史
Java的出生地:SUN Microsystems Inc.
SUN:Stanford University Network
Java之父:James Gosling(詹姆斯·高斯林)
1995年发布Java第一版
Java发展历史中的几个重要版本:
l Java 1.2 从该版本开始,把Java分成Java SE、Java ME、Java EE三部分。
l Java 5 2004年9月30日18:00PM,J2SE 1.5发布,成为Java语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE 1.5更名为Java SE 5.0
l Java 6 Java的各种版本更名,以取消其中的数字"2":J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME。
2009年04月20日,甲骨文74亿美元收购Sun。取得java的版权。
1.2Java技术体系
Java技术分为三个体系:
l Java SE(J2SE)(Platform Standard Edition,java平台标准版)开发桌面应用程序
l Java EE(J2EE)(Java 2 Platform,Enterprise Edition,java平台企业版)开发面向Internet的应用程序
l Java ME(J2ME)(Java 2 Platform Micro Edition,java平台微型版)开发运行于智能设备的程序。
1.3 Java语言的特点
面向对象(OOP)
跨平台
安全健壮
没有指针操作
垃圾自动回收机制
多线程
分布式
1.4 Java程序的运行机制
1.4.1 JVM与跨平台
Java程序不是直接在操作系统之上运行,而是运行于JVM(java虚拟机)之上。
针对不同的操作系统开发相应的JVM,Java程序运行于不同的JVM之上,因此Java程序可以在不同修改的情况下运行于不同的操作系统之上,从而实现了所谓的跨平台。
Java源代码(.java文件)经编译器编译成字节码(.class文件),JVM本质上就是一个负责解释执行Java字节码的程序。
JVM执行Java程序的过程:
l 加载.class文件
l 管理并分配内存
l 执行垃圾收集
1.4.2 JVM、JRE、JDK、
JVM:Java虚拟机
JRE:Java运行时环境(JVM+类库) //后面编写代码时在强调类库
JDK:Java开发工具包(JRE+编译工具)
JDK的全称:Java Development kit
提示:
运行Java程序只需要安装JRE,开发Java程序则需要安装JDK。
1.5 java开发环境安装、配置
1.5.1 安装JDK
1.5.2 配置环境变量
1.5.2.1 PATH
目的:在任意路径下能够直接执行相关命令。
原理:在命令行中执行某个命令时,首先在当前路径下查找,如果找不到则到PATH配置的各个路径下查找。
配置细节:
JAVA_HOME
D:\Program Files\Java\jdk1.8.0_261 你的路径(安装路径)
//把javahome当做一个变量
PATH:%JAVA_HOME%\jre\bin
%JAVA_HOME%\bin
CLASSPATH
%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar //bin = binary(二进制)
环境变量之间使用;分割
1.5.2.2 CLASSPATH
(1)目的:在任意路径下能够找到要运行的.class文件。
(2)CLASSPATH:
.;
C:\Program Files\Java\jdk1.6.0\lib\dt.jar; //lib = library(库)
C:\Program Files\Java\jdk1.6.0\lib\tools.jar;
从其他目录下找class文件
(3)注意:Java1.4之后不需要配置上述CLASSPATH环境变量,默认从上述路径下查找.class文件。
1.6 java开发流程
1.6.1 结构化编程与面向对象编程
结构化编程:函数
面向对象编程:类
java类的基本结构:变量 + 方法
1.6.2 编写和运行Java程序的三个步骤
l 编写源代码,保存到源代码文件中,例如 HelloWorld.java
l 编译源代码,例如javac HelloWorld.java
l 执行字节码,例如java HelloWorld
案例1.1 HelloWorld
1.6.3 源文件与class文件
在Java中源文件的名称必须是文件中主类的名称,扩展名必须为.java。源文件中可以包含多个类,但是最多只能有一个类使用public修饰,使用public修饰的类就是主类。在Java中,源文件还被作为编译单元,即一个源文件就是一个编译单元。
编译器会为源代码中的每个类生成一个.class文件,.class文件的名称是类的名称,扩展名为.class。
1.6.4 main()方法
方法名:只能是main,不能是Main等形式。
修饰符:public static void 三个缺一不可,多一个不行
参数:
1、参数类型为字符串数组
2、参数名称只要符合Java中标识符命名要求即可
3、参数声明的两种方式:String[] args, 或 String args[]
方法案例
public class HelloWorld{ public static void main(String[] args){ System.out.println("Hello,world"); } }
Java的main方法应该是当前主流编程语言中最“长”的。
通过上述代码,我们可以看到一个完整的Java程序的结构,Java程序的结构由如下三个部分组成:
1.源文件(扩展名为*.java):源文件带有类的定义。类用来表示程序的一个组件,小程序或许只会有一个类。类的内容必须包含在花括号里面。
2.类:类中带有一个或多个方法。方法必须在类的内部声明。
3.方法:在方法的花括号中编写应该执行的语句。
总结一下:类存在于源文件里面;方法存在于类中;语句存在于方法中。
1.7 常用命令
1.7.1 Dos命令
命 令 | 功 能 |
盘符: | 转换到指定分区 |
cd 目录 | 进入指定的目录 |
dir | 查看当前路径下的目录和文件 |
Cd .. | 进入上一级目录,..表示上一级目录 |
cls | 清屏 |
常用的 dos 命令
查看当前目录是有什么内容 dir filedir
切换到其他盘下:盘符号 cd : change directory
eg:切换到 c 盘 cd /D c:
切换到上一级:cd ..
切换到根目录:cd
查看指定的目录下所有的子级目录 tree
清屏 cls
退出 DOS exit
1.7.2 Java命令
javac //后跟文件名称,需要包含扩展名.java
javac -d //指明存放类文件的位置
java //后跟类名
javadoc //生成注释文档
注释
注释的三种形式:单行注释、多行注释、文档注释
文档注释(documentation comment)以“/**”开始,以“*/”结束。使用文档注释可以将关于程序的信息嵌入到程序自身中。
javadoc命令可以文档注释中的内容提取出来,将其放入到一个HTML文件中。文档注释方便了程序的文档化。
2.2 分隔符、代码块
每行功能代码以;作为结束符号
空格没有实际意义,可以利用空格无意义,将代码合理缩进,易读
{}包含的代码称之为代码块, 例如类if(){}、方法{}、类{}等等
2.3 标识符
2.3.1 标识符的概念
Java中类、方法和变量的名称,称之为标识符。
2.3.2 标识符的语法要求
(1)以字母、数字、_或$组成
(2)不能以数字开头
(3)不能使用java的关键字和保留字
注意:
1、标识符的长度没有限制
2、Java是大小写敏感的,所有标识符区分大小写
2.3.2 标识符的命名规范(驼峰)
Java中的标识符通常是由多个英文单词构造,每个单词除了首字母外其他字母小写。
2.3.2.1 大驼峰
第一个单词的首字母大写。以大写字母开头,用于类名、接口名
class Accoun {…} //类名
class HelloWorld{…} //类名
interface AccountBase {…} //接口名
2.3.2.2 小驼峰
第一个单词的首字母是小写,其他单词的首字母大写。以小写字母或单词开头,用于变量名、方法名
String studentName; //变量名
String getStudentName() {…} //方法名
2.3.2.3 常量命令规范
常量是使用final修饰的存储单元。(最终的)
全部为大写字母表示
final public int DAYS_WEEK = 7;
final public double PI = 3.1415926;
2.3.3 标识符案例
演示标识符的要求、规范、常量的定义
abc a+b my_city $money class _78
myName _come my&bb 3name public
name#1 age- name3 class5 _$ $a
2.4 Java的关键字
2.4.1 Java中的全部关键字
目前定义了50个关键字
abstract | continue | for | new | switch |
assert | default | goto | package | synchronized |
boolean | do | if | private | this |
break | double | implements | protected | throw |
byte | else | import | public | throws |
case | enum | instanceof | return | transient |
catch | extends | int | short | try |
char | final | interface | static | void |
class | finally | long | strictfp | volatile |
const | float | native | super | while |
Java保留了const和goto关键字,但是没有使用。Java还保留了下面这些关键字:true、false和null。这些关键字是Java定义的数值。
2.4.2 目前已经接触到的关键字
public static void class
基本数据类型
java中提供了8种基本数据类型,分别是boolean,short,int,long,float,double.
基本数据类型 所占空间大小 默认值
char 2 Bytes ‘\u0000’
boolean 2 Bytes false
byte 1 Byte 0
short 2 Bytes 0
int 4 Bytes 0
long 8 Bytes 0
float 4 Bytes 0.0f
double 8 Bytes 0.0
每种数据类型都有的数据范围,一旦超出该范围,便会报错
2.5.1 数据类型的分类
注意:基本数据类型也可以分成两大类:数值型、布尔型
2.5.2 整型
2.5.2.1 类型、宽度、范围
名 称 | 宽 度 | 范 围 |
long | 64/8 | -9 223 372 036 854 775 808至9 223 372 036 854 775 807 |
int | 32/4 | -2 147 483 648至2 147 483 647 大约21亿 |
short | 16/2 | -32 768至32 767 |
byte | 8/1 | -128至127 |
2.5.2.2 字面值
(1)整数字面值默认是int类型
(2)将字面值赋给byte或short变量时,如果字面值位于目标类型的范围之内,就不产生错误。
(3)大写或小写的L明确地标识其类型为long
(3)在字面值可以包含下划线,例如1_000_000_000
(4)十进制、八进制(0)、十六进制(0X/0x)、二进制(0B/0b)
2.5.3 浮点型
浮点数,也称为实数(real number),当计算需要小数精度的表达式时使用。
2.5.3.1 类型、宽度、范围
名称 | 宽度(位) | 大致范围 |
double(双精度) | 64/8 | 4.9e-324~1.8e+308 |
float (单精度) | 32/4 | 1.4e-045~3.4e+038 |
2.5.3.2 浮点数字面值
(1)默认为double类型,为了指定float字面值,需要使用后缀F或f
(2)科学计数法。例如6.022E23、314159E-5、2e+100
2.5.4 字符型
2.5.4.1 char类型与字符编码
(1)char是16位,Java在内部使用16位的整数表示字符(Unicode编码),char类型的范围0~65536。//全世界基本的语言符号基本都包含了
(2)char也可以用作整数类型,可以将整型字面值赋给char类型的变量,可以在char类型上执行算术运算。
(3)26个小写字母、26个大写字母、以及10个数字0-9,其编码是连续的。
2.5.4.2 char类型字面值
(1)字符型字面值使用单引号中的字符表示,例如’a’。
(2)转义字符
转义序列 | 描 述 |
\ddd | 八进制字符(ddd) |
\uxxxx | 十六进制Unicode字符(xxxx) |
\’ | 单引号 |
\” | 双引号 |
\\ | 反斜杠 |
\r | 回车符 |
\n | 新行符(也称为换行符) |
\f | 换页符 |
\t | 制表符 |
\b | 回格符 |
字符串类型:
字符串类型是String,String是类,所以是引用类型。字符串字面值是使用双引号包围起来的内容。
2.5.5 布尔型
(1)boolean类型表示逻辑值,它只能是true或false。
(2)boolean类型的值与整数0和1没有任何关系