Java 8.0基础目录
一、Java概述
(1)Java起源
Java之父是詹姆斯.高斯林(James Gosling),诞生于SUN(Stanford University Network),2009年被Oracle(甲骨文)收购
(2)Java语言特点
- 完全面向对象
- 支持分布式
- 健壮型
- 安全
- 跨平台
(3)Java知识图解
(4)Java运行环境
- JVM(Java Virtual Machine ):Java虚拟机,简称JVM,是运行所有Java程序的假想计算机,是Java程序的运行环境之一;JVM本身是不具备跨平台功能的,每个操作系统下都有不同版本的虚拟机
- JRE (Java Runtime Environment) :Java程序的运行环境,包含
JVM
和运行时所需要的核心类库 - JDK (Java Development Kit):Java程序开发工具包,包含
JRE
和开发人员使用的工具
三者关系: JDK > JRE > JVM
- 如果是想要运行一个已有的Java程序,那么只需安装
JRE
即可- 如果想要开发一个全新的Java程序,那么必须安装
JDK
,其内部包含JRE
。
(5)Java运行方法
- 创建源文件:使用文本编辑器编写,后缀名为
.java
- 编译源文件:在DOS命令行中,进入源文件所在路径,使用命令编译,
javac 源文件名.java
,然后路径下会多一个类名.class
文件,也就是字节码文件 - 执行字节码文件:使用命令编译,
java 类名
常见问题
- main是否必须在public修饰的类中
不必须,但是习惯上将main写在public修饰的类中- 一个源文件中是否可以有多个类
一个源文件中可以有多个类(只有一个类可以被public修饰), 其中类名不能相同,编译后会生成多个.class
字节码文件- 源文件名与类名是否必须一致
被public修饰的类的类名必须和源文件名保持一致,其他类不需要保持一致,但是为了好维护,建议一个源文件尽量只写一个类,且都与源文件名保持一致- cmd命令是否区分大小写
源文件名不区分大小写,其他都区分大小写,但是建议都做区分- cmd命令行窗口的字符编码与.java源文件的字符编码不一致
解决方案一:在文本编辑器中修改源文件的字符编码
解决方案二:使用javac命令时,指定源文件的字符编码,javac -encoding utf-8 源文件名.java
二、Java核心语法
Java语言
Java语言是一门严格区分大小写的语言,且不支持中文符号
语言格式
(1)每一级缩进一个Tab键
(2){}的左半部分在行尾,右半部分单独一行,与和它成对的"{"的行首对齐
语言结构
类{
方法{
语句;
}
}
程序入口:main方法
public static void main(String[] args){
}
(1)注释方法
- 单行注释:
// 注释内容
- 多行注释:
/* 注释内容 */
- 文档注释:
/** 文档注释内容 */
- 查看文档注释
DOC命令:javadoc -d 文件夹名 【-version -author】 源文件名.java
(2)关键字
- 关键字一共50个,全部都是小写,其中
const
和goto
是保留字
(3)标识符
1. 标识符的命名规则(必须遵守)
- 不能使用内置关键字(包含保留字)和特殊值(布尔值、空值)
- 只能使用字母,数字,下划线
_
,美元符号$
- 不能以数字开头
- 不能包含空格
- 严格区分大小写
2. 标识符的命名规范(建议遵守)
- 见名知意
- 类名、接口名:每个单词的首字母都大写,形式:
XxxYyyZzz
- 变量、方法名:从第二个单词开始首字母大写,形式:
xxxYyyZzz
- 包名:每一个单词都小写,单词之间使用点
.
分割,形式:xxx.yyy.zzz
- 常量名:每一个单词都大写,单词之间使用下划线
_
分割,形式:XXX_YYY_ZZZ
(4)数据类型
1. 基本数据类型
- 字符常量(char)的三种表示方式
(1)单个字符
char c = 'A' System.out.println(c); //输出A
(2)转义字符
转义字符 含义 \n
换行 \r
回车(Enter) \t
缩进(Tab) \\
\ \"
" \'
’ \b
删除(Backspace) (3)Unicode编码值(范围:0~65535)
char c = 97; //a的编码为97 System.out.println(c); //输出a
2. 基本数据类型转换
- 自动类型转换(隐式类型转换), 将取值范围小的类型自动提升为取值范围大的类型
转换场景
- 存储范围小的值赋值给存储范围大的变量
- 存储范围小的数据类型与存储范围大的数据类型一起混合运算
- 当byte,short,char数据类型进行算术运算时,按照int类型处理
- 强制类型转换(显示类型转换),将取值范围大的类型强制转换成取值范围小的类型,转换格式:
数据类型 变量名 = (数据类型)被强转数据值
转换场景
- 存储范围大的值赋值给存储范围小的变量(可能会损失精度或溢出)
- 提升数据类型
- 特殊的数据类型转换:任意数据类型的数据与String类型进行“+”运算时,结果一定是String类型
3. 引用数据类型: 类
、数组
、接口
(5)常量
- 自定义常量:通过
final
关键字定义 - 字面值常量
字面值常量 | 举例 |
---|---|
字符串常量 | ”HelloWorld“ |
整数常量 | 12,-23 |
浮点常量 | 12.34 |
字符常量 | ‘a’,‘0’,‘沙’ |
布尔常量 | true,false |
空常量 | null |
- 字符常量:单引号里面有且仅有一个字符
- 空常量:不可以在输出语句中直接打印
(6)变量
1. 声明变量:数据类型 变量名;
- 先声明后使用
- 变量有作用域,在同一个作用域中不能重名
2. 赋值变量:变量名 = 值;
- long类型建议加
L
- float类型建议加
F
- char类型使用单引号:
'值'
,不可以为空- String类型使用双引号:
"值"
,可以为空
3. 使用变量:通过变量名直接引用
- 在使用之前必须初始化
(7)运算符
分类 | 运算符 |
---|---|
算术运算符 | + 、- 、* 、/ 、% 、++ 、-- |
赋值运算符 | = 、+= 、-= 、*= 、/= 、%= |
关系运算符 | > 、>= 、< 、<= 、== 、!= |
逻辑运算符 | & 、| 、^ 、! 、&& 、|| |
三元运算符 | (关系表达式)?结果1:结果2; |
位运算符 | & 、| 、~ 、^ 、<< 、>> 、>>> |
- 逻辑运算符
逻辑运算符 | 符号解释 | 符号特点 |
---|---|---|
& | 与,且 | 有false 则false |
| | 或 | 有true 则true |
^ | 异或 | 相同为false ,不同为true |
! | 非 | 非false 则true ,非true 则false |
&& | 双与,短路与 | 左边为false ,则右边就不看 |
|| | 双或,短路或 | 左边为true ,则右边就不看 |
- 位运算符
位运算符 | 符号解释 | 符号特点 |
---|---|---|
& | 按位与 | 两位都为1时返回1 |
| | 按位或 | 只要有一位为1即可返回1 |
~ | 按位非 | 将操作数的每个位(包括符号位)全部取反 |
^ | 按位异或 | 当两位相同时返回0,不同时返回1 |
<< | 左移运算符 | 左移几位就相当于乘以2的几次方 |
>> | 右移运算符 | 右移几位就相当于除以2的几次方 |
>>> | 无符号右移运算符 | 往右移动后,左边空出来的位直接补0,不看符号位 |
- 运算符优先级
(8)分支语句
(9)循环语句
(10)控制语句
(11)数组
两种常见的输出语句
- 直接输出语句:输出内容,完毕后不做任何处理,格式:
System.out.print(输出内容);
,括号内不能为空 - 换行输出语句:输出内容,完毕后进行换行,格式:
System.out.println(输出内容);
,括号内可以为空
如果有多项输出内容,必须使用
+
连接