注释 | |
---|---|
单行注释 | 以// 开头,后面的单行内容均为注释 |
多行注释 | 以/* 开头以*/ 结尾,之间的内容为注释 |
文档注释 | 以/** 开头以*/ 结尾,之间的内容为注释 |
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; } }
类型 | 占用存储空间 | 表数范围 |
---|---|---|
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
类型 | 占用存储空间 | 表数范围 |
---|---|---|
float | 4字节 | -3.403E38~3.403E38 |
double(默认类型) | 8字节 | -1.798E308~1.798E308 |
浮点类型的表示形式:
十进制数形式,例如:3.14,314.0,0.314
科学记数法形式,如314e2,314E2,314E-2
char字符型在内存中占2个字节,在Java中使用单引号来表示字符常量。
转义符 | 含义 | Unicode值 |
---|---|---|
\b | 退格(backspace) | \u0008 |
\n | 换行 | \u000a |
\r | 回车 | \u000d |
\t | 制表符(tab) | \u0009 |
\“ | 双引号 | \u0022 |
\‘ | 单引号 | \u0027 |
\ | 反斜杠 | \u005c |
boolean类型有两个常量值,true和false,在内存中占一位(不是一个字节)。
自动类型转换:容量小的类型自动转换为容量大的数据类型。
强制类型转换:容量大的数据类型转换为容量小的数据类型。
【数据类型按容量大小排序为】
运算符 | |
---|---|
+,-,*,/,% | 一元运算符 |
++,-- | 二元运算符 |
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 } }
运算符 | 用法举例 | 等效的表达式 |
---|---|---|
+= | 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 |
运算符 | 含义 | 示例 |
---|---|---|
== | 等于 | a==b |
!= | 不等于 | a!=b |
> | 大于 | a>b |
< | 小于 | a<b |
>= | 大于或等于 | a>=b |
<= | 小于或等于 | a<=b |
运算符 | 含义 |
---|---|
&(逻辑与) | 两个操作数为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)
位运算指的是进行二进制位的运算。
位运算符 | 说明 |
---|---|
~ | 取反 |
& | 按位与 |
| | 按位或 |
^ | 按位异或 |
<< | 左移运算符,左移1位相当于乘2 |
>> | 右移运算符,右移1位相当于除2取商 |
int a=3<<2; //相当于:3*2*2,结果为12 int b=24>>2; //相当于:24/2/2,结果为6
x ? y : z
其中 x 为 boolean 类型表达式,先计算 x 的值,若为true,则整个运算的结果为表达式 y 的值,否则整个运算结果为表达式 z 的值。
优先级 | 运算符 | 类 |
---|---|---|
1 | () | 括号运算符 |
2 | !、+(正号)、-(负号) | 一元运算符 |
2 | ~ | 位逻辑运算符 |
2 | ++、-- | 递增与递减运算符 |
3 | *、/、% | 算术运算符 |
4 | +、- | 算术运算符 |
5 | <<、>> | 位左移、右移运算符 |
6 | >、>=、<、<= | 关系运算符 |
7 | ==、!= | 关系运算符 |
8 | & | 位运算符、逻辑运算符 |
9 | ^ | 位运算符、逻辑运算符 |
10 | | | 位运算符、逻辑运算符 |
11 | && | 逻辑运算符 |
12 | || | 逻辑运算符 |
13 | ? : | 条件运算符 |
14 | =、+=、-=、*=、/=、%= | 赋值运算符、扩展运算符 |
if(布尔表达式){ 语句块 }
if(布尔表达式){ 语句块1 }else{ 语句块2 }
if(布尔表达式1) { 语句块1; } else if(布尔表达式2) { 语句块2; }…… else if(布尔表达式n){ 语句块n; } else { 语句块n+1; }
switch (表达式) { case 值1: 语句序列1; [break]; case 值2: 语句序列2; [break]; … … … … … [default: 默认语句;] }
while 语句:先判断,后循环。
while (布尔表达式) { 循环体; }
do-while 语句:先循环,后判断。
do { 循环体; } while(布尔表达式) ;
for循环是while循环简化版。
for (初始表达式; 布尔表达式; 迭代因子) { 循环体; }
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); //输出循环的次数 } }
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); } } }