一、注释
注释 | |
---|---|
单行注释 | 以// 开头,后面的单行内容均为注释 |
多行注释 | 以/* 开头以*/ 结尾,之间的内容为注释 |
文档注释 | 以/** 开头以*/ 结尾,之间的内容为注释 |
package com.test.java;
/**
* 文档注释
* @author 林
*
*/
public class Test{
/*
* 多行注释
* */
public static void main(String[] args){
System.out.println("Hello Java"); //单行注释
}
}
二、变量
变量分类 | 声明位置 | 从属于 |
---|---|---|
局部变量 | 方法或语句块内部 | 方法/语句块 |
成员变量(实例变量) | 类内部,方法外部 | 对象 |
静态变量(类变量) | 类内部,static修饰 | 类 |
public class Test {
String com="SL"; //成员变量
static int size; //静态变量
public static void main(String[] args) {
String name; //局部变量
int age;
}
}
三、数据类型
3.1 整型
类型 | 占用存储空间 | 表数范围 |
---|---|---|
byte | 1字节 | -27 ~ 27-1(-128~127) |
short | 2字节 | -215 ~ 215-1(-32768~32767) |
int(默认类型) | 4字节 | -231 ~ 231-1 (-2147483648~2147483647)约21亿 |
long | 8字节 | -263 ~ 263-1 |
整型常量的表示形式:
-
十进制整数,如:99, -500, 0
-
八进制整数,要求以 0 开头,如:015
-
十六进制数,要求 0x 或 0X 开头,如:0x15
-
二进制数,要求0b或0B开头,如:0b01110011
3.2 浮点型
类型 | 占用存储空间 | 表数范围 |
---|---|---|
float | 4字节 | -3.403E38~3.403E38 |
double(默认类型) | 8字节 | -1.798E308~1.798E308 |
浮点类型的表示形式:
-
十进制数形式,例如:3.14,314.0,0.314
-
科学记数法形式,如314e2,314E2,314E-2
3.3 字符型
char字符型在内存中占2个字节,在Java中使用单引号来表示字符常量。
转义符 | 含义 | Unicode值 |
---|---|---|
\b | 退格(backspace) | \u0008 |
\n | 换行 | \u000a |
\r | 回车 | \u000d |
\t | 制表符(tab) | \u0009 |
\“ | 双引号 | \u0022 |
\‘ | 单引号 | \u0027 |
\ | 反斜杠 | \u005c |
3.4 布尔型
boolean类型有两个常量值,true和false,在内存中占一位(不是一个字节)。
3.5 类型转换
自动类型转换:容量小的类型自动转换为容量大的数据类型。
强制类型转换:容量大的数据类型转换为容量小的数据类型。
【数据类型按容量大小排序为】
- 有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。
- byte, short, char之间不会相互转换,他们三者在计算时首先转换为int类型。
- boolean类型不能与其它数据类型运算。
- 基本数据类型与字符串进行连接运算,基本数据类型自动转换位字符串类型。
四、运算符
4.1 算术运算符
运算符 | |
---|---|
+,-,*,/,% | 一元运算符 |
++,-- | 二元运算符 |
public class Test {
public static void main(String[] args) {
int a,b,c,d;
a=3;
b=a++; // 先赋值后计算
System.out.println(a); //a=4
System.out.println(b); //b=3
System.out.println("--------------------");
c=3;
d=++c; // 先计算后赋值
System.out.println(c); //c=4
System.out.println(d); //d=4
}
}
4.2 赋值运算符
运算符 | 用法举例 | 等效的表达式 |
---|---|---|
+= | a += b | a = a+b |
-= | a -= b | a = a-b |
*= | a *= b | a = a*b |
/= | a /= b | a = a/b |
%= | a %= b | a = a%b |
4.3 关系运算符
运算符 | 含义 | 示例 |
---|---|---|
== | 等于 | a==b |
!= | 不等于 | a!=b |
> | 大于 | a>b |
< | 小于 | a<b |
>= | 大于或等于 | a>=b |
<= | 小于或等于 | a<=b |
4.4 逻辑运算符
运算符 | 含义 |
---|---|
&(逻辑与) | 两个操作数为true,结果才是true,否则是false |
|(逻辑或) | 两个操作数有一个是true,结果就是true |
&&(短路与) | 只要有一个为false,则直接返回false |
||(短路或) | 只要有一个为true, 则直接返回true |
!(逻辑非) | 取反:!false为true,!true为false |
^(逻辑异或) | 相同为false,不同为true |
boolean c = 1>2 && 2>(3/0); //不计算2>(3/0)
boolean d = 1>2 & 2>(3/0); //需计算2>(3/0)
4.5 位运算符
位运算指的是进行二进制位的运算。
位运算符 | 说明 |
---|---|
~ | 取反 |
& | 按位与 |
| | 按位或 |
^ | 按位异或 |
<< | 左移运算符,左移1位相当于乘2 |
>> | 右移运算符,右移1位相当于除2取商 |
int a=3<<2; //相当于:3*2*2,结果为12
int b=24>>2; //相当于:24/2/2,结果为6
4.6 条件运算符
x ? y : z
其中 x 为 boolean 类型表达式,先计算 x 的值,若为true,则整个运算的结果为表达式 y 的值,否则整个运算结果为表达式 z 的值。
4.7 运算符优先级
优先级 | 运算符 | 类 |
---|---|---|
1 | () | 括号运算符 |
2 | !、+(正号)、-(负号) | 一元运算符 |
2 | ~ | 位逻辑运算符 |
2 | ++、-- | 递增与递减运算符 |
3 | *、/、% | 算术运算符 |
4 | +、- | 算术运算符 |
5 | <<、>> | 位左移、右移运算符 |
6 | >、>=、<、<= | 关系运算符 |
7 | ==、!= | 关系运算符 |
8 | & | 位运算符、逻辑运算符 |
9 | ^ | 位运算符、逻辑运算符 |
10 | | | 位运算符、逻辑运算符 |
11 | && | 逻辑运算符 |
12 | || | 逻辑运算符 |
13 | ? : | 条件运算符 |
14 | =、+=、-=、*=、/=、%= | 赋值运算符、扩展运算符 |
五、控制语句
5.1 if 语句
if(布尔表达式){
语句块
}
5.2 if-else语句
if(布尔表达式){
语句块1
}else{
语句块2
}
5.3 if-else-if-else 语句
if(布尔表达式1) {
语句块1;
} else if(布尔表达式2) {
语句块2;
}……
else if(布尔表达式n){
语句块n;
} else {
语句块n+1;
}
5.4 switch 语句
switch (表达式) {
case 值1:
语句序列1;
[break];
case 值2:
语句序列2;
[break];
… … … … …
[default:
默认语句;]
}
5.5 while语句
while 语句:先判断,后循环。
while (布尔表达式) {
循环体;
}
5.6 do-while 语句
do-while 语句:先循环,后判断。
do {
循环体;
} while(布尔表达式) ;
5.7 for 语句
for循环是while循环简化版。
for (初始表达式; 布尔表达式; 迭代因子) {
循环体;
}
5.8 break语句
break语句:于强行退出循环,不执行循环中剩余的语句。
public class Test{
public static void main(String[] args){
int sum=0;
while(true) {
sum++;
int i=(int)Math.round(100*Math.random());
if(i==88) {
break;
}
}
System.out.println(sum); //输出循环的次数
}
}
5.9 continue语句
continue语句:跳过循环体中尚未执行的语句,返回到是否执行循环的判定。
public class Test{
public static void main(String[] args){
int sum=0;
for(int i=1;i<100;i++) {
if(i%3!=0) {
continue;
}
sum++;
}
System.out.println(sum); //统计被3整除数量
}
}
六、语句块
语句块:是用花括号扩起的任意数量的简单Java语句。
public class Test {
public static void main(String[] args) {
int n;
int a;
{ //语句块
int k;
int n; //编译错误:不能重复定义变量n
} //变量k的作用域到此为止
}
}
七、递归结构
递归的基本思想就是“自己调用自己”。
递归结构包括两个部分:定义递归头与递归体。
package com.test.java;
public class Test {
public static void main(String[] args) {
System.out.println(factorial(5));
}
static long factorial(int n) {
if(n==1) { //递归头
return 1;
}else { //递归体
return n*factorial(n-1);
}
}
}