先来看看Java基础知识框架图
从图中可以看出,Java的基础知识分为4个部分,该篇会讲解Java的基础语法
定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)
特点:关键字中所有字母都是小写
按照关键字用途分类可以分为如下几类:
1)定义数据类型的关键字
class、Interface、enum、byte、short、int、long、float、double、char、boolean、void
2)定义流程控制的关键字
if、else、switch、case、default、while、do、for、break、continue、return
3)定义访问权限修饰符的关键字
private、protected、public
4)定义类、函数、变量、修饰符的关键字
abstract、final、static、synchronized
5)定义类与类之间关系的关键字
extends、implements
6)定义建立实例、引用实例、判断实例的关键字
new、this、super、instanceof
7)异常处理的的关键字
try、catch、finally、throw、throws
8)包的关键字
package、import
9)其他修饰符关键字
native、strictfp、transient、volatile、assert
10)定义数据类型值的字面值
true、false、null
定义:当前Java版本没有使用,以后版本可能会作为关键字
特点:单词字母都是小写
如:goto、const
定义:对类、变量、方法等命名时使用的字符序列称为标识符,一句话就是反是自己需要起名字的地方都叫标识符
标识符定义需要满足以下规则:
Java中名称的命名规范:
包名:多单词组成时所有字母都小写:xxxyyyzzz
类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
基本概念:
变量的声明和初始化:变量类型 变量名 = 存储的值;
变量的作用:用于内存中存储数据
可以按照数据类型和声明位置两种区分:
1、按数据类型区分:
2、按照声明位置区分:
注意:局部变量的声明需要进行初始化。
Java8大基本数据类型占用存储空间和容量范围:
1)整数类型
类型 | 占用存储空间 | 容量范围 |
---|---|---|
byte | 1字节(8bit) | -128~127 |
short | 2字节 | xxx |
int | 4字节 | xxx |
long | 8字节 | xxx |
注意:基本类型是long声明的变量初始值需要加L用以区分为是long类型(不强制)
2)浮点类型
类型 | 占用存储空间 | 容量范围 |
---|---|---|
float | 4字节 | xxx |
double | 8字节 | xxx |
注意:Java中浮点类型默认为double类型。声明float型变量需要加’F’或者’f’(强制)
3)字符类型
类型 | 占用存储空间 | 容量范围 |
---|---|---|
char | 2字节 | xxx |
char类型表示的是一个字符,在Java中采用的unicode编码,所以一个字符可以存储一个汉字是2字节。
字符型有三种初始化的表现形式:
注意char类型可以进行运算的。因为他都对应有unicode码。
4)布尔类型
boolean 类型用来判断逻辑条件,它有两种取值,true和false
数据类型转换有两种,第一种是将容量小的转换为容量大的,第二种则是将容量大的转换为容量小的也叫强制类型转换。
1、基本数据类型转换
定义:容量小的类型自动转换为容量大的数据类型。
如图所示,这张图表示的是数据类型之间的转换从小到大的一个排序。
注意的情况如下:
2、强制类型转换
强制类型转换是自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符:(),但可能造成精度降低或溢出,格外要注意。
注意:应用类型字符串String转换为int类型需要使用基本类型对应的包装类进行转换为基本类型。
运算符是一种特殊的符号,用以表示数据的运算,赋值和比较等操作。
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
+ | 正号 | +3 | 3 |
- | 符号 | -3 | -3 |
+ | 加 | 6 + 6 | 12 |
- | 减 | 6 - 4 | 2 |
* | 乘 | 6 * 6 | 36 |
/ | 除 | 5 / 5 | 1 |
% | 取余(取模) | 7 % 5 | 2 |
++ | 自增(前):先运算后取值 | a = 2; b = ++a; | a = 3, b = 3 |
++ | 自增(后):先取值后运算 | a = 2; b = a++; | a = 3, b = 2 |
– | 自减(前):先运算后取值 | a = 2; b = --a; | a = 1, b = 1 |
– | 自减(后):先取值后运算 | a = 2; b = a–; | a = 1, b = 2 |
+ | 字符串连接 | “Hello” + “World” | “HelloWrold” |
符号:=
赋值运算符是r -> l 从右到左,当两边的数据类型不一致时,可以使用自动转换或者强制转换进行处理。支持连续赋值。
扩展赋值运算符:+=、-=、*=、/=、%=
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
== | 相等于 | 4 == 3 | false |
!= | 不等于 | 4 != 3 | true |
< | 小于 | 4 < 3 | false |
> | 大于 | 4 > 3 | true |
<= | 小于等于 | 4 <= 3 | false |
>= | 大于等于 | 4 >= 3 | true |
instanceof | 检查是否是类的对象 | “Hello” instanceof String | true |
& 逻辑与 | 逻辑或 !逻辑非 && 短路与 || 短路或 ^ 逻辑异或
“&” 和 “&&” 的区别:
单&时,左边无论真假,右边都要进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|” 和 “||” 的区别同理,||表示:当左边为真,右边不参与运算。
运算符 | 运算 | 范例 |
---|---|---|
<< | 左移 | 3 << 2 = 12 |
< | 右移 | 3 >> 1 = 1 |
>>> | 无符号又移 | 3 >>> 1 |
& | 与运算 | 6 & 3 = 2 |
| | 或运算 | 6 | 3 = 7 |
^ | 异或运算 | 6 ^ 3 = 5 |
! | 取反运算 | ~6 = -7 |
位运算符的细节
<< | 空位补0,被移除的高位丢弃,空缺位补0 |
---|---|
>> | 被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1 |
>>> | 被移位二进制最高位无论是0或者是1,空缺位都用0补。 |
& | 二进制为进行&运算,只有1&1时结果是1,否则是0; |
| | 二进制位进行 | 运算,只有0 | 0时结果是0,否则是1; |
^ | 相同二进制为进行 ^ 运算,结果是0;1 ^ 1 = 0, 0 ^ 0 = 0,不相同二进制位 ^ 运算结果是 1. 1^0 = 1, 0^1 = 1 |
~ | 正数取反,各二进制码按补码各位取反。负数取反,各二进制码按补码各位取反 |
格式:(条件表达式)?表达式1:表达式2;
运算符优先级