基础语法
二进制
计算机中的数据都以二进制数字保存。二进制:逢二进一。即只有 0、1 两个值。
-
计算机中信息的存储单位
位(Bit):表示一个二进制数码 0 或 1,是计算机存储处理信息的最基本的单位。
字节(Byte):一个字节由 8 个位组成。它表示作为一个完整处理单位的 8 个二进制数码。 一个字节最大的数:11111111,即下十进制的255。
变量
变量分类
-
按数据类型分:
- 基本数据类型变量:共8种。数值型(整型:byte,short,int,long,浮点型:float,double,字符型:char),布尔型(boolean)
- 引用数据类型变量:字符串、类、接口、数组
-
按变量申明的位置划分:
- 局部变量(方法内部 或 代码块内部定义的变量)
- 成员变量(方法外部、类的内部定义的变量)
备注:类的外面不能有变量的声明
变量作用域
package day01_demo2;
public class demo02 {
public static void main(String[] args) {
method1();
}
// 内层范围可以访问外层范围定义的变量
public static void method1() {
int a = 10;
int b = 20;
{
System.out.println(a+b);
}
}
// 外层范围可以不访问内层范围定义的变量
public static void method2() {
{
int a = 10;
int b = 20;
}
//System.out.println(a+b); // 报错
}
}
基本数据类型
数据类型 | 关键字 | 内存占用 | 取值范围 |
---|---|---|---|
字节型 | byte | 1个字节 8位 | -128~127 |
短整型 | short | 2个字节 | -32768~32767 |
整型 | int(默认) | 4个字节 | -2的31次方~2的31次方-1【-2147483648 ~ 2147483647】 |
长整型 | long | 8个字节 | -2的63次方~2的63次方-1 |
单精度浮点数 | float | 4个字节 | 1.4013E-45~3.4028E+38 |
双精度浮点数 | double(默认) | 8个字节 | 4.9E-324~1.7977E+308 |
字符型 | char | 2个字节 | 0-65535 |
布尔类型 | boolean | 1个字节 | true,false |
// 定义 long 类型的变量, 必须加 L 后缀,因为默认是 int 类型
long a1 = 10L;
// 定义 float 类型的变量, 必须加 F 后缀,因为默认是 double 类型
float a2 = 1.1F;
类型转换
-
boolean 类型不能转换成任何其它数据类型。
-
**自动类型转换:**容量小的类型自动转换成容量大的数据类型
byte,short,int -> float -> long -> double
(byte,short,int 不会互相转换,它们三者在计算时会转换成 int 类型)
-
**强制类型转换:**容量大的类型转换成容量小的数据类型时,要加上强制转换符
long a = 100L; int b = (int)a; // 将a强制转换int类型再赋值给b
注意事项
-
强制类型转换一般不推荐使用,大的转小的 有可能发生精度损失、数据溢出
int num3 = (int) 3.99 小数点后面的会被丢弃(num3=3)
-
byte/short/char 这三种类型都可以发生数学运算,例如加法"+"
chart x = 'A' System.out.println(x+1) // 得到65+1=66,A 在编码表ASCII为 65
-
byte/short/char 这三种类型在运算的时候,都会先转换成为int类型,然后再计算
short num1 = 60 byte num2 = 40 int res = num1 + num2 或者 short res = (short) (num1+num2)
ASCII码表 :American Standard Code for Information Interchange 美国信息交换标准代码
48: ‘0’
65: ‘A’
97: ‘a’
ASCII 码表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GJjUKV42-1613996250766)(.\pic\ascii码表.jpg)]
标识符
Java 对包、类、方法、参数和变量等要素命名时使用的字符序列称为标识符。
- 由字母、数字、下划线_ 和 美元符号$ 组成。
- 不能以数字开头。
- 区分大小。
- 长度无限制。
- 不能是 Java 中的保留关键字。
编程规范(简)
命名风格
-
包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用
单数形式,但是类名如果有复数含义,类名可以使用复数形式。
正例: 应用工具类包名为 com.alibaba.open.util、类名为 MessageUtils
-
类名使用 UpperCamelCase 风格,必须遵从大驼峰形式
-
方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵从
小驼峰形式。
-
常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。
正例:MAX_STOCK_COUNT,反例:MAX_COUNT。
-
抽象类命名使用 Abstract 或 Base 开头;
-
异常类命名使用 Exception 结尾;
-
测试类命名以它要测试的类的名称开始,以 Test 结尾。
-
中括号是数组类型的一部分,数组定义如下:String[] args;
代码格式
示范
public static void main(String[] args) {
// 缩进 4 个空格
String say = "hello";
// 运算符的左右必须有一个空格
int flag = 0;
// 关键词 if 与括号之间必须有一个空格,括号内的 f 与左括号,0 与右括号不需要空格
if (flag == 0) {
System.out.println(say);
}
// 左大括号前加空格且不换行;左大括号后换行
if (flag == 1) {
System.out.println("world");
// 右大括号前换行,右大括号后有 else,不用换行
} else {
System.out.println("ok");
// 在右大括号后直接结束,则必须换行
}
}
-
注释//: 双斜线与注释内容之间有且仅有一个空格。
// 注释内容,注意在//和注释内容之间有一个空格。
-
方法参数在定义和传入时,多个参数逗号后边必须加空格。
method("a", "b", "c"); // 实参的"a",后边必须要有一个空格。
-
IDE 的 text file encoding 设置为 UTF-8; IDE 中文件的换行符使用 Unix 格式,不要使用 Windows 格式
-
没有必要增加若干空格来使某一行的字符与上一行对应位置的字符对齐。
关键字
共 51 + 2个保留关键字 = 53 个关键字
2个保留关键字:const、goto
关键字 | 含义 |
---|---|
abstract | 表明类或者成员方法具有抽象属性 |
assert | 断言,用来进行程序调试 |
boolean | 基本数据类型之一,声明布尔类型的关键字 |
break | 提前跳出一个块 |
byte | 基本数据类型之一,字节类型 |
case | 用在switch语句之中,表示其中的一个分支 |
catch | 用在异常处理中,用来捕捉异常 |
char | 基本数据类型之一,字符类型 |
class | 声明一个类 |
const | 保留关键字,常量,常数:用于修改字段或局部变量的声明。 |
continue | 回到一个块的开始处 |
default | 默认,例如,用在switch语句中,表明一个默认的分支。Java8 中也作用于声明接口函数的默认实现 |
do | 用在do-while循环结构中 |
double | 基本数据类型之一,双精度浮点数类型 |
else | 用在条件语句中,表明当条件不成立时的分支 |
enum | 枚举 |
extends | 表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口 |
final | 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量 |
finally | 用于处理异常情况,用来声明一个基本肯定会被执行到的语句块 |
float | 基本数据类型之一,单精度浮点数类型 |
for | 一种循环结构的引导词 |
goto | 保留关键字,转到:指定跳转 |
if | 条件语句的引导词 |
implements | 表明一个类实现了给定的接口 |
import | 表明要访问指定的类或包 |
instanceof | 用来测试一个对象是否是指定类型的实例对象 |
int | 基本数据类型之一,整数类型 |
interface | 接口 |
long | 基本数据类型之一,长整数类型 |
native | 用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的 |
new | 用来创建新实例对象 |
package | 包 |
private | 一种访问控制方式:私用模式 |
protected | 一种访问控制方式:保护模式 |
public | 一种访问控制方式:共用模式 |
return | 从成员方法中返回数据 |
short | 基本数据类型之一,短整数类型 |
static | 表明具有静态属性 |
strictfp | 用来声明FP_strict(单精度或双精度浮点数)表达式遵循[IEEE 754](https://baike.baidu.com/item/IEEE 754)算术规范 |
super | 表明当前对象的父类型的引用或者父类型的构造方法 |
switch | 分支语句结构的引导词 |
synchronized | 表明一段代码需要同步执行 |
this | 指向当前实例对象的引用 |
throw | 抛出一个异常 |
throws | 声明在当前定义的成员方法中所有需要抛出的异常 |
transient | 声明不用序列化的成员域 |
try | 尝试一个可能抛出异常的程序块 |
void | 声明当前成员方法没有返回值 |
volatile | 表明两个或者多个变量必须同步地发生变化 |
while | 用在循环结构中 |
方法
方法用于封装一段特定的逻辑功能。
格式
权限修饰符 返回值类型声明 方法名称(参数列表){
方法中封装的逻辑功能;
return 返回值; // 当声明了返回值类型时需要return语句
}
权限修饰符
访问修饰符 | 同一个类 | 同包 | 不同包,子类 | 不同包,非子类 |
---|---|---|---|---|
private | √ | |||
默认 | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
运算符
算术运算符
运算符 | 描述 | 备注 |
---|---|---|
+ | 加 | |
- | 减 | |
* | 乘 | |
/ | 除(求商) | |
% | 取模(求余) | |
++ | 自增 | 如果是变量前缀:先对此变量加 1,再执行其他的操作。 如果是变量后缀:先执行当前语句的其他操作,再对此变量加 1 |
– | 自减 | 对此变量减1,规则同上 |
package day01_demo2;
public class demo01 {
public static void main(String[] args) {
int a = 10;
System.out.println(++a); // 自增在前,先自增再运算,结果为11
int b = 20;
System.out.println(b++); // 自增在后,先运算再自增,结果为20
}
}
赋值运算符
运算符 | 描述 | 示例 |
---|---|---|
= | 赋值 | a = 10 |
+= | 加等于 | a += 10 等于 a = a + 10 |
-= | 减等于 | a -= 10 等于 a = a - 10 |
*= | 乘等于 | a *= 10 等于 a = a * 10 |
/= | 除等于 | a /= 10 等于 a = a / 10 |
%= | 模等于 | a %= 10 等于 a = a % 10 |
关系运算符
关系运算符作用是比较两边的操作数,结果总是 boolean 型的。
运算符 | 描述 | 示例 |
---|---|---|
== | 相等 | 2 == 1 结果 false |
!= | 不等于 | 2 != 1 结果 true |
< | 小于 | |
> | 大于 | |
<= | 小于等于 | |
>= | 大于等于 |
逻辑运算符
运算符 | 描述 | 示例 |
---|---|---|
& | 与(左右两边都要运算,两边为true,结果true) | true & true = true |
| | 或(只要有一个true,结果为true) | true & false = true |
! | 非(取反) | !false = true |
&& | 短路与(左边false,右边不运算) | |
|| | 短路或(左边true,右边不运算) | |
^ | 异或(相同为false) | true ^ true = false |
字符串连接运算符
"+"除了可用于字符串相连接,也能将字符串与其它的数据类型相连成一个新的字符串。
三目运算符
boolean 类型表达式? 表达式1:表达式2
boolean 类型表达式结果为true,则三目运算结果为表达式1结果,反之最终结果是表达式2的结果
操作符优先级
表达式的运算按照运算符的优先顺序从高到低进行,同级运算符从左到右进行。
优先次序 | 运算符 | |
---|---|---|
1 | . [] () | |
2 | ++ – ! ~ instanceof | |
3 | new (type) | |
4 | * / % | |
5 | + - | |
6 | >> >>> << | |
7 | > < >= <= | |
8 | = = != | |
9 | & | |
10 | ^ | |
11 | | | |
12 | && | |
13 | || | |
14 | ?: | |
15 | = += -= *= /= %= ^= | |
16 | &= |= <<= >>= >>>= |