文章目录
关键字keyword和保留字reserved word
keyword:有特殊含义,所有字母都是小写
reserved word:以后可能成为关键字,如goto、const
标识符Identifier
定义:对变量、方法和类等要素命名时使用的字符序列。
构成:由26个英文字母、0~9、_或$构成。数字不可以开头。不能是关键字或保留字。
注:java使用unicode字符集,标识符可用汉字但不建议。
规范:
- 包名
xxxyyyzzz - 类名、接口名
XxxYyyZzz - 变量名、方法名
xxxYyyZzz - 常量名
XXX_YYY_ZZZ
变量
变量:程序中最基本的存储单元,包含变量类型、变量名和存储的值。
数据类型
- 基本数据类型
数值型(整数类型byte \ short \ int \ long,浮点类型float \ double)、字符型(char)、布尔型(boolean) - 引用数据类型
类(class)、接口(interface)、数组([ ])
整数类型
1byte = 8bit 表示-128~127。
1short占2byte,表示-215~215-1;
1int占4byte,表示-231~231-1(约21亿),最常用;
1long占8byte,表示-263~263-1,以“l”或“L”结尾。
浮点类型
float:单精度,尾数可以精确到7位,4byte,范围比long还大,以“f”或“F”结尾。
double:双精度,精度是float的两倍,8byte,最常用。
字符型
1char占2byte,如’a’。
转义字符,如’\n’表示换行符、’\t’表示制表符。
可以直接使用Unicode值,如char c = ‘\u0043’表示’C’。
编码
ASCII码:a是97,A是65。8bit表示256个符号,ASCII码规定了其中128个符号的编码。
Unicode:世界符号。
UTF-8:Unicode的一种实现方式。
布尔型
boolean:true或false
类型转换(不包含boolean)
整型默认int,浮点型默认double
- 自动
类型提升:byte、char、short --> int -->long --> float --> double - 强制
用强转符(),如 (int)a。
可能有精度损失。
String
为引用数据类型:
String s1 = "Hello World!";
String类型可与8种数据类型做连接运算:+
进制
进制:binary\decimal\octal\hex
开头:0b或0B\(无)\0\0x或0X
运算符
注:只记录容易忘记的。
逻辑运算符:&, &&, |, ||, !, ^(不同是ture).
&:逻辑与
&&:短路与
位运算符:
3 << 2 = 12
>>, >>>(始终补0), &, |, ^, ~
三元运算符
int m = 1;
int n = 2;
int max = (m > n) ? m : n
运算符优先级
百度百科:运算符优先级
最好加括号。
流程控制
if-else
int age = 26;
if (age < 0) {
System.out.println("输入非法");
} else if (age < 18) {
System.out.println("未成年");
} else {
System.out.println("已成年");
}
Scanner输入数据
import java.util.Scanner;
class ScannerTest {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String name = scan.next();
int age = scan.nextInt();
double weight = scan.nextDouble();
boolean isLove = scan.nextBoolean();
String gender = scan.next();
Char genderChar = gender.charAt(0);
}
}
switch-case
int number = 0;
switch (number) { // byte, short, char, int, 枚举类型(JDK5.0新增), String类型(JDK7.0新增)
case 0:
System.out.println("zero");
break; // 不加break继续向下执行
case 2:
System.out.println("two");
break;
default: // 位置是灵活的,相当于最后的else,放在哪都可能执行。
System.out.println("others");
}
for
for (int i = 1; i <= 5; i++) {
System.out.println(i);
}
while
int i = 1;
while (i <= 5) { // 可能不会执行循环体
System.out.println(i);
i++;
}
int j = 1;
do { // 至少执行一次循环体
System.out.println(j);
j++;
} while (j <= 5)
一直循环
Scanner scan = new Scanner(System.in);
int positiveNumber = 0;
int negativeNumber = 0;
while (true) { // 相当于for (;;) {
int number = scan.nextInt();
if (number > 0) {
positiveNumer++;
} else if (number < 0) {
negativeNumber++;
} else {
break;
}
}
break\continue label
label: for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 10; j++) {
if (j % 4 == 0) {
continue label;
}
if (i == 3) {
break label;
}
}
}