一、标识符
凡是自己明明的地方都叫标识符。例如:包名、类名、接口名、方法名、变量名、常量名
注意点: 在起名字时,为了提高阅读性,要尽量意义,“见名知意”。
关键字:被 Java 赋予了特殊含义的单词
保留字:现Java版本尚未使用,但以后版本可能会作为关键字使用。
具体哪些保留字:goto 、const
注意:自己命名标识符时要避免使用这些保留字
1、命名的规则(必须遵守,若不遵守编译不能通过)
①只能有字母 a-z A-Z 数字 0-9 特殊字符 “_” 下划线 和 “$” 美元符
②数字不能开头
③名字之间不能有空格
④不能使用关键字和保留字,但是可以包含关键字和保留字
⑤Java 严格区分大小写,但是长度无限制
2、命名的规范(可以不遵守,但是会受到鄙视)
①包名:所有字母都小写。 如: xxxyyyzzz
②类名、接口名:若有多个单词组成,每个单词首字母都大写。 如:XxxYyyZzz
③方法名、变量名:若有多个单词组成,第一个单词首字母小写,其余单词首字母都大写。 如:xxxYyyZzz
④常量名:所有字母都大写,每个单词之间以 “_” 隔开。 如:XXX_YYY_ZZZ
二、变量
保存数据
变量:局部变量 & 成员变量
1、变量的格式
数据类型 变量名 = 值;
如: int var = 10;
//声明一个变量
int var;
//为变量赋值
var = 10;
2、变量的概念
①在内存中开辟一块内存空间
②该空间有类型(数据类型)有名称(变量名)
③变量可以在指定的范围内不断的变化
3、变量的注意
①在同一个作用范围内变量名不能重复
②作用域:变量作用在所属的那对 {} 内
③局部变量在使用前必须赋值
④先声明,后使用
三、进制之间的转换(了解)
四、变量的数据类型
1、基本数据类型
整型:byte(8位) short(16位) int(32位)-默认类型 long(64位)
浮点型:float(32位) double(64位)-默认类型
字符型:char(16位-2个字节)
布尔型:boolean
2、引用数据类型
|–类(class) ------------------- String
|–接口(interface)
|–数组([])
3、声明变量的注意
①声明 long 型变量,值后必须加 L 或 l 。 如:long l1 = 1234345784L;
②声明 float 型变量,值后必须加 F 或 f 。 如:float f1 = 15.6F;
③声明 double 型变量,值后可以加 D 或 d 。如:double d1 = 15.6; double d2 = 15.6D;
④声明 char 型变量,值必须使用单引号,char 型变量只能存储单个字符。
char 型变量使用 Unicode 编码存储(ASCII、中文、日文、特殊字符)
如:
char c1 = ‘A’;
char c2 = ‘中’;
char c3 = ‘$’;
char c4 = ‘\uC499’;
⑤声明 String 型变量,值必须使用双引号。 如: String str = “我大尚硅谷威武!”;
五、数据类型之间的转换
自动类型转换(自动升级)
小容量转大容量。系统自动完成
如:
byte b = 123;
int i = b; //自动类型转换
①byte short char ----> int ----> long ----> float ----> double
②byte short char 三者之间不做运算,若运算都将提升成 int 再做运算
③boolean 不参与运算
④任何基本数据类型与 String 使用 连接符 + , 都将自动串接成 String
强制类型转换
大容量转小容量。需要使用强转符 “(需要转换的类型)”,可能损失精度。
如:
int a = 130;
byte b = (byte)a;
六、运算符
算数运算符
+ - + - * / % (前)++ (后)++ (前)-- (后)-- +(连接符)
//除法
System.out.println(1234 / 1000 * 1000); //1000
//取模(求余)
System.out.println(10 % 5);
//++运算符
int a = 10;
//前++
System.out.println(++a);//11
//后++
System.out.println(a++);//11
System.out.println(a);//12
【面试题】
int a = 10;
a = a++;
System.out.println(a);//10
赋值运算符
= += -= *= /= %=
int a = 10;
a += 10; //a = a + 10;
【面试题】
short s = 1;
s = s + 1; //编译? NO
s += 1; //s = (short)(s + 1)编译? YES
比较运算符(关系运算符)
比较运算符运算结果都为 boolean
== != > < >= <=
int a = 10;
int b = 20;
boolean boo = a == b;
逻辑运算符
逻辑运算符结果都为 boolean
&& (短路与) || (短路或) !(逻辑非) &(逻辑与) |(逻辑或) ^(逻辑异或)
//需求:判断一个数是不是大于10小于20
int a = 10;
//错误的做法
//boolean boo = 10 < a < 20;
//逻辑运算符
boolean boo = a > 10 && a++ < 20;
System.out.println(a);//10
【面试题】&& 和 & 的区别?
&& : 短路与,当 && 左边表达式结果为 false 时,右边表达式将不再计算
&:是位运算符,当用于逻辑运算时,无论左边表达式结果为 true 还是 false ,右边都计算
|| 和 | 的区别?
位运算符
~ & | ^ << >> >>> 注意:没有 <<<
三元运算符(三目运算符)
格式:
条件表达式 ? 表达式1 : 表达式2;
①条件表达式结果为 true 时,执行表达式1,否则执行表达式2
②表达式1与表达式2结果的类型需要保持一致!
int a = 10;
int b = 20;
int max = a > b ? a : b;
一、流程控制
顺序结构
Java 程序的运行时顺序执行
分支结构
条件判断
①
if(条件表达式){
//若条件表达式结果为 true 时,需要执行的语句
}
②
if(条件表达式){
//若条件表达式结果为 true 时,需要执行的语句
}else{
//若条件表达式结果为 false 时,需要执行的语句
}
③
if(条件表达式1){
//若条件表达式1 结果为 true 时,需要执行的语句
}else if(条件表达式2){
//若条件表达式2 结果为 true 时,需要执行的语句
}else if(条件表达式3){
//若条件表达式3 结果为 true 时,需要执行的语句
}
……
else{
//若上述条件表达式结果都为 false 时,需要执行的语句
}
注意:
①若某个条件表达式结果为 true ,执行相应语句,其他 else if 不再执行
②if-else 语句可以嵌套的
选择结构
结果为 true 时,需要执行的语句
}
②
if(条件表达式){
//若条件表达式结果为 true 时,需要执行的语句
}else{
//若条件表达式结果为 false 时,需要执行的语句
}
③
if(条件表达式1){
//若条件表达式1 结果为 true 时,需要执行的语句
}else if(条件表达式2){
//若条件表达式2 结果为 true 时,需要执行的语句
}else if(条件表达式3){
//若条件表达式3 结果为 true 时,需要执行的语句
}
……
else{
//若上述条件表达式结果都为 false 时,需要执行的语句
}
注意:
①若某个条件表达式结果为 true ,执行相应语句,其他 else if 不再执行
②if-else 语句可以嵌套的
选择结构
switch-case选择结构
switch(表达式){
case 常量1:
执行语句1;
//break;
case 常量2:
执行语句2;
//break;
…
default:
执行语句n;
//break;
}
2.说明:
① 根据switch表达式中的值,依次匹配各个case中的常量。一旦匹配成功,则进入相应case结构中,调用其执行语句。
当调用完执行语句以后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构
末尾结束为止。
② break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构
③ switch结构中的表达式,只能是如下的6种数据类型之一:
byte 、short、char、int、枚举类型(JDK5.0新增)、String类型(JDK7.0新增)
④ case 之后只能声明常量。不能声明范围。
⑤ break关键字是可选的。
⑥ default:相当于if-else结构中的else.
default结构是可选的,而且位置是灵活的。
3.如果switch-case结构中的多个case的执行语句相同,则可以考虑进行合并。
4.break在switch-case中是可选的
循环结构
重复的执行某语句
①初始化值
②循环条件
③迭代条件
④循环体
for 循环:
for( ①; ② ; ③){
④
}
执行流程:①②④③②……②
while 循环:
①
while(②){
④
③
}
do-while 循环:
①
do{
④
③
}while(②);
while 和 do-while 的区别?
while : 先判断循环条件,再执行循环体
do-while :先执行循环体,再判断循环条件,do-while 至少执行一次
嵌套循环
一个循环充当另一个循环的循环体
/*
1—100之间的所有质数:除了1和其本身,不能被其他自然数整除的数
*/
class PrimeNumber {
public static void main(String[] args) {
boolean flag = true;
for(int i = 2; i <= 100; i++){
for(int j = 2; j < i; j++){
if(i % j == 0){
//该数一定不是质数
flag = false;
break;
}
}
//可以确定 i 是否是质数,是质数打印。
if(flag){
System.out.println(i);
}
flag = true;
}
}
}
二、特殊流程控制语句
break :用于结束“当前”循环。可以使用在 switch-case 语句中,用于结束当前 switch-case 语句
continue :用于结束“当次”循环。
for(int i = 0; i <= 10; i++){
if(i == 3){
//break;
continue;
}
System.out.println(i);
}
label:for(int i = 0; i <= 10; i++){
for(int j = 0; j <= 10; j++){
if(j == 3){
//break label;
continue label;
}
}
}
label:{//continue 不支持结束代码块
for(int i = 0; i <= 10; i++){
for(int j = 0; j <= 10; j++){
if(j == 3){
break label;
}
}
}
System.out.println("Hello Break!");
}