Java 简介
Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的高级程序设计语言。
Java 可运行于多个平台,如 Windows, Mac OS 及其他多种 UNIX 版本的系统。
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(不能使用) |
- 关键字都是小写的
- true、false、null 严格说不应该算关键字,应称其为保留字更合适
标识符
Java 中标识符是为方法、变量或其他用户定义项所定义的名称。标识符可以有一个或多个字符。在 Java 语言中,标识符的构成规则如下。
- 标识符由数字(0~9)和字母(A~Z 和 a~z)、美元符号($)、下划线(_)以及 Unicode 字符集中符号大于 0xC0 的所有符号组合构成(各符号之间没有空格)。
- 标识符的第一个符号为字母、下划线和美元符号,后面可以是任何字母、数字、美元符号或下划线。
- 对大小写敏感。
- 不能使用关键字
例如以下合法与不合法标识符。
- 合法标识符:date、$2011、date、D$date 等。
- 不合法的标识符:123.com、2com、for、if 等。
变量类型
基本数据类型(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 | ||||
* / % |
+ - |
|||
> < >= <= |
== != |
|||
& | ^ | | | && | || |
?: | ||||
= += -= *= /= %= |
分支结构
if…else语句
if 语句后面可以跟 else 语句,当 if 语句的布尔表达式值为 false 时,else 语句块会被执行。
语法
if…else 的用法如下:
if(布尔表达式 1){
////如果布尔表达式 1的值为true执行代码
if(布尔表达式 2){
////如果布尔表达式 2的值为true执行代码
}
}
switch case 语句
switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
语法
switch case 语句语法格式如下:
switch(expression){
case value :
//语句
break; //可选
case value :
//语句
break; //可选
//你可以有任意数量的case语句
default : //可选
//语句
}
循环结构
Java中有三种主要的循环结构:
- while 循环
- do…while 循环
- for 循环
while循环
while是最基本的循环,它的结构为:
while( 布尔表达式 ) {
//循环内容
}
int i = 10;
while( i < 20 ) {
System.out.print("value of i : " + i );
i++;
System.out.print("\n");
}
do while
对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。
do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。
do {
//代码语句
}while(布尔表达式);
int i=30;
do{
System.out.print("value of i : " + i );
i++;
System.out.print("\n");
}while( i < 20 );
for循环
执行的次数是在执行前就确定的。语法格式如下:
for(初始化; 布尔表达式; 更新){
//代码语句
}
for(int i = 10; i < 20; i++) {
System.out.print("value of i : " + i );
System.out.print("\n");
}
数组
首先必须声明数组变量,才能在程序中使用数组。
dataType[] arrayVar;
定义10个整形的数组,int[] myArr= new int[10];
Java 面向对象
对象的概念
Java 是面向对象的编程语言,对象就是面向对象程序设计的核心。所谓对象就是真实世界中的实体,对象与实体是一一对应的,也就是说现实世界中每一个实体都是一个对象,它是一种具体的概念。对象有以下特点:
- 对象具有属性和行为。
- 对象具有变化的状态。
- 对象具有唯一性。
- 对象都是某个类别的实例。
- 一切皆为对象,真实世界中的所有事物都可以视为对象。
动物只是抽象的描述,我们称为类。