什么是Java
Java可以理解为编程语言或者开发工具。
目的
Java最终的目的是用于编写直接在机器上运行的程序。
对于跨平台的理解
为了让平台对编程人员透明,写出可以在不同平台运行的相同源代码,Java开发了出了JVM(Java虚拟机)。
Java的运行原理
Java源程序经过编译器变异后编程字节码,字节码由虚拟机解释执行,虚拟机将每一条执行的字节码发送给解释器,解释器将其编译成特定机器上的机器码,然后在特定的机器上运行。
JDK
Java开发工具包(Java Development Kit),是一套用户给Java编程人员的开发套件,其中包含了:
- JRE (Java Runtime Envoirment):Java 运行时环境,其中最重要的部件是 JVM;
- Java开发工具:编译工具 javac、API生成工具 javadoc……;
核心类库(Java API)
Path 变量的用途
系统的全局的路径,我们在任意位置可以访问在Path定义的文件夹(目录)中的可执行程序或者批处理文件,在 Windows 系统中,可以直接执行的文件有 exe/bat。
在Path变量中,可以定义多个文件目录,之间用
;
号隔开。
配置JDK
- 前提条件:需要包含完整 JDK 文件的文件夹。 Java_HOME =
d:\xx\xx\jdk1.8
- 在 Path中追加目录
%JAVA_HOME%\bin
- CLASSPATH = .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;`
这样就完成了 JDK 的部署。
面向对象编程的初始
类是 Java 中最基础的组成单元。
面向过程编程和面向对象编程
面向过程编程:通过一个函数去完成一件事情,而且这件事情完成之后,不会留下任何的遗迹。或者理解为:一次性。
面向对象编程:在完成一件事情时,会将事情中的实体对象抽象出来,形成「类」的概念,事情的完成是通过类的对象之间发生关系去实现的。
类和对象概念
类是一群对象的特征母版,对象是类的实现。
特征(类)包含的内容有:基本属性(属性)、行为(方法)
基础语言要素
注释
文档注释
/**
* 相关的注释内容,甚至可以使用 HTML 标签
* */
在 javadoc 中也提供了丰富的标记
* @author:指定程序的作者
* @version:指定源代码的版本
* @param:在方法中指定参数
* @return:在方法中指定返回值
单行注释
// 单行注释
多行注释
/*
第一行注释
第二行注释
*/
标识符和关键字
标识符包含了 Java 中默认的关键字以及程序员自己定义的类名、方法名、变量名等等。
标识符的命名规范:
- 只能包含数字、字母(大小写,Unicode字符)、下划线_、美元符$
- 不能以数字开头
分隔符:
- 花括号 {}:定义代码块,逻辑上是一个整体,包括类的主体、方法体、静态代码块、条件和循环语句的执行体;
- 分号 ;:语句的结束,如果出现在一行中有几条语句,那么多条之间也要用 ; 隔开; 方括号[]:用于数组中;
- 圆括号 () :在方法中声明形式参数,在调用方法的时候传入实际参数,表达式优先级定义;
- 空格:单个空格、Tab 键、Enter 键,空格的出现是不会影响程序运行的,但是良好的缩进,可以提高程序的可读性;
- 圆点 . :用于类/对象与其成员之间的分隔,表示调用类/对象的属性或者方法。
在 Java 中,只要看见单词首字母是大写的,那就是类。
数据类型
Java 是一种强数据类型的语言,就是指在变量进行定义的时候,就指定了遍的数据类型是什么。
变量的概念:就是把一堆数据起了个名字。
内存:运行中的程序都会占用内存空间,因为程序在运行过程中,需要开辟包括方法栈区、变量….,广泛的理解,在程序运行结束后内存空间会被释放,但是定义的变量、方法等,都是有「生命周期」的,一旦变量销毁了,内存也是会释放的。
数据类型的分类
基本数据类型
- 数值型
- 整数型:byte(-128-127)、short(15次方)、int(31次方)、long(63次方)
- 浮点型:float(38次方)、double(308次方)
- char:用单引号表,Java 中使用16位的Unicode 字符集作为编码方法。
- 表示方式
- 直接通过单个字符表示:’a’、’9’ 等;
- 通过转义字符表示:’\t’、’\ n’、’\’;
- 直接使用Unicode表示:’\uxxxxx’ ;
在 Java 中是没有表现多个字符的基本数据类型的,但是在 Java 中提供了一个 String 类,去表现字符串。
- 布尔型
- boolean:表示逻辑中的真和假,值只有 true / false。
在基本数据中,是可以进行类型之间的强制转换的,但是要注意,如果从低精度的转为高精度时不会有问题,但是从高精度转化为低精度时,可能会出现精度缺失。
- boolean:表示逻辑中的真和假,值只有 true / false。
变量
变量声明的语法:
数据类型 变量名;
例如:int a;
变量赋值的语法:
变量名 = 值;
例如: a = 10;
两者可以写在一起:
数据类型 变量名 = 值;
例如:int a = 10;
变量的生命周期
变量的生命周期在 {} 定义的范围内。
**
直接量
直接量是指在程序中直接通过源代码的方式指定的值,有时也称为字面量。
在编译的时候,JVM 就定义到常量池中。
比如 int a = 5;
这里的 5 就是个直接量。
在 Java 中可以定义的直接量包含:基本数据类型、字符串类型,null。
关于 String 类的特殊说明
String 类是一个不可改变类,意思就是在 String 对象被创建出来后就不能被改变了。当程序第一次使用某个字符串直接量时,Java 会使用常量池来缓存该字符串直接量。如果后面程序用到了这个字符串直接量,Java 会直接引用常量池字符串。
在常量池中不会存在两个一样的字符串字面量值。
运算符
算术运算符
+ - * / % ++ --
赋值运算符
= += -= /= *= %=
比较运算符
用于判断两个变量或者常量的大小,返回结果为ture/false。
> >= < <= == !=
左右两边的操作数只能是数值。
逻辑运算符
运算符两边必须是 boolean 类型的变量、常量、表达式
与 &&
或 ||
非 !
与:只要有一个假就是假
或:只要有一个真就是真
三目运算符
语法格式:expression ? if-true-statement : if-false-statement
流程控制
- 顺序结构
- 判断(分支选择)结构
- 循环结构
顺序结构
程序是一个自上而下运行的过程。
分支选择结构
Java 中的分支选择结构有 if 结构,switch 结构
if 结构
- 形式一:
if (logic expression) {
statement;
}
- 形式二:
if (logic expression) {
statement;
} else {
statement;
}
- 形式三:
if (logic expression) {
statement;
} else if (logic expression) {
statement;
} else {
statement;
}
switch 结构
switch (expression) {
case condition1 : {
statement;
break;
}
case condition2 : {
statement;
break;
}
default : {
statement;
break;
}
}
在 case 中要加入 break 关键字跳出;
循环结构
while 结构
(init_statement);
while (test_expression) {
body_statement;
[iteration_statement];
}
do-while 结构
(init_statement);
do {
body_statement;
[iteration_statement];
} while (test_expression)
无论如何都会执行一次循环体内容