Java 基础语法
1 Java 概述
1.1 Java 语言概述
Java 是 SUN (Stanford University Network, 斯坦福大学网络公司) 于 1995 年推出的一门高级语言。Java 是一种面向 Internet 的编程语言,也是一种完全面向对象,安全可靠,与平台无关的编程语言。
Java5.0 之后的三大技术框架
- J2EE (Java 2 Platform Enterprise Edition) 企业版
在 Jdk5.0 版本后称为 JAVAEE,是为开发企业环境下的应用程序提供的一套解决方案。该技术体系中包含的技术如 Servlet Jsp 等,主要针对于 Web 应用程序开发。
- J2SE (Java 2 Platform Standard Edition) 标准版
在 Jdk5.0 版本后称为 JAVASE,这是在 Java 基础阶段主要学习的内容,也是 Java 的基础,以后不管从事 Android 开发或者是物联网 + 云计算的开发等,是建立在 JSE 基础上的,因此该技术是 Java 的最核心技术。
- J2ME (Java 2 Platform Micro Edition) 小型版
在 Jdk5.0 版本以后称为 JAVAME,该技术多应用于一些电子产品的嵌入式开发,以前在手机开发上应用的也比较多,但是随着智能手机的发展,现在手机应用程序 (比如 Android 程序) 的开发已经不再使用该技术。
1.2 JRE 和 JDK 的区别
JRE (Java Runtime Environment),Java 运行环境。包括 Java 虚拟机 (JVM Java Virtual Machine) 和 Java 程序所需的核心类库等,如果想要运行一个开发好的 Java 程序,计算机中只需要安装 JRE 即可。
JDK (Java Development Kit Java),开发工具包。JDK 是提供给 Java 开发人员使用的,其中 包含了 Java 的开发工具,也包括了 JRE。所以安装了 JDK,就不用在单独安装 JRE 了。
1.3 JVM
JVM (Java Virtual Machine),是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,是 Java 最具吸引力的特性之一。JVM 读取并处理编译过的与平台无关的字节码 (class) 文件。
2 基础知识
2.1 代码注释
- 单行注释
|
|
- 多行注释
|
|
- 文档注释
|
|
2.2 标识符
标识符命名规则:
- 由字母、数字、下划线、$ 组成,不能以数字开头
- 区分大小写
- 不能使用关键字和保留字
- 不能使用 Java API 的类名
2.3 变量和常量
变量:占据着内存中的某一个存储区域,该区域有名称 (变量名) 和类型 (数据类型),数据在同一类型范围内不断变化。
定义变量的格式:
数据类型 变量名 = 初始化值
作用范围:定义开始到定义它的代码块结束
2.4 成员变量和局部变量
- 局部变量
- 定义在方法内的变量
- 没有默认初始值,使用前必须初始化
- 作用域是从定义开始到定义它的代码块结束
- 成员变量
- 定义在方法内的变量
- 作用域是在整个类中
2.5 基本数据类型
Java 语言有 8 种基本数据类型,按用途分为以下 4 种类别:
类别 | 数据类型 |
---|---|
整数型 | byte、short、int、long |
小数型 | float、double |
字符型 | char |
布尔型 | boolean |
2.6 基本数据类型转换
2.6.1 向上转型
容量小的类型可自动转换为容量大的数据类型!
2.6.2 向下转型
容量大的类型不会转换为容量小的数据类型!
小转大,自动!自动类型转换 (也叫隐式类型转换)
大转小,强转!强制类型转换 (也叫显式类型转换)
2.7 运算符
类别 | 运算符 |
---|---|
算术运算符 | +、-、*、/、% |
复制运算符 | =、+=、-=、*=、/=、%= |
关系运算符 | >、>=、<、<=、!= |
条件运算符 | &&、||、!、&、|、^ |
位运算符 | &、|、^、~、>>、<<、>>>、<<< |
“&”和“&&”的区别:单与时,左边无论真假,右边都进行运算。双与时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别:同理,双或时,左边为真,右边不参与运算。
2.8 表达式和三目运算符
表达式是由数字、运算符和括号等组合能够计算数值的序列,按从高到低优先级依次计算。
三目运算符的格式:
|
|
其中 x 为 boolean 类型表达式,若 x 为 true,则三目运算符的结果为 y 的值,否则为 z 的值。
2.9 程序流程控制
- 顺序结构
程序从上至下依次执行,直到程序的最后。
- 分支结构
- if-else 语句
- switch-case 语句
- 循环结构
- while: 不知道循环次数
- do-while: 不知道循环次数但是至少执行一次
- for: 知道循环次数
|
|
执行顺序:1 -> 2 -> 4 -> 3 -> 2 -> 4 -> 3
无限循环格式
|
|
- 控制循环结构
- break: 终止本层循环
- continue: 跳过本次循环
3 方法与数组
3.1 方法的定义
方法是一组为了实现特定功能的代码块的集合。
3.2 方法的格式
|
|
3.3 方法里的属性
访问控制符是限定方法的可见范围。按可见范围从大到小依次是:public
、protected
、无、private
,其中默认为无访问控制符。
属性 | 含义 |
---|---|
形式参数 | 方法调用时接收输入的数据 |
实际参数 | 方法调用时实际传入的数据 |
返回值 | 方法执行完后返回的数据 |
返回值类型 | 返回值的数据类型 |
方法签名 | 方法名和方法的参数列表 |
3.4 重载
在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型或者参数顺序不同即可。
函数重载与返回值类型无关,只与参数列表有关。
|
|
3.5 可变参数
从 java5 开始出现了可变参数,这是对 java 方法及数组的拓展!
可变参数定义格式:
|
|
调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。
3.6 数组简介
数组 (Array) 是 Java 语言中内置的一种基本数据存储结构,通俗的理解,就是一组数的集合。
- 数组的元素编号从 0 开始,依次递增,方便访问。
- 必须先声明数组,再给数组分配内存。
- 数组对应内存中的一段连续空间。
- 数组元素是同一类数据类型。
3.7 一维数组
- 声明
|
|
- 初始化
- 静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。
|
|
- 动态初始化:初始化时指定数组长度,由系统为数组元素分配初始值。
|
|
- 数组的使用
|
|
3.8 二维数组
二维数组其实是一个大的一维数组,它的每一个元素都是一个一维数组,可以看作是一张表格。
|
|
3.9 Arrays 类
|
|
3.10 for-each
|
|
4 面向对象
4.1 什么叫面向对象
面向对象 (Object-Oriented,简称 OO) 就是一种常见的程序结构设计方法。面向对象思想的基础是将相关的数据和方法放在一起,形成一种新的复合数据类型。
面向对象的三个特征:
- 封装
- 继承
- 多态
面向过程强调的是具体的功能实现,面向对象强调的是具备功能的对象。
4.2 类
类 (class) 是Java 语言的最小编程单位,也是设计和实现Java 程序的基础。
类是一组事物共有特征和功能的描述。类是抽象的,对象是具体的。
类的定义格式:
|
|
4.3 构造方法
- 构造方法是用来构造类的实例,每一个类都有默认的无参构造方法。
- 字段是类或对象所包含的数据,对类状态的一种描述。
- 方法是类或对象的特征或行为。
作用:给类中的字段初始化,可以用来创建对象。
4.4 static
static
的特点:
- 随着类的加载而加载
- 优先于对象存在
- 被所有对象所共享
- 可以直接被类名调用
- 静态方法只能访问静态成员,但是非静态方法可以访问静态成员。
- 静态方法中不可以使用
this
、super
关键字 - 利用类名调用静态 main 方法会陷入死循环,导致内存溢出,jvm 自动停止!
static
修饰的字段和方法表示属于类共用,而不属于单个实例。既可以通过类调用,也可以通过实例调用。
4.5 匿名对象
匿名对象是指一个没有名字的对象,只能调用一次。
4.6 this
this
表示当前对象。
在类的构造器中相互调用,this
只能写在构造方法的第一行!
TODO