Java 简介
Java 简史
计算机语言发展历史:
- 第一代:机器语言
- 第二代:汇编语言
- 第三代:高级语言
- 面向过程:C、Fortran、Pascal ···
- 面向对象:C++、Java、C# ···
其中,Java 是由 James Gosling 发明,美国SUN(Stanford University Network)公司推出
常见名词
- Java 体系
- JavaSE(J2SE)(Java2 Platform Standard Edition,java平台标准版)
- JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,java平台企业版)
- JavaME(J2ME)(Java 2 Platform Micro Edition,java平台微型版)
- Java 开发环境
- JDK(Java Development Kit ):编写Java程序的程序员使用的软件
- JRE(Java Runtime Environment):运行Java程序的用户使用的软件
- Server JRE (Java SE Runtime Environment):服务端使用的 Java 运行环境
- SDK(Software Development Kit):软件开发工具包,在Java中用于描述1998年~2006年之间的JDK
- DAO(Data Access Object):数据访问接口,数据访问,顾名思义就是与数据库打交道
- MVC(Model View Controller):模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的方法
Java 特点
- 跨平台(核心优势)
- 编译后的字节码文件可以在任何具有 Java 虚拟机的设备上运行
- 简单
- 安全
- 取消了强大而又危险的指针
- 提供了自动内存管理机制
- 完全面向对象
- 健壮
Java 跨平台
- Java 跨平台和 C 跨平台的区别
- Java:一次编译,处处运行
- C:多次编译,处处运行
- 字节码文件
- 格式中立、平台无关的二进制文件
- 是编译的产物、解释的原料
编译与反编译
- 编译时空白行、注释的行会被忽略掉
- 反编译软件:jd-gui.exe
- 反编译得到的源代码不可能有注释
面向对象
封装性、继承性、多态性
开发环境
- Windows
- 环境变量
JAVA_HOME:方便更改 JDK 路径
PATH:Java 命令的路径
CLASSPATH:内部类的路径
- 环境变量
- Linux
Hello World
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
$ javac HelloWorld.java
$ java HelloWorld
Hello World!
Java 基础
语句和表达式
- 语句以
;
结尾
注释
- 单行注释
// comment
- 多行注释
/* comment */
- 文档注释
/** comment */
关键字
类别 | 关键字 |
---|---|
访问控制 | private、protected、public |
类、方法、变量的修饰符 | abstract、class、extends、final、implements(声明接口)、interface(接口)、native、new、static、 strictfp、synchronized(线程,同步)、transient、volatile |
程序控制 | if、else、switch、case、default、for、do、while、break、continue、return、instanceof |
错误处理 | assert(断言)、try、catch(捕捉异常)、throw(抛出一个异常对象)、throws(声明一个可能被抛出的异常)、finally(有无异常都执行) |
包相关 | import(引入)、package |
基本类型 | byte、short、int、long、float、double、char、boolean、void |
变量引用 | super(父类,超类)、this(本类) |
保留关键字 | null、goto(不能使用)、const(不能使用) |
- 关键字都是小写的
- jdk1.2多了strictfp(经准浮点型),关键字 jdk1.4多了assert(断言)关键字,jdk1.5多了enum(枚举) 关键字
- true、false、null 严格说不应该算关键字,应称其为保留字更合适
标识符
字母
、下划线 _
、美元符 $
打头- 由
Unicode 字符集
组成 - 字母大小写敏感
- 不能使用
关键字
Java 命名规范:
- 变量名、方法名:小驼峰命名法
- 类名:大驼峰命名法
- 常量名:字母全部大写,单词间用
_
连接- 包名:字母全部小写
变量类型
- 基本数据类型(8种)
数值型(整型、浮点型)、字符型、布尔型 | 类型 | 长度 | 范围 | | —- | —- | —- | |byte
| 1 Byte = 8 bit | - 128 ~ 127 | |short
| 2 Byte = 16 bit | - 32768 ~ 32767 | |int
| 4 Byte = 32 bit | - 2^31 ~ 2^31 - 1 | |long
| 8 Byte = 64 bit | - 2^63 ~ 2^63 - 1 | |float
| 4 Byte = 32 bit | | |double
| 8 Byte = 64 bit | | |char
| 2 Byte | | |boolean
| 1 Byte |true
或false
|
- 引用数据类型
- 类
- 接口
- 数组
常量
- 用
final
修饰 - 常量名通常全部大写
- 默认整型常量为 int 型,long 型常量要加上
L 或 l
默认浮点型常量为 double 型,float 型常量要加上F 或 f
- 整型常量八进制以
0
开头,十六进制以0x
开头 - 字母、数字占 1 Byte,汉字占 2 Byte
- 常用的转义字符
"\b" (退格)
"\f" (换页)
"\n" (换行)
"\r" (回车)
"\t" (水平制表符(到下一个tab位置))
"\'" (单引号)
"\"" (双引号)
"\\" (反斜杠)
修饰符
- 访问修饰符
| 修饰符 | 当前类 | 同一包内 | 子孙类(同一包) | 子孙类(不同包) | 其他包 |
| :—-: | :—-: | :—-: | :—-: | :—-: | :—-: |
|
public
| √ | √ | √ | √ | √ | |protected
| √ | √ | √ | ? | × | |default
| √ | √ | √ | × | × | |private
| √ | × | × | × | × |
- 非访问修饰符
运算符
- 算术运算符:
+
-
*
/
%
- 赋值运算符:
=
+=
-=
*=
/=
%=
- 递增递减运算符:
++
--
- 比较运算符:
==
!=
>
<
>=
<=
- 逻辑运算符:AND(短路
&&
、非短路&
)OR(短路||
、非短路|
)XOR(^
)NOT(!
)
运算优先级:递增递减 > 算术运算 > 比较运算 > 逻辑运算 > 赋值运算
运算符优先级(从高到低) .
()
[]
++
--
!
~
instanceof
new
*
/
%
+
-
>
<
>=
<=
==
!=
&
^
` ` &&
` ` ?:
=
+=
-=
*=
/=
%=