Java重点学习笔记
写在前面的话:
因为在编程学习的过程,我发现学习一个新的知识点的时候,无论你当时多么的认真思考和仔细的论证,如果仅仅是敲写了代码,并且在脑海梳理了代码的步骤和原理,而不是通过记笔记的方式,很快这些知识点就被忘记的一干二净,你会发现人的记忆是很差的,就像你可能记不起来前天中午吃了什么午饭。所以任何知识点学习,尤其是通过零星的网络资源收集而来,你必须通过某种自己的形式,把这些知识点以文字记录下来,而最好的方式就是当下的笔记+最后的总结博客,所以促使我更加看着博客的重要性,它主要的工作并不是炫耀你懂的内容,而是的学习后成果的记录。
一:Java语言:
Java语言的创始人詹姆斯.高斯林,JDK的平台版本分为JavaSE和JavaME和JavaEE三种。JVM(java虚拟机):保证了java语言的跨平台,但需要注意的是java语言是跨平台的,jvm不是跨平台的。
JRE(Java程序的运行环境):包括JVM和核心类库。
JDK(Java程序的开发环境):包括JRE + 开发工具。
二:Java编译工具Jdk的安装与卸载:
(1)下载
到官网。
(2)安装
傻瓜式安装。
建议:
A:在D盘建立一个目录:develop
B:傻瓜式安装,修改安装的路径到d盘的develop
C:路径如下
JDK:
D:\develop\Java\jdk1.7.0_72\
JRE:
D:\develop\Java\jre7\
(3)卸载
A:控制面板
B:360之类的软件卸载工具
三:配置path环境变量
创建新的变量名称:
变量名:JAVA_HOME
变量值:D:\develop\Java\jdk1.7.0_72
修改path变量:
用%%引用JAVA_HOME即可。
%JAVA_HOME%\bin;以前的path内容
四:开发第一个Java程序(HelloWorld)
public class HelloWorld {
public static void main(String[] args) {
System.out.println("helloworld");
}
}
五:数据类型分类:
基本类型:4类8种。
引用类型:类,接口,数组。
基本类型:
整数 占用字节 范围
byte 1 -128 ~ 127
short 2 -2^15 ~ 2^15 - 1
int 4 -2^31 ~ 2^31 - 1
long 8 -2^63 ~ 2^63 - 1
1k空间:
1k = 1024 byte
byte = 8bit
浮点数
float 4 -3.403E38 ~ 3.403E38
double 8 -1.798E308 ~ 1.798E308
字符
char 2
注意:Java采用的是unicode编码。所以java中每一个字符占用两个字节。这样就可以存储一个汉字了。
布尔
boolean 1 true,false
注意:
A:默认整数是int类型
B:默认浮点数是double类型
C:如果要定义long类型的变量,建议加L或者l。建议加L。
D:如何要定义float类型的变量,必须加F或者f。建议加F。
六:++,--运算符
作用:++就是加1,--就是减1。
自增自减运算符
++,--在运算的时候,可以放在操作数的前面,也可以放在操作数的后面
A:单独使用
没有区别
B:参与其他操作使用
后面:先操作,再自增
前面:先自增,再操作
举个例子:
public class OperatorTest {
public static void main(String[] args) {
int a = 10;
int b = 10;
int c = 10;
a = b++;//a=10,b=11,c=10
c = --a;//a=9,b=11,c=9
b = ++a;//a=10,b=10,c=9
a = c--;//a=9,b=10,c=8
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
七:逻辑运算符
&,|,!,^
&&,||
注意:
逻辑运算符用于连接关系表达式
最常用的逻辑运算符:!,&&,||
&&和&:
结果一样,但是&&具有短路效果,左边如果是false,右边不执行。
||和|:
结果一样,但是||具有短路效果,左边如果是true,右边不执行。
举个例子:
public class Demo2 {
public static void main(String[] args) {
/**
* &&和||与&和|的区别?
* 从执行结果上来说:两者没有任何其别
*
* 区别:&&和||会有一个短路效果
*/
int a = 10;
int b = 20;
int c = 30;
System.out.println((a>c)&&(a>b));//false&&false=false
System.out.println((a<c)&&(a<b));//true&&true=true
System.out.println((a>c)&&(a<b));//false&&true=fasle
System.out.println((a<c)&&(a>b));//true&&false=false
System.out.println("-----------------------");
//|运算两边连接的布尔值,只要有一个为true就为true
System.out.println((a>c)||(a>b));//false||false=false
System.out.println((a<c)||(a<b));//true||true=true
System.out.println((a>c)||(a<b));//false||true=true
System.out.println((a<c)||(a>b));//true||false=true
System.out.println("----------------------");
int x = 3;
int y = 4;
//System.out.println(x++>3&&y++>4);
//false&&=fasle,&&会存在一个短路效果,前面链接的布尔值为fasle,
//整体就为fasle,所以后面的判断不执行
System.out.println(x);//4
System.out.println(y);//4
System.out.println(x++>3||y++>4);
//||运算链接的布尔值,如果前面的布尔值为true,连接的整体结果就为true,后面的不执行
System.out.println(x);//4
System.out.println(y);//5
}
}
八:流程控制语句
A:顺序结构(没有基本格式,从上往下依次执行)
B:选择结构(有格式)
if
switch
C:循环结构(有格式)
for
while
Do...while
九:if语句
三种格式。
(1) if语句格式1:
if(比较表达式) {
语句体
}
执行流程:
首先判断比较表达式看其结果是true还是false
如果是true就执行语句体
如果是false就不执行语句体
if语句的注意事项:
A:比较表达式无论简单还是复杂,结果必须是boolean类型
B:一般来说:
有左大括号就没有分号,有分号就没有左大括号
(2) if语句格式2:
if(比较表达式) {
语句体1;
}else {
语句体2;
}
执行流程:
首先判断关系表达式看其结果是true还是false
如果是true就执行语句体1
如果是false就执行语句体2
(3)if语句的三种格式:
格式1:适合做一种情况的判断
格式2:适合做二种情况的判断
格式3:适合做多种情况的判断
if语句格式3:
if(比较表达式1) {
语句体1;
}else if (比较表达式2) {
语句体2;
}
…
else {
语句体n+1;
}
执行流程:
首先判断关系表达式1看其结果是true还是false
如果是true就执行语句体1
如果是false就继续判断关系表达式2看其结果是true还是false
如果是true就执行语句体2
如果是false就继续判断关系表达式…看其结果是true还是false
…
如果没有任何关系表达式为true,就执行语句体n+1。
举个例子:
public class IfDemo6 {
public static void main(String[] args) {
/**
* 获取三个数据中的最大值
if语句的嵌套。
if() {
if语句
}
*/
int a = 10;
int b = 20;
int c = 30;
if (a>b) {
//a大
if (a>c) {
System.out.println(a);
}else {
System.out.println(c);
}
}else {
//b大
if (b>c) {
System.out.println(b);
}else {
System.out.println(c);
}
}
}
}
十:循环语句组成
A:初始化语句
一条或者多条语句,这些语句完成一些初始化操作。
B:判断条件语句:
这是一个boolean表达式,这个表达式能决定是否执行循环体。
C:循环体语句
这个部分是循环体语句,也就是我们要多次做的事情。
D:控制条件语句
这个部分在一次循环体结束后,下一次循环判断条件执行前执行。
通过用于控制循环条件中的变量,使得循环在合适的时候结束。
(1)for循环格式:
for(初始化语句;判断条件语句;控制条件语句) {
循环体语句;
}
执行流程:
A:执行初始化语句
B:执行判断条件语句
如果是true:就继续执行。
如果是false:就结束循环。
C:执行循环体语句
D:执行控制条件语句
E:回到B
执行次数:
A:初始化语句
只执行一次
B:判断条件语句
一次以上
C:循环体语句和控制条件语句
0次以上
举个例子:
public class ForDemo6 {
public static void main(String[] args) {
/**
* 18.需求:求5的阶乘
规则:
n! = n*(n-1)*(n-2)*...*3*2*1
*/
int sum = 1;
for(int i = 1;i<=5;i++){
//累乘
sum*=i;
}
System.out.println(sum);
}
}
(2)while循环的格式:
while(判断条件语句) {
循环体语句;
}
变形格式:
初始化语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
}
执行流程:
A:执行初始化语句
B:执行判断条件语句
如果是true:就继续执行。
如果是false:就结束循环。
C:执行循环体语句
D:执行控制条件语句
E:回到B
举个例子:
public class WhileDemo {
public static void main(String[] args) {
//1.请在控制台输出10次"HelloWorld"
//初始化语句
int i = 0;
//条件判断语句
while(i<10){
//循环语句
System.out.println("helloworkd");
//控制条件语句
i++;
}
}
}
for循环和while循环的区别
控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,
而while循环结束还可以继续使用,如果你想继续使用,就用while,
否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。
(3)do...while的格式:
do {
循环体语句;
}while((判断条件语句);
变形格式:
初始化语句;
do {
循环体语句;
控制条件语句;
}while(判断条件语句);
执行流程:
A:执行初始化语句
B:执行循环体语句
C:执行控制条件语句
D:执行判断条件语句
如果是true:就继续执行。
如果是false:就结束循环。
E:回到B
举个例子:
public class DoWhile {
public static void main(String[] args)
//使用do...while循环打印诗词helloworlkd
int i = 0;
do{
System.out.println("helloworld");
i++;
}while(i<10);
}
}
(4)三种循环的区别
A:do…while循环至少会执行一次循环体。
B:for循环和while循环只有在条件成立的时候才会去执行循环体
他们是可以相互转换的。
我们在使用循环的时候到底该选择谁呢?
优先考虑for循环,再考虑while循环,最后考虑do…while循环。
十一:break,continue的用法
break
使用场景:A:在选择结构switch语句中
B:在循环语句中
遇到break,就中断整个循环。
默认情况下,break只能中断它所属的那个循环。
continue
使用场景:在循环语句中
遇到continue, 意味着退出本次循环。