目录
Java基础语法
概述
计算机语言组成
- 关键字
- 标识符
- 注释
- 常量与变量
- 运行符
- 语句
- 函数
- 数组
关键字和保留字
- 关键字: 在编程语言中有一些事先定义的,有着特殊含义和用途的单词。
- 保留字: 和关键字一样都是编程语言事先定义好的,只是说现在暂时没有特殊的用途,但说不定以后某天会突然被赋予意义和被使用到,因此被保留下来的单词,goto和const就是Java的保留字。
Java关键字表
标识符
在程序中自定义的一些名称,它是有26个字母大小写,数字:0-9符号 _ $ 组成规定:
- 不能以数字开头
- 不可以使用关键字
- 见名知义
注释
注解 / 解析:用于注解说明解释程序的文字
-
Java的注释信息是给程序员看的,编译器(javac)在编译的时候会忽略掉源文件中的注释信息。为此,Java提供3种注释类型:
- 单行注释:
//
- 多行注释:
/* */
,多行注释不能嵌套多行注释。 - 文档注释:
/** */
,可以把注释的内容生成文档,java doc???
命令。
- 单行注释:
-
注释的其他用途:注释可以帮助解释说明一些代码;帮助缩小错误的范围,便于排查错误。
-
注意问题:
- 单行注释能嵌套单行注释,可以嵌套多行注释。
- 多行注释当中不能嵌套多行注释,多行注释当中可以嵌套单行注释。
- 注释不会编译到字节码文件。
反编译class字节码(JAD的使用)
- Win:Xjad(图形化界面)
- Mac:MacJad,用命令操作,配置到/usr/bin(全局command)。
- 反编译 class文件 为 jad文件:
jad filename
。 - 修改jad后缀为java。
- 反编译 class文件 为 jad文件:
进制
暂略!!!
- 各种进制的表示:
- 二进制整数:0B或0b开头(Java7的新特性),如:int a = 0B110;
- 八进制整数:要求以0开头,如 int a = 012;
- 十进制整数:如:int a = 17;
- 十六进制整数:要求0X或0x开头,如int a = 0x12;
常量
常量:程序中固定不变化的值。定义了就不能再去修改
- 整数常量
- 小数常量
- 布尔型常量
- 字符常量
- 字符串常量
- null常量
- 代码:常量.Constant.java
package 常量;
public class Constant {
public static void main(String[] args) {
/**
* print 打印不会换行
* println 打印时会换行
*/
System.out.print("Constant");
// 常量是固定的一个值
// 1. 整数常量
System.out.println(10);
// 2. 小数常量
System.out.println(10.10);
// 3. 字符常量,单引号只能包含一个字符
System.out.println('A');
// 4. 字符串常量
System.out.println("Hello");
// 5. 布尔类型常量 false:假,true:真
System.out.println(true);
// 6. null常量
// System.out.println(null);
}
}
- 整数常量的分类
- 二进制
- 八进制
- 十进制
- 十六进制
变量
- 定义变量:
数据类型 变量名 = 变量值;
- 代码:变量.Variable.java
package 变量;
public class Variable {
public static void main(String[] args) {
// 变量:其值可以改变的量,定义好之后,可以指代某一事物
// 数据类型 变量名(自己起的名称) = 变量值(指代某一事物);
int a = 10;
int b = 5;
// 需求:求两个数的加、减、乘、除
System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
System.out.println(a / b);
System.out.println();
System.out.println(a);
System.out.println(b);
a = 20;
b= 10;
System.out.println(a);
System.out.println(b);
System.out.println();
int c = 5;
System.out.println(c);
System.out.println();
// 注意事项
// 1.不能定义两个相同名称的变量
// int c = 5;
// 2.定义一个变量,但没有指向某一事物
// 没有初始化的变量是不能使用的
// int d;
}
}
数据类型
代码:变量.DataType.java
数据类型的分类
基本数据类型
-
整数类型:数值类型,byte、short、int、long类型
- Java语言的整型常量默认是int型,声明long型变量后加上‘l’或‘L’,因小写的l容易和数字1相混淆,建议使用大写L。
-
小数类型 / 浮点类型:数值类型,float, double
- Java语言的小数型常量默认是double型,声明float型变量后加上‘f’或‘F’,建议使用大写F。
-
字符类型(char):16位
-
布尔类型(boolean):8位
基本数据类型示意图
强制数据类型转换
int a = 10;//4byte
byte b = 2;//1byte
b = (byte)a;
System.out.println(b);//结果:10
- 注意:不建议使用,会造成数据的溢出。会造成数据的不正确性。
int a = 10;
byte b = 2;
//造成数据的不正确性。
b = (byte)a;
System.out.println(b); //结果:-56
自动数据类型转换
- 运算时,表达式两端的数据类型必须要保持一致。
- 如果运算都是数值类型,会自动把小的类型转换为大的类型。(自动类型转换)
- JVM在运算时,识别的最小数值类型为int。(byte, short 和 char 会自动提升为int类型)
short s2 = s + b;//等同于 short s2 = (int)s + (int)b;当然会报错
int s2 = (int)s + (int)b;//成功
- 字符类型:在运算时会自动转换为整数。
int i = 10;
char c = 'A';//A:65,a:97
System.out.println(c + i);
引用数据类型
-
String:使用双引号引起来。
-
字符串的拼接:无论什么类型与字符串进行拼接,就成为了字符串类型。
-
类(class)
-
接口(interface)
-
数组
运算符
算术运算符
+
, -
, *
, /
, %
和 ++
, --
- 注意
+
:字符串使用时,代表字符串的拼接/
:整数的除数不能为0
%
:符号由 被除数 决定
自增和自减运算符
++
和 --
- 必须要使用在变量的前后
- 表示当前操作变量自己 累积1 或 累减1
++
或--
写在变量前后的区别a++
:累加的结果 不参与本次运算(使用变量的原始值进行运算)++a
:累加的结果 参与本次运算(使用累加之后的值进行运算)
赋值运算符
=
, +=
, -=
, *=
, /=
和 %=
- 注意点
short s = 5;
s = s + 1;//报错,必须强转
s += 1;//自动转换,s = (short)(s + 1)
比较运算符
==
, !=
, >
, <
, >=
和 <=
- 比较运算符的结果是一个布尔类型
int a = 10;
int b = 11;
System.out.println(a>b);//false
三元运算符
- 格式:
逻辑表达式 ? 表达式1 : 表达式2
- 如果逻辑表达式为true,则返回表达式1的值。
- 如果逻辑表达式为false,则返回表达式2的值。
- 三元运算符的结果:要么是表达式1的值,要么是表达式2的值。
逻辑运算符
&
, |
, !
, ^
和 &&
, ||
- 逻辑运算符:要求操作数的数据类型为逻辑型,其运算结果也是逻辑型值。
- 代码:_06运算符.LogicOperator.java
与(&)
- 格式:
逻辑表达式1 & 逻辑表达式2
- 结果:如果两个表达式有一个为false,那么 与 的结果就为false。
- 如果两个表达式都为true,那么 与 的结果就为true。
或(|)
- 格式:
逻辑表达式1 | 逻辑表达式2
- 结果:如果两个表达式有一个为true,那么 或 的结果就为true。
- 如果两个表达式都为false,那么 或 的结果就为false。
非(!)
- 对一个布尔类型取反操作
- 格式:
!布尔类型
异或(^)
- 格式:
逻辑表达式1 ^ 逻辑表达式2
- 结果:相等 就是 false/0;不等 就是true/1
短路与(&&)
- 格式:
逻辑表达式1 && 逻辑表达式2
- 结果:
- 如果两个表达式有一个为false,那么 与 的结果就为false。
- 如果两个表达式都为true,那么 与 的结果就为true。
- 区别:
&
:会 去执行后面的表达式。&&
:只要发现了false,就不会再去执行后面的表达式了。
短路或(||)
- 格式:
逻辑表达式1 | 逻辑表达式2
- 结果:
- 如果两个表达式有一个为true,那么 或 的结果就为true。
- 如果两个表达式都为false,那么 或 的结果就为false。
- 区别:
|
:会 去执行后面的表达式。||
:只要发现了true,就不会再去执行后面的表达式了。
Java的逻辑运算符与Python的对比
逻辑运算符 | 与 | 或 | 非 | 异或 | 短路与 | 短路或 |
---|---|---|---|---|---|---|
Java | & |
| |
! |
^ |
&& |
|| |
Python | and |
or |
not |
位运算符
- 位运算:是以二进制位为单位进行的运算,其操作数和运算结果都是整型值。
Java的位运算符与Python的对比
位运算符 | 与 | 或 | 非 | 异或 | 左移 | 右移 | 无符号右移 |
---|---|---|---|---|---|---|---|
Java | & |
| |
~ |
^ |
<< |
>> |
>>> |
Python | & |
| |
~ |
^ |
<< |
>> |
运算符的优先级
优先级由上至下递减
Java与Python运算符比较
运算符种类 | 算术 | 比较 | 赋值 | 逻辑 | 位 | 成员 | 身份 | 三元 | instanceof |
---|---|---|---|---|---|---|---|---|---|
Java | ✅ | ✅ | ✅ | ✅(& , | , ! , ^ , && , || ) |
✅(Python五种 + >>> ) |
❌ | ❌ | ✅ | ✅ |
Python | ✅ | ✅ | ✅ | ✅(and , or , not ) |
✅(& , | , ~ , ^ , << , >> ) |
✅(in , not in ) |
✅(is , is not ) |
❌(三元表达式) | ❌ |
流程语句
顺序结构
默认顺序执行
选择结构
- if
- if_else
- if_elseif_else
- switch
循环结构
- while
- do_while
- for
break, continue 和 return
-
break:跳出本层循环。可以跳出指定的循环层。
-
continue:跳过本次循环,继续执行之后的循环。
-
return:跳出方法,方法内的后续代码不再执行。
-
代码:
- 循环结构.Return.java
- 循环结构.OutterBreak.java