1.关键字
Java的关键字对Java的编译器有特殊的意义,用来表示一种数据类型, 或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名和参数,关键字都是小写的
2.标识符
- 标识符是用来给类、对象、方法、变量、接口和自定义数据类型命名的
- Java标识符由数字,字母和下划线(_),美元符号($)或人民币符号(¥)组成
- 在Java中是区分大小写的,而且还要求首位不能是数字
- Java关键字不能当作Java标识符
3.注释:
3.1 单行注释//
3.2 多行注释/* */
3.3 文档注释/** */注释内部文字可以提取成文档说明书
4.常量和变量:
常量:
整数常量:所有整数
小数常量:所有小数
布尔常量:true,false
null常量:null
字符常量:将一个字母或数字加单引号标识' a '
字符串常量:将一个或多个字符用双引号标识" abc "
注意区分空字符串" "和null区别
进制:
二进制,八进制用O开头表示,十进制,十六进制用Ox开头表示
1字节byte = 8个bit(二进制位)
1k = 1024
3个二进制位表示一个8进制位
4个二进制位表示一个16进制位
ipv4地址就是由四个字节组成,每段一个字节,比如192.130.1.100
现已升级到ipv6,每段融入字母
负数的二进制位表现:
绝对值的二进制取反加1,负数的二进制位的最高位是1
变量:
必须被初始化,并且只在自己的作用域有意义,在内存中建立一个变量空间,离开作用域空间就被释放了
1.定义:
内存中的一个存储区域,有自己的名称和数据类型(java的强类型约束该空间只能存
一种类型数据),该区域数据在同一类型范围内不断变化
2.作用:
用来不断存放同一类型变量,并可以重复使用这段空间
3.什么时候用:
一旦数据不确定就使用变量
变量声明后必须初始化值,并且有自己作用范围,只在自己作用域有效,进行运算时两边类型
必须一致,类型不一致内存空间就不一致。若两边是数值型,可以做自动类型提升,进行类
型转化,以占用内存空间较大的为主
数据类型:
Java是强类型语言,每种数据都定义了明确的数据类型,在内存中分配了大小不同的内存空间
(1).基本数据类型:
整数默认int,小数默认double
a.数值型:
整数型:
byte:8个二进制位
short:16个二进制位
int:32个二进制位
long:64个二进制位, 长整型后面要加l,
long l = 123l;非默认使用要加符号
浮点型:
float:单精度4个字节
double:双精度8个字节
b.字符型:可以中文(两个字节)
c.布尔型
(2).引用数据类型
容易犯的错误:
1. byte b = 3;
b = b + 4;会出现丢失精度,
4是int型,b是byte型,b + 4时进行了自动类型提升使得b + 4 的结果是int型,而
等号左边的b是byte型,把int型往byte型赋值,必然出现损失精度,若想进行赋值需要
进行强制类型转换 b = (byte)(b + 4),强制转换要慎用,会丢失精度
2. float也是4个字节,4个字节中存在小数位,float和int进行相加时结果仍是float型
‘a’ + 1 = 98
a 对应ASCII表97
Unicode国际标准表识别中文
负数字节最高位是1
3. 整数默认int类型
byte b = 4;
byte b = 3 + 7; 可以
byte b1 = 3;
byte b2 = 7;
b = b1 + b2; 不可以;右边是变量运算结果不确定且可能超出范围,
Java是强类型语言,右边值不确定检查类型时检查不出来就会报错,这
种情况一般出现在整型的多字节往少字节赋值,比如b1 = 127;
若定义int x; x = b1 + b2;无论byte型的b1和b2如何赋值不可能超出int范围
5.运算符:
1.算数运算符: + - * / % +(连接符) ++ --
/运算注意,6370 / 1000 = 6;
%运算涉及到负号,负号只参考被模数
任何数据只要和字符串相加都是相连接,3 + ‘2’得字符串’32’
举例:
Int a = 4, b = 5;
打印a ,b 的值System.out.println(a + ‘,’ + b);
System.out.println(“a =” + a + “, b =” + b);
int a = 3, b;
b = a++; 在内存中的过程是先把a当前值取出,在内存中临时存储,然后a进行自增
运算,然后将内存中先前临时存储的a的值赋给b,所以最后a = 4; b = 3;实际上就是
运算顺序的问题,若b = ++a;就不需要先临时存储,a = 4, b = 4;
int i = 3;
i = i++;
输出i = 3,
2.赋值运算符: =, +=, -=, *=, /=, %=;
举例:
short s = 3;
s += 4;做自动类型转换
s = s + 4;会报错,应写成s = (short)(s + 4);
3.比较运算符:
运算完的结果必须是true和false
4.逻辑运算符:
& | !
用于连接两个布尔类型的表达式
&& 和 & 区别:
&:无论左边运算结果是什么,右边都参与运算
&& : 当左边结果为false时,右边不参与运算
| 和 || 区别:
| :无论左边运算结果是什么,右边都参与运算
|| : 当左边结果为true时,右边不参与运算
5.位运算符:
所谓位运算是二进制计算
&:任何数&1都是本身
| :是有效位,或运算可以将有效位保留
异或 ^ 不同得1,一个数异或同一个数两次,结果还是这个数
<< : 二进制位向左移,空位补0,左移一位数扩大二倍
左移可以完成2的次幂乘运算
>> : 二进制位向右移,右移一位变为原本一半,对于高位出现的空位原来高位是啥就补啥
右移可以完成2的次幂除运算
>>>:无符号右移:数据右移时,高位出现的空位,无论原符号是什么都用0补
应用:
运算比较高效直接用位运算,最有效计算2 * 8是2 << 3
对两个整数变量进行互换(第三方变量):
int a = 3,b = 5;
a = a ^ b,
b = a ^ b,
a = a ^ b;
6.三元运算符:
条件表达式?表达式1:表达式2
6.程序流程控制:
顺序,判断,选择,循环
一.判断:
1. if (条件表达式) {
执行语句;
}
2. if (条件表达式) {
执行语句;
}
else {
执行语句;
}
三元运算符就是if else语句简写格式.
简写格式什么时候用?当if else 语句有一个具体的结果时可以简写成三元运算符
3. if (条件表达式) {
执行语句;
} else if (条件表达式) {
执行语句;
} else {
执行语句;
}
单句语句只执行一句;
4. if (条件表达式) {
执行语句;
}
if (条件表达式) {
执行语句;
} else {
执行语句;
}
执行两个if语句
此处即为多个else if 和多个if的区别
局部变量代码块可以决定局部变量的生命周期;
二.选择:
switch(表达式) {
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;
......
default:
执行语句;
break;
}
switch 后面的表达式只有四种类型可以选择byte, short, int, char;
无论default放在前面后面,都先执行case
需要注意的是break,只有switch的最后一个break可以省略,如果如下写法:
int x = 2;
switch(x) {
default:
System.out.println("d");
case 4:
System.out.println("a");
case 1:
System.out.println("c");
case 3:
System.out.println("e");
case 5:
System.out.println("f");
顺序判断流程:
先判断case,没发现符合case然后选择default,打印d,因为default没有break,
继续执行case依次打印输出a c e f
可以多个case执行一个语句
if 和 switch的应用场景:
if:
1.对具体的值进行判断
2.对区间判断
3.对运算结果是boolean类型的表达式进行判断
switch:
1.对于具体的值进行判断
2.值的个数通常固定
对于几个固定的值判断,建议用switch,因为switch语句会将具体的
答案都加载进内存,效率相对比较高
三.循环
1. while(条件表达式) {
执行语句;
}
循环的两个关键,循环条件和循环次数
2. do {
执行语句;
} while(条件表达式)
do while 先执行后判断,无论条件是否满足循环体,至少执行一次
3. for (1.初始表达式; 2.循环条件表达式(需要布尔类型); 4.循环后的操作表达式) {
3.执行语句(循环体);
}
上面数字是执行顺序
while循环和for循环可以互换,区别在于for为了循环而定义的变量在for循环结束后
就在内存中释放,而while循环使用的变量在循环结束后还可以继续使用,考虑变量的后续使用与否来选择是用for还是while
无限循环的简单形式:
while(true) {}
for (;;) {}
什么时候使用循环结构?
当对某些代码执行很多次时,使用循环结构完成
当对一个条件进行一次判断时,使用if语句
当对一个条件进行多次判断时,使用while语句
注意:
在使用循环时,一定要明确哪些语句需要参与循环,哪些不需要,循环通常情况下,
需要定义条件,需要控制次数
break 和 continue:
break跳出语句,作用的范围要么是switch语句,要么是循环语句
记住,当break单独存在时,下面不要定义其他语句,因为执行不到。
break表示跳出当前循环,如果出现了循环嵌套,break想跳出指定循环,可以通过标量来完成
循环可以起名字,
xunhuan1:for {
xunhuan2:for{
break xunhuan1;
}
}
加了名字可以直接跳出最外层循环,不加名字只能跳出当前循环
continue:作用范围循环结构,结束本次循环,继续下次循环,如果continue单独存在时,
下面不要有任何语句,因为执行不到,continue同样可以通过循环名来执行继续语句
转义字符:
常见:
\n 回车
\t 制表符
\b 退格
\r 按下回车键
window操作系统中回车符是有 \r \n组成,cmd中可以识别\n 为回车键,
但很多window只能识别\r \n
linux中回车符是 \n