黑马程序员刘意老师java教程每日总结汇总.docx
《黑马程序员刘意老师java教程每日总结汇总.docx》由会员分享,可在线阅读,更多相关《黑马程序员刘意老师java教程每日总结汇总.docx(119页珍藏版)》请在冰豆网上搜索。
![黑马程序员刘意老师java教程每日总结汇总.docx](https://file1.bdocx.com/fileroot1/2023-1/2/18372f12-b5be-441c-9c5d-3fc0946a249e/18372f12-b5be-441c-9c5d-3fc0946a249e1.gif)
黑马程序员刘意老师java教程每日总结汇总
DAY01
1:
计算机概述(了解)
(1)计算机
(2)计算机硬件
(3)计算机软件
系统软件:
window,linux,mac
应用软件:
qq,yy,飞秋
(4)软件开发(理解)
软件:
是由数据和指令组成的。
(计算器)
开发:
就是把软件做出来。
如何实现软件开发呢?
就是使用开发工具和计算机语言做出东西来
(5)语言
自然语言:
人与人交流沟通的
计算机语言:
人与计算机交流沟通的
C,C++,C#,Java
(6)人机交换
图形界面:
操作方便只管
DOS命令:
需要记忆一些常见的命令
2:
键盘功能键的认识和快捷键(掌握)
(1)功能键的认识
tab
shift
ctrl
alt
windos
空格
上下左右
回车
截图
(2)快捷键
全选Ctrl+A
复制Ctrl+C
粘贴Ctrl+V
剪切Ctrl+X
撤销Ctrl+Z
保存Ctrl+S
3:
常见的DOS命令(掌握)
(1)常见的如下
盘符的切换
d:
回车
目录的进入
cdjavase
cdjavase\day01\code
目录的回退
cd..
cd\
清屏
cls
退出
exit
(2)其他的几个(了解)
创建目录
删除目录
创建文件
删除文件
显示目录下的内容
删除带内容的目录
4:
Java语言概述(了解)
(1)Java语言的发展史
Java之父
JDK1.4.2
JDK5
JDK7
(2)Java语言的特点
有很多小特点,重点有两个开源,跨平台
(3)Java语言是跨平台的,请问是如何保证的呢?
(理解)
我们是通过翻译的案例讲解的。
针对不同的操作系统,提高不同的jvm来实现的。
(4)Java语言的平台
JavaSE
JavaME--Android
JavaEE
5:
JDK,JRE,JVM的作用及关系(掌握)
(1)作用
JVM:
保证Java语言跨平台
JRE:
Java程序的运行环境
JDK:
Java程序的开发环境
(2)关系
JDK:
JRE+工具
JRE:
JVM+类库
6:
JDK的下载,安装,卸载(掌握)
(1)下载到官网。
A:
也可以到XX搜索即可。
B:
我给你。
(2)安装
A:
绿色版解压就可以使用
B:
安装版必须一步一步的安装,一般只要会点击下一步即可
注意:
建议所有跟开发相关的软件都不要安装在有中文或者空格的目录下。
(3)卸载
A:
绿色版直接删除文件夹
B:
安装版
a:
控制面板--添加删除程序
b:
通过专业的软件卸载工具。
(比如360的软件管家卸载)
7:
第一个程序:
HelloWorld案例(掌握)
classHelloWorld{
publicstaticvoidmain(String[]args){
System.out.println("HelloWorld");
}
}
(1)程序解释:
A:
Java程序的最基本单位是类,所以我们要定义一个类。
格式:
class类名
举例:
classHelloWorld
B:
在类中写内容的时候,用大括号括起来。
C:
Java程序要想执行,必须有main方法。
格式:
publicstaticvoidmain(String[]args)
D:
要指向那些东西呢,也用大括号括起来。
E:
你要做什么呢?
今天我们仅仅做了一个简单的输出
格式:
System.out.println("HelloWorld");
注意:
""里面的内容是可以改动的。
(2)Java程序的开发执行流程:
A:
编写java源程序(.java)
B:
通过javac命令编译生成.class文件
C:
通过java命令运行.class文件
8:
常见的问题(掌握)
(1)扩展名被隐藏
如何找到:
工具--文件夹选项--查看--去除隐藏扩展名的那个勾勾
(2)我要求文件名称和类名一致。
实际上不这样做也是可以的。
但是,注意:
javac后面跟的是文件名+扩展名
java后面跟的类名不带扩展名
(3)Java语言严格区分大小写,请注意。
还有就是单词不要写错了。
(4)见到非法字符:
\65307肯定是中文问题。
我们写程序要求标点符号必须全部是英文状态。
(5)括号的配对问题。
一般来说,括号都是成对出现的。
(6)遇到
在类HelloWorld中找不到主方法,请将主方法定义为
肯定是主方法的格式问题。
9:
path环境变量(掌握)
(1)path环境变量的作用
保证javac命令可以在任意目录下运行。
同理可以配置qq等
(2)path配置的两种方案:
A:
方案1(了解)
B:
方案2
找到环境变量的位置,在系统变量里面
新建:
变量名:
JAVA_HOME
变量值:
D:
\develop\Java\jdk1.7.0_60
修改:
变量名:
Path
变量值:
%JAVA_HOME%\bin;以前的内容
10:
classpath环境变量(理解)
(1)classpath环境变量的作用
保证class文件可以在任意目录下运行
(2)classpath环境变量的配置
找到环境变量的位置,在系统变量里面
新建:
变量名:
classpath
变量值:
E:
\JavaSE\day01\code\HelloWorld案例
DAY02
1:
关键字(掌握)
(1)被Java语言赋予特定含义的单词
(2)特点:
全部小写。
(3)注意事项:
A:
goto和const作为保留字存在。
B:
类似于Notepad++这样的高级记事本会对关键字有特殊颜色标记
2:
标识符(掌握)
(1)就是给类,接口,方法,变量等起名字的字符序列
(2)组成规则:
A:
英文大小写字母
B:
数字
C:
$和_
(3)注意事项:
A:
不能以数字开头
B:
不能是java中的关键字
C:
区分大小写
(4)常见的命名规则(见名知意)
A:
包全部小写
单级包:
小写
举例:
liuyi,com
多级包:
小写,并用.隔开
举例:
cn.itcast,com.baidu
B:
类或者接口
一个单词:
首字母大写
举例:
Student,Demo
多个单词:
每个单词首字母大写
举例:
HelloWorld,StudentName
C:
方法或者变量
一个单词:
首字母小写
举例:
name,main
多个单词:
从第二个单词开始,每个单词首字母大写
举例:
studentAge,showAllNames()
D:
常量
全部大写
一个单词:
大写
举例:
PI
多个单词:
大写,并用_隔开
举例:
STUDENT_MAX_AGE
3:
注释(掌握)
(1)就是对程序进行解释说明的文字
(2)分类:
A:
单行注释//
B:
多行注释/**/
C:
文档注释(后面讲)/***/
(3)把HelloWorld案例写了一个带注释的版本。
后面我们要写一个程序的过程。
需求:
分析:
实现:
代码体现:
(4)注释的作用
A:
解释说明程序,提高了代码的阅读性。
B:
可以帮助我们调试程序。
后面我们会讲解一个更高端的一个调试工具
4:
常量(掌握)
(1)在程序执行的过程中,其值不发生改变的量
(2)分类:
A:
字面值常量
B:
自定义常量(后面讲)
(3)字面值常量
A:
字符串常量"hello"
B:
整数常量12,23
C:
小数常量12.345
D:
字符常量'a','A','0'
E:
布尔常量true,false
F:
空常量null(后面讲)
(4)在Java中针对整数常量提供了四种表现形式
A:
二进制由0,1组成。
以0b开头。
B:
八进制由0,1,...7组成。
以0开头。
C:
十进制由0,1,...9组成。
整数默认是十进制。
D:
十六进制由0,1,...9,a,b,c,d,e,f(大小写均可)组成。
以0x开头。
5:
进制转换(了解)
(1)其他进制到十进制
系数:
就是每一个位上的数值
基数:
x进制的基数就是x
权:
对每一个位上的数据,从右,并且从0开始编号,对应的编号就是该数据的权。
结果:
系数*基数^权次幂之和。
(2)十进制到其他进制
除基取余,直到商为0,余数反转。
(3)进制转换的快速转换法
A:
十进制和二进制间的转换
8421码。
B:
二进制到八进制,十六进制的转换
6:
变量(掌握)
(1)在程序的执行过程中,其值在某个范围内可以发生改变的量
(2)变量的定义格式:
A:
数据类型变量名=初始化值;
B:
数据类型变量名;
变量名=初始化值;
7:
数据类型(掌握)
(1)Java是一种强类型语言,针对每种数据都提供了对应的数据类型。
(2)分类:
A:
基本数据类型:
4类8种
B:
引用数据类型:
类,接口,数组。
(3)基本数据类型
A:
整数占用字节数
byte1
short2
int4
long8
B:
浮点数
float4
double8
C:
字符
char2
D:
布尔
boolean1
注意:
整数默认是int类型,浮点数默认是double。
长整数要加L或者l。
单精度的浮点数要加F或者f。
8:
数据类型转换(掌握)
(1)boolean类型不参与转换
(2)默认转换
A:
从小到大
B:
byte,short,char--int--long--float--double
C:
byte,short,char之间不相互转换,直接转成int类型参与运算。
(3)强制转换
A:
从大到小
B:
可能会有精度的损失,一般不建议这样使用。
C:
格式:
目标数据类型变量名=(目标数据类型)(被转换的数据);
(4)思考题和面试题:
A:
下面两种方式有区别吗?
floatf1=12.345f;
floatf2=(float)12.345;
B:
下面的程序有问题吗,如果有,在哪里呢?
byteb1=3;
byteb2=4;
byteb3=b1+b2;
byteb4=3+4;
//错误:
不兼容的类型:
从int转换到byte可能会有损失
//因为a+b会默认转为int数据类型,将int转给byte类型是有问题的
//可以采用强制类型转换:
byteb3=(byte)(b1+b2);
C:
下面的操作结果是什么呢?
byteb=(byte)130;
D:
字符参与运算
是查找ASCII里面的值
'a'97
'A'65
'0'48
System.out.println('a');
System.out.println('a'+1);
E:
字符串参与运算
这里其实是字符串的连接
System.out.println("hello"+'a'+1);//helloa1
System.out.println('a'+1+"hello");//98hello
System.out.println("5+5="+5+5);//5+5=55
System.out.println(5+5+"=5+5");//10=5+5
DAY03
1:
运算符(掌握)
(1)算术运算符
A:
+,-,*,/,%,++,--
B:
+的用法
a:
加法
b:
正号
c:
字符串连接符
C:
/和%的区别
数据做除法操作的时候,/取得是商,%取得是余数
D:
++和--的用法
a:
他们的作用是自增或者自减
b:
使用
**单独使用
放在操作数据的前面和后面效果一样。
a++或者++a效果一样。
**参与操作使用
放在操作数的前面:
先自增或者自减,再参与操作
inta=10;
intb=++a;
放在操作数的后面:
先参与操作,再自增或者自减
inta=10;
intb=a++;
(2)赋值运算符
A:
=,+=,-=,*=,/=,%=等
B:
=叫做赋值运算符,也是最基本的赋值运算符
intx=10;把10赋值给int类型的变量x。
C:
扩展的赋值运算符的特点
隐含了自动强制转换。
面试题:
shorts=1;
s=s+1;
//错误:
不兼容的类型:
从int转换到short可能会有损失
//因为s+1后的数据类型是int类型
shorts=1;
s+=1;
//不会报错,因为扩展运算符隐含了强制类型转换
//等效于shorts=(short)(s+1)
请问上面的代码哪个有问题?
(3)比较运算符
A:
==,!
=,>,>=,<,<=
B:
无论运算符两端简单还是复杂最终结果是boolean类型。
C:
千万不要把==写成了=
(4)逻辑运算符
A:
&,|,^,!
&&,||
B:
逻辑运算符用于连接boolean类型的式子
C:
结论
&:
有false则false
|:
有true则true
^:
相同则false,不同则true。
情侣关系。
!
:
非true则false,非false则true
&&:
结果和&是一样的,只不过有短路效果。
左边是false,右边不执行。
||:
结果和|是一样的,只不过有短路效果。
左边是true,右边不执行。
(5)位运算符(了解)
A:
^的特殊用法
一个数据针对另一个数据位异或两次,该数不变
B:
面试题
a:
请实现两个变量的交换
**采用第三方变量
**用位异或运算符
左边a,b,a
右边a^b
b:
请用最有效率的方式计算出2乘以8的结果
2<<3
(6)三元运算符
A:
格式
比较表达式?
表达式1:
表达式2;
B:
执行流程:
首先计算比较表达式的值,看是true还是false。
如果是true,表达式1就是结果。
如果是false,表达式2就是结果。
C:
案例:
a:
比较两个数据是否相等
b:
获取两个数据中的最大值
c:
获取三个数据中的最大值
2:
键盘录入(掌握)
(1)实际开发中,数据是变化的,为了提高程序的灵活性,我们加入键盘录入数据。
(2)如何实现呢?
目前就记住
A:
导包
importjava.util.Scanner;
位置:
在class的上边
B:
创建对象
Scannersc=newScanner(System.in);
C:
获取数据
intx=sc.nextInt();
(3)把三元运算符的案例加入键盘录入改进。
3:
流程控制语句
(1)顺序结构从上往下,依次执行
(2)选择结构按照不同的选择,执行不同的代码
(3)循环结构做一些重复的代码
4:
if语句(掌握)
(1)三种格式
A:
格式1
if(比较表达式){
语句体;
}
执行流程:
判断比较表达式的值,看是true还是false
如果是true,就执行语句体
如果是false,就不执行语句体
B:
格式2
if(比较表达式){
语句体1;
}else{
语句体2;
}
执行流程:
判断比较表达式的值,看是true还是false
如果是true,就执行语句体1
如果是false,就执行语句体2
C:
格式3
if(比较表达式1){
语句体1;
}elseif(比较表达式2){
语句体2;
}
...
else{
语句体n+1;
}
执行流程:
判断比较表达式1的值,看是true还是false
如果是true,就执行语句体1
如果是false,就继续判断比较表达式2的值,看是true还是false
如果是true,就执行语句体2
如果是false,就继续判断比较表达式3的值,看是true还是false
...
如果都不满足,就执行语句体n+1
(2)注意事项
A:
比较表达式无论简单还是复杂,结果是boolean类型
B:
if语句控制的语句体如果是一条语句,是可以省略大括号的;如果是多条,不能省略。
建议:
永远不要省略。
C:
一般来说,有左大括号,就没有分号,有分号,就没有左大括号。
D:
else后面如果没有if,是不会出现比较表达式的。
E:
三种if语句其实都是一个语句,只要有一个执行,其他的就不再执行。
(3)案例:
A:
比较两个数是否相等
B:
获取两个数中的最大值
C:
获取三个数中的最大值(if语句的嵌套)
D:
根据成绩输出对应的等级
E:
根据月份,输出对应的季节
F:
根据x计算对应y的值并输出
(4)三元运算符和if语句第二种格式的关系
所有的三元运算符能够实现的,if语句的第二种格式都能实现。
反之不成立。
如果if语句第二种格式控制的语句体是输出语句,就不可以。
因为三元运算符是一个运算符,必须要有一个结果返回,不能是一个输出语句。
DAY04
1:
switch语句(掌握)
(1)格式:
switch(表达式){
case值1:
语句体1;
break;
case值2:
语句体2;
break;
...
default:
语句体n+1;
break;
}
格式解释说明:
switch:
说明这是switch语句。
表达式:
可以是byte,short,int,char
JDK5以后可以是枚举
JDK7以后可以是字符串
case:
后面的值就是要和表达式进行比较的值
break:
表示程序到这里中断,跳出switch语句
default:
如果所有的情况都不匹配,就执行这里,相当于if语句中的else
(2)面试题
switch语句的表达式可以是byte吗?
可以是long吗?
可以是String吗?
可以,不可以,JDK7以后可以
(3)执行流程:
A:
首先计算表达式的值
B:
和每一个case进行匹配,如果有就执行对应的语句体,看到break就结束。
C:
如果没有匹配,就执行default的语句体n+1。
(4)注意事项:
A:
case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
B:
default可以省略吗?
可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。
特殊情况:
case就可以把值固定。
A,B,C,D
C:
break可以省略吗?
可以省略,但是结果可能不是我们想要的。
会出现一个现象:
case穿透。
最终我们建议不要省略
D:
default一定要在最后吗?
不是,可以在任意位置。
但是建议在最后。
E:
switch语句的结束条件
a:
遇到break就结束了
b:
执行到末尾就结束了
(5)案例:
A:
键盘录入一个数字(1-7),输出对应的星期几。
B:
单项选择题
C:
键盘录入一个字符串的问题
Strings=sc.nextLine();
D:
根据给定的月份,输出对应的季节
看程序写结果:
版本1:
intx=2;
inty=3;
switch(x){
default:
y++;
break;
case3:
y++;
case4:
y++;
}
System.out.println("y="+y);//y=4
版本2:
intx=2;
inty=3;
switch(x){
default:
y++;
case3:
y++;
case4:
y++;
}
System.out.println("y="+y);//y=6;先执行3、4,不符合条件,然后执行default,最后再穿透//执行一次3、4的执行语句。
(6)if语句和switch语句各自的场景
A:
if
针对boolean类型的判断
针对一个范围的判断
针对几个常量的判断
B:
switch
针对几个常量的判断
2:
循环语句(掌握)
(1)有三种:
for,while,do...while
(2)for循环语句
A:
格式
for(初始化语句;判断条件语句;控制条件语句){
循环体语句;
}
执行流程:
a:
执行初始化语句
b:
执行判断条件语句
如果这里是true,就继续
如果这里是false,循环就结束
c:
执行循环体语句
d:
执行控制