一.关键字&标识符
1.关键字:被java语言赋予特殊含义的字符串(或单词),
2.保留字:被java语言占用,但是还没有具体含义。关键字保留字都小写
3.标识符:凡是可以自己命名的地方,都是标识符。
定义合法标识符规则:
>由26个英文字母大小写,0-9 ,_或 $ 组成
>数字不可以开头。
>不可以使用关键字和保留字,但能包含关键字和保留字。
>Java中严格区分大小写,长度无限制。
>标识符不能包含空格。
4.java命名规范
包名:多单词组成时所有字母都小写:xxxyyyzzz
类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz(驼峰)
常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
在起名字时,为了提高阅读性,要尽量有意义,“见名知意”。
二.变量
1.变量的声明格式:数据类型 变量名 = 初始化值; 必须先声明后使用,都有其作用域。
2.变量类型的分类
3.每种数据类型的使用
1).整型 : byte(1字节) short(2字节) int(4字节) long(8字节) 一般使用int型
byte b1 = 127;
b1 = 128;//编译不通过,超出了byte的取值范围
定义一个long型的变量,以"l"或者"L"结尾 long l = 1243124L;
2)浮点型:float(4字节) double(8字节),表示带小数的数值
比较常用的是double double d1 = 123.3;
定义float型变量时,需要末尾添加"f"或者"F" float f1 = 123.2f;
3)boolean型:取值只有两个:true 或 false。不能取值为null
4)字符型:char(2字节)
一个char型变量,表示一个字符
char c1 = 'a';
char c2 = 'ab';//编译不通过
char c3 = '1';
char c4 = '中';
char c5 = '\n'; c5 = '\t'; //转义字符
System.out.println("abcd" + c5 + "def");
char c6 = '\u1234'; //用的不多
System.out.println("c6:" + c6);
4.变量间的运算
①自动类型提升:容量小(表数范围)的变量与容量大的变量间做运算,结果的数据类型与容量大的变量的类型一致。
byte、short、char ---> int --->long---->float----> double
当byte\short\char三者之间的变量做运算的话,结果都为int型。
②强制类型转换:是自动类型提升的逆过程:将容量大的数据类型的变量转换为容量小的数据类型的变量
使用强制类型转换符:()
double d1 = 123.3;
int i = (int)d1;//123
byte b = (byte)i;
注意:强转时,可能会导致精度损失。
三.运算符
1. 算术运算符:+(正) -(负) + - * / % (前)++ (后)++ (前)-- (后)-- +(字符串连接运算)
1) int i = 12;
int j = i / 5;
System.out.println(j);//2
2)取模运算与被模数符号一样。
int i = 12;
int j = 3;
if(i % j == 0){....}
3)(前)++ :先+1,后运算
(后)++:先运算,后+1
2.赋值运算符: = += -= *= /= %=
运算结果不改变原有变量的数据类型:
int i = 12;
i += 10;//i = i + 10;
short s = 10;
s += 2;//s = (short)(s + 2);
int m = 12;
m *= 0.1;//编译能通过。
m = m * 0.1;//编译不通过
3.比较运算符(关系运算符): == > < >= <= intanceof
>比较运算符的结果都为boolean类型!
>通常使用在条件判断和循环语句中
4.逻辑运算符 且: & && 或: | || ! ^
>运算符处理的都是boolean类型的变量
>& 与 && 区别:当符号左边是false时,& 继续执行右边的运算;&& 不再执行右边的运算
>| 与 || 区别:当符号左边是true时,| 继续执行右边的运算;|| 不再执行右边的运算
>开发时,常用&& 和 ||
5.位运算符: << >> >>> & | ^ ~
>处理的是数值型的变量
>在一定范围内,左移一位,相当于这个数值 * 2。
int i = 6;
int j = ~i; //-7
6.三元运算符:(条件表达式)? 表达式1 : 表达式2
注:1.表达式1和表达式2的类型要一致
2.表达式1和表达式2的类型,决定了运算符的类型
3.凡是使用三元运算符的操作都可以转换为if-else结构。反之不成立.
如果二者都可以使用的情况下,建议使用三元运算符,效率高。
四.流程控制
1.分支结构
if(){}else{} if(){}else if(){}...else{}
1).如果多个条件表达式是"互斥"关系,那么执行结构谁上谁下都可以。
如果多个条件表达式是"包含"关系,要求将范围小的写在范围大的上面
2)如果条件判断的执行语句只有一行的话,可以省略一对{}.建议不省略
switch(变量){
case 值1:
语句1;
break;
...
default:
语句;
}
1)default:可选的,同时位置是灵活的。
2)switch中的变量只能是如下的类型之一:byte short int char 枚举类 String(JDK1.7新加入的)
3)使用switch-case的结构都能转换为if-else结构。反之,不成立
4)如果switch-case和if-else结构都可以使用,建议使用switch-case,因为效率高
5)case中只能写取值(常量),不能表示范围
2.循环结构
1. 循环结构的4个要素:
①初始化条件
②循环条件(是boolean类型的结果)
③循环体
④迭代条件
2.三种循环结构:
for(①;②;④){
③
}
①
while(②){
③;
④;
}
①
do{
③;
④;
}while(②);
注:三种循环间都可以相互转换
区别:①for循环的初始化条件执行完循环以后就不可再在循环外调用。而while循环的初始化条件在循环结束以后,初始化变量声明所在的{}内还可以被调用
②do-while至少会被执行一次。
3.两个特殊的循环结构:
while(true) 或者 for(;;)
第一种情况:当某次执行时,②循环条件返回false,进而结束当前循环
第二种情况:在循环结构内,执行到break语句,调出当前循环。
明确:若循环结构没有出现上述两种情况之一,那这个循环就是死循环!
死循环是我们写程序要避免的!
五.break和continue关键字的使用
break:①可以使用在switch-case或者循环结构中
②:如果在循环结构中使用:结束当前循环结构(默认结束的是离break最近的循环结构)
continue:①只能使用在循环结构中
②:如果在循环结构中使用:结束当次循环(默认结束的是离break最近的循环结构)
说明:在break和continue关键字后面不能有任何的操作语句。否则编译不通过。