做开发有一段时间了,回想一下以前在开发中有时总会有力不从心的感觉,总结出是基础知识掌握不牢固。所以想做一个java基础知识学习记录,如有错误的地方还请大家指出改正 :)
1.首先是环境变量的配置:
PATH:配置系统中可执行程序的路径。
CLASSPATH:配置指定Java的类库文件所在的路径(即:Java运行环境),如果不配置好CLASSPATH这个变量,那么所编译好的java字节码文件无法正常运行。
JAVA_HOME:配置JDK安装的主目录。
用户变量:只对当前用户起作用。
2.数据类型
(1)Java中的8大基本数据类型
a:整型数据,byte,short,int,long
byte精度范围:-2^7 ~ 2^7-1,8位精度 (-128 ~ 127)
short精度范围:-2^15 ~ 2^15-1,16位精度 (-32768 ~ 32767)
int精度范围:-2^31 ~ 2^31-1,32为精度
long精度范围:-2^63 ~ 2^63-1,64为精度
b:浮点数据,float,double
c:字符数据,char
d:逻辑数据,boolean
(2)类类型,即:(自定义)数据类型。
基本数据类型的转换:
有时,在使用基本数据类型可能会出现类型之间的转换,Java编程语言在如下条件自动进行数据类型转换。
1).如果在操作数(变量)中含有double类型,
则其他操作数(变量)中的数据类型会自动转换到double类型
1 * 2.0 ===> double
2).否则,如果在操作数(变量)中含有float类型,
则其他操作数(变量)中的数据类型会自动转换到float类型
1 * 2.0f ===> float
3).否则,如果在操作数(变量)中含有long类型,
则其他操作数(变量)中的数据类型会自动转换到long类型
byte a = 1;
int b = 10;
long c = 20L;
a * b + c ===> long
4).否则,所有的操作数会自动转换到int类型
byte a = 1;
int b = 10;
a * b ===> int
基本数据类型低级到高级的顺序
byte,short,int,long,float,double
类型转换总结:
(1)低级到高级自动转换
(2)高级到低级强制转换
3.算术运算符:+,-,*,/,%
int a = 1;
int b = 2;
b += a; ===> b = b + a;
b /= a; ===> b = b / a;
b %= a; ===> b = b % a;
b *= a; ===> b = b * a;
a++; ===> 先使用a的值,然后再自加1
++a; ===> 先自加1,然后使用a的值
a--; ===> 先使用a的值,然后再自减1
--a; ===> 先自减1,然后使用a的值
4.比较运算符:<,>,<=,>=,!=
使用语法:变量1 比较操作符 变量2。
比较运算符使用的时候会有一个结果值,此结果是一个boolean类型。即:比较运算符是做逻辑运算
5.逻辑运算符:&&,||,!,^,&,|
&&,与运算
||,或运算
!,非,取反
^,异或运算:相同为0,相反为1
&,与运算:有0则为0
与运算:
F && T ===> F
F && F ===> F
T && F ===> F
T && T ===> T
必须都为true,结果才是true
或运算:
F || T ===> T
F || F ===> F
T || F ===> T
T || T ===> T
只要一边为true,结果就是true
非,取反:
!F ===> T
!T ===> F
返回相反的结果
异或运算:
F ^ T ===> T
F ^ F ===> F
T ^ T ===> F
T ^ F ===> T
当两边boolean值不同的时候,结果为true
三目运算:
(expression)? if-true-statement:if-false-statement;
对逻辑表达式求值,如果返回true,则返回第二个操作数的值,如果返回false,则返回第三个操作数的值。
String str = 5 > 3 ? "5 大于 3" : " 5不大于3 ";
6.控制语句if...else if...else
(1)只有if语句
(2)if...else if...
(3)if...else...
(4)if...else if...else...
a:if语句永远作为条件控制的开始部分
b:else if可以出现多次,但是一定是在else前面
c:else只能放在最后,且出现一次
语法结构:
if (逻辑值) {
程序代码
} else if (逻辑值) {
程序代码
} else {
程序代码
}
7.循环语句while、do...while、for
while循环:
while (逻辑值) {
.....
}
a:当逻辑值是false,循环不执行
b:当逻辑值是true,循环执行
do...while:
语法结构:
do {
循环体
} while (逻辑值);
注意:先执行循环体,然后判断条件
for循环:
语法结构:
for (变量; 表达式; 变量的步长) {
循环体
}
一些特殊的for循环
int i = 0;
for (; i <= 1000; i++) {
......
}
for (;;) { //死循环
......
}
注意:for运行的顺序
for (int i = 0; i <= 3; i++) {
循环体
}
(1)程序先对i进行声明和赋值 ===> int i = 0;(仅执行一次)
(2)马上判断 i <= 3是否成立
(3)如果 i <= 3为true,则执行循环体内的语句
(4)当循环体中的语言执行完,再对i++
break、continue:
(1)break:它是终止一个循环
1.首先是环境变量的配置:
PATH:配置系统中可执行程序的路径。
CLASSPATH:配置指定Java的类库文件所在的路径(即:Java运行环境),如果不配置好CLASSPATH这个变量,那么所编译好的java字节码文件无法正常运行。
JAVA_HOME:配置JDK安装的主目录。
用户变量:只对当前用户起作用。
2.数据类型
(1)Java中的8大基本数据类型
a:整型数据,byte,short,int,long
byte精度范围:-2^7 ~ 2^7-1,8位精度 (-128 ~ 127)
short精度范围:-2^15 ~ 2^15-1,16位精度 (-32768 ~ 32767)
int精度范围:-2^31 ~ 2^31-1,32为精度
long精度范围:-2^63 ~ 2^63-1,64为精度
b:浮点数据,float,double
c:字符数据,char
d:逻辑数据,boolean
(2)类类型,即:(自定义)数据类型。
基本数据类型的转换:
有时,在使用基本数据类型可能会出现类型之间的转换,Java编程语言在如下条件自动进行数据类型转换。
1).如果在操作数(变量)中含有double类型,
则其他操作数(变量)中的数据类型会自动转换到double类型
1 * 2.0 ===> double
2).否则,如果在操作数(变量)中含有float类型,
则其他操作数(变量)中的数据类型会自动转换到float类型
1 * 2.0f ===> float
3).否则,如果在操作数(变量)中含有long类型,
则其他操作数(变量)中的数据类型会自动转换到long类型
byte a = 1;
int b = 10;
long c = 20L;
a * b + c ===> long
4).否则,所有的操作数会自动转换到int类型
byte a = 1;
int b = 10;
a * b ===> int
基本数据类型低级到高级的顺序
byte,short,int,long,float,double
类型转换总结:
(1)低级到高级自动转换
(2)高级到低级强制转换
3.算术运算符:+,-,*,/,%
int a = 1;
int b = 2;
b += a; ===> b = b + a;
b /= a; ===> b = b / a;
b %= a; ===> b = b % a;
b *= a; ===> b = b * a;
a++; ===> 先使用a的值,然后再自加1
++a; ===> 先自加1,然后使用a的值
a--; ===> 先使用a的值,然后再自减1
--a; ===> 先自减1,然后使用a的值
4.比较运算符:<,>,<=,>=,!=
使用语法:变量1 比较操作符 变量2。
比较运算符使用的时候会有一个结果值,此结果是一个boolean类型。即:比较运算符是做逻辑运算
5.逻辑运算符:&&,||,!,^,&,|
&&,与运算
||,或运算
!,非,取反
^,异或运算:相同为0,相反为1
&,与运算:有0则为0
|,或运算:有1则为1
~,求反,负数的二进制表示就是该负数的绝对值的二进制数按位取反再加一
<<,左位移运算符: 左移n位,正填0,负填1,正数x*(2^n)
>>,右位移运算符: 右移n位,正填0,负填1,正数x/(2^n)
>>>,无符号右移运算符:不带符号右移n位,填0,32位系统是该数前补足32个0,64位补足64个0
与运算:
F && T ===> F
F && F ===> F
T && F ===> F
T && T ===> T
必须都为true,结果才是true
或运算:
F || T ===> T
F || F ===> F
T || F ===> T
T || T ===> T
只要一边为true,结果就是true
非,取反:
!F ===> T
!T ===> F
返回相反的结果
异或运算:
F ^ T ===> T
F ^ F ===> F
T ^ T ===> F
T ^ F ===> T
当两边boolean值不同的时候,结果为true
三目运算:
(expression)? if-true-statement:if-false-statement;
对逻辑表达式求值,如果返回true,则返回第二个操作数的值,如果返回false,则返回第三个操作数的值。
String str = 5 > 3 ? "5 大于 3" : " 5不大于3 ";
6.控制语句if...else if...else
(1)只有if语句
(2)if...else if...
(3)if...else...
(4)if...else if...else...
a:if语句永远作为条件控制的开始部分
b:else if可以出现多次,但是一定是在else前面
c:else只能放在最后,且出现一次
语法结构:
if (逻辑值) {
程序代码
} else if (逻辑值) {
程序代码
} else {
程序代码
}
7.循环语句while、do...while、for
while循环:
while (逻辑值) {
.....
}
a:当逻辑值是false,循环不执行
b:当逻辑值是true,循环执行
do...while:
语法结构:
do {
循环体
} while (逻辑值);
注意:先执行循环体,然后判断条件
for循环:
语法结构:
for (变量; 表达式; 变量的步长) {
循环体
}
一些特殊的for循环
int i = 0;
for (; i <= 1000; i++) {
......
}
for (;;) { //死循环
......
}
注意:for运行的顺序
for (int i = 0; i <= 3; i++) {
循环体
}
(1)程序先对i进行声明和赋值 ===> int i = 0;(仅执行一次)
(2)马上判断 i <= 3是否成立
(3)如果 i <= 3为true,则执行循环体内的语句
(4)当循环体中的语言执行完,再对i++
break、continue:
(1)break:它是终止一个循环
(2)continue:它是跳出本次循环,回到循环开始部分,再执行下一次循环。
switch分支语句:
switch(expression){
case condition1:
statement(s);
break;
.......
default:
statement(s);
}
switch语句中控制表达式的类型只能是byte,short,char,int