2 基本语法
2.1 IDE的介绍和安装使用
IDE 软件开发环境
包括 编辑器,编译器,调试器.
- idea
- eclipse IBM 捐献给eclipse基金会
2.2 注释
2.2.1 单行注释
单行注释是双斜杠 //
public static void main(String[] args) {
//输出
System.out.println("hello world"); //输出HelloWorld
}
2.2.2 多行注释
多行注释是 /* */
public static void main(String[] args) {
//输出
/*
System.out.println("hello world");
System.out.println("hello world");
System.out.println("hello world");
System.out.println("hello world");
System.out.println("hello world");
System.out.println("hello world");
*/
System.out.println("hello world");
}
2.2.3 文档注释
对类,属性,方法的功能进行说明, 并且在调用时会提示
/**
* 求KMP算法的临时数组next[]
* @param pattern 模式串
* @return next
*/
public static int[] computeTemporaryArray(char pattern[]){
int[] next = new int[pattern.length];
int j = 0;
for (int i = 1; i < next.length;) {
if (pattern[i] == pattern[j]){
next[i] = j+1;
i++;
j++;
}else {
if(j != 0){
j = next[j-1];
}else {
next[i] = 0;
i++;
}
}
}
return next;
}
2.3 关键字
2.3.1 对数据类型进行定义的关键字
关键字 | |
---|---|
class | 定义类 |
interface | 定义接口 |
enum | |
byte | 定义字节类型 |
short | 定义短整形 |
long | 定义长整形 |
int | 定义整形 |
float | 定义单精度浮点型 |
double | 定义双精度浮点型 |
char | 定义字符型 |
boolean | 定义布尔型 |
void | 无返回值 |
2.3.2 定义数据类型值的关键字
关键字 | |
---|---|
true | 真 |
false | 假 |
null | 空 |
2.3.3 定义流程控制的关键字
关键字 | |
---|---|
if | |
else | |
dafault | |
switch | |
case | |
while | |
dowhile | |
for | |
break | 终止循环 |
continue | 跳过某次循环 |
return |
2.3.4 定义访问权限修饰符的关键字
关键字 | |
---|---|
private | 私有权限 |
public | 公有权限 |
protected | 保护权限 |
2.3.5 定义类,函数,属性修饰符的关键字
关键字 | |
---|---|
static | 静态 |
final | 最终,不可修改 |
abstract | 抽象类 |
synchronized | 异步 |
2.3.6 定义类与类之间关系的关键字
关键字 | |
---|---|
extends | 继承 |
implements | 实现 |
2.3.7 建立实例引用和判断实例的关键字
关键字 | |
---|---|
new | 创建对象 |
this | 表示当前对象 |
super | 父类 |
instanceof |
2.3.8 异常处理的关键字
关键字 | |
---|---|
try | |
catch | |
finally | |
throw | |
throws |
2.3.9用于包的关键字
关键字 | |
---|---|
package | |
import |
2.3.10 其他关键字
关键字 | |
---|---|
native | |
strictfp | |
transient | |
volatile | |
assert |
2.4 保留字
2.4.1 goto
2.4.2const
2.5 标识符
就是类,属性,方法的命名的字符序列.
规则:
- 字母 数字 下划线和$
- 不能以数字开头
- 不能使用关键字命名
- 严格区分大小写, 不能包含空格
包名:小写
类名,接口名:大驼峰
属性,方法:小驼峰
常量名:大写并且用下划线连接
2.6 变量
变量就是数据的存储空间
内存中的一块区域,可以通过变量名来访问这片区域
变量包括变量类型和变量名
声明变量的语法
[修饰符] 变量类型 变量名;
2.7 数据类型
java是一种强语言, 对每一种数据都定义了明确具体的数据类型, 对不同的数据类型预先在内存中分配不同大小的空间.
2.7.1 基本数据类型
整型
byte
short
long
int
整形还可以表示其他类型的数据
二进制:0B或0b。
八进制:0
十六进制:0X或0x。
类 型 | 占用存储空间(字节) | 表数范围 | 注意 |
---|---|---|---|
byte | 1字节 | -128 ~ 127 | |
short | 2字节 | -215 ~ 215-1 | |
int | 4字节 | -231 ~ 231-1 | |
long | 8字节 | -263 ~ 263-1 | long类型使用是需要声明,在数值的后面加L。 |
浮点型
类型 | 占用空间(字节) | 注意 |
---|---|---|
float | 4 | 由于在计算机中计算方式不同,4字节的浮点数大于4字节和8字节的整数类型。 |
double | 8 |
为什么10.5-10.4 != 0.1 ?
计算机中浮点型的存储是以取近似值进行存储
如果是32位单精度的浮点数,按照IEEE-754标准格式,那么可以按以下步骤来完成:
1.先对其进行规格化,即10.5=21/2=10101*2-1 =1.0101*23.
2.计算偏值指数,指数E=3+127=130=10000010 .
3.符号位,由于为正数,所以此位是0 .
4.综上所得,10.5的浮点数表示为0 100000010 01010000000000000000000.
逻辑型
boolean
值只有true和false
字符型
char
- 占用2个字节的存储空间, 用来存储字符.
- char 也可以参与数值运算. char c = ‘a’+1; 先将’a’转换为int,计算结果98,对应字符b.
ASCLL码,UNICODE:
“a” 97
‘A’ 65
中国:
GKB
GB2312
2.7.2 引用数据类型
本质就是用另一个类作为声明变量的类型.
除了上述的8种基本数据类型之外,都是引用数据类型. 用类来作为类型的都是引用数据类型.
类
接口
数组
2.7.3 数据类型的转换
默认转换
容量小的类型转换成容量大的类型
byte,short,char—>int—>long—>float—>double
强制类型转换
容量大的类型转换成容量小的类型
(目的类型) 变量
影响
溢出
精度降低
2.8 运算符
2.8.1 算术运算符
运算符 | 含义 |
---|---|
+ | |
- | |
* | |
/ | |
% | 取余 |
++ | 递增 |
– – | 递减 |
2.8.2 比较运算符
运算符 | 含义 |
---|---|
< | |
> | |
<= | |
>= | |
== | |
!= |
2.8.3 逻辑运算符
运算符 | 含义 |
---|---|
& | 与 |
| | 或 |
! | 非 |
&& | 短路与 |
|| | 短路或 |
2.8.4 赋值运算符
运算符 | 含义 |
---|---|
= | |
+=(隐式转换) | a = a + 1; 相当于 a+=1; |
-= | |
*= | |
/= |
2.8.5 条件运算符
运算符 | 含义 |
---|---|
? | |
: |
三元运算: (b>c)?b:c
2.8.6 位运算
运算符 | 含义 |
---|---|
<< | 左移 |
>> | 右移 右1补1 右0补0 |
>>> | 右移 都补0 |
& | 与运算 |
| | 或运算 |
^ | 异或 |
~ | 正数取反,各二进制码按补码各位取反 负数取反,各二进制码按补码各位取反 |
2.9 控制台输入
Scanner
//创建对象
Scanner scanner = new Scanner(System.in);
scanner.next();//返回一个字符串
scanner.nextInt();//把字符串转换成 int
scanner.nextDouble();
scanner.hasNext(); //是否还有下一个输入的字符串
//...............................
BufferedReader
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
bf.readLine()//读一行
bf.read() //转换成int
2.10 流程控制
2.10.1 条件语句
if - elseif - else
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int month = Integer.parseInt(bf.readLine());
if (month <= 8) {
if (month > 5) {
System.out.println("夏季");
}else{
if (month >2){
System.out.println("春季");
}else {
System.out.println("冬季");
}
}
}else {
if (month <= 11){
System.out.println("秋季");
}else {
System.out.println("冬季");
}
}
switch
//
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int day = Integer.parseInt(bf.readLine());
switch (day){
case 1:
System.out.println("周一 工作日" );
break;
case 2:
System.out.println("周二 工作日" );
break;
case 3:
System.out.println("周三 工作日" );
break;
case 4:
System.out.println("周四 工作日" );
break;
case 5:
System.out.println("周五 工作日" );
break;
case 6:
System.out.println("周六 周末" );
break;
case 7:
System.out.println("周天 周末" );
break;
default:
System.out.println("输入出错" );
}
2.10.2 循环语句
for
for (int i = 0; i < 10; i++) {
System.out.println("i = " + i);
}
int i = 0;
for (; i < 10; i++) {
System.out.println("i = " + i);
}
int i = 0;
for (; i < 10 ; ) {
System.out.println("i = " + i);
i++;
}
//死循环
int i = 0;
for (;;){
System.out.println(i);
i++;
}
while
int i = 0;
while(i<5){
System.out.println("i = " + i);
}
//死循环
while(true){
System.out.println("洗循环");
do…while()
//会先执行一遍,然后看结果,是否再继续循环
int i = 1;
do {
System.out.println(i);
i++;
}while(i<10);
2.10.3 控制关键字
break
终止循环
continue
跳过某次循环