黑马程序员Java基础班+就业班课程笔记全发布(持续更新)
正在黑马学习,整理了一些课程知识点和比较重要的内容分享给大家,也是给自己拓宽一些视野,仅供大家交流学习,大家有什么更好的内容可以发给我 ,现有黑马教程2000G QQ 1481135711
这是我总结的基础班第一章课程,
JVM、JRE和JDK的区别:
JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性。
JRE(Java Runtime Environment):java的运行环境,包括jvm+java的核心类库。
JDK(Java Development Kit):java的开发工具,包括jre+开发工具
JDK的下载与安装:
JDK(Java DevelopmentKit Java开发工具包)
官方下载网址:www.oracle.com
1.点击Downloads下的Java for Developers。
2. 点击JDK下的DOWNLOAD按钮。
3.点击Accept License Agreement 接受JDK的许可证协议,然后再点击jdk-8u45-windows-i586.exe(32位)/jdk-8u45-windows-x64.exe(64位)进行下载。
PS: 查看系统是多少位,用鼠标右键点击我的电脑属性,查看系统类型。
傻瓜式安装,下一步即可。
建议:安装路径不要有中文或者特殊符号如空格等。
配置环境变量path:
配置:
我的电脑–属性–高级–环境变量
1.新创建一个环境变量名为JAVA_HOME ,变量值为java工具所在目录,
2.在path中通过%%动态的获取JAVA_HOME的值即可。 %JAVA_HOME%:动态获取名称为JAVA_HOME环境变量的值。
例如:
JAVA_HOME=F:\jdk1.6.0_01(java工具(JDK)所在目录)
path=%JAVA_HOME%\bin;%path%
%path%:动态获取path环境变量的值。
<ignore_js_op>
<ignore_js_op>
检测:
打开DOS命令行(1.徽标键 +R ,输入CMD。2.点击开始–>所有程序–>附件–>命令提示符),任意目录下敲入javac
<ignore_js_op>
错误原理:当前执行的程序在当前目录下如果不存在,windows系统会在系统中已有的一个名为path的环境变量指定的目录中查找。如果还没有找到,就出现以上的错误提示。
如果进入到 jdk安装路径\bin目录下,执行javac就可以看到javac参数提示信息,这说明我们的JAVA_HONE的环境变量没有配置成功。
<ignore_js_op>
配置环境变量class_Path:
由于可能频繁执行多个class文件,并且多个class文件可能存储在不同的目录下,那么每次都在命令提示符窗口中切换目录会相当的麻烦。
classpath环境变量的作用类似于path环境变量,但是它的作用在于告诉JVM去哪里找到class文件。
环境变量path和classpath的作用是什么?
(1)path是配置Windows可执行文件的搜索路径,即扩展名为.exe的程序文件所在的目录, 用于指定DOS窗口命令的路径。
(2)Classpath是配置class文件所在的目录,用于指定类搜索路径,JVM就是通过它来寻找该类的class类文件的。
第二章
概述:被Java语言赋予特定含义的单词
特点:组成关键字的字母全部小写
注意事项:
goto和const作为保留字存在,目前并不使用(保留字:在JDK的新版本中可能提升为关键字)
类似Notepad++这样的高级记事本,针对关键字有特殊的颜色标记,非常直观
组成规则:英文大小写字母、数字字符、$和_命名规范:
包名:多单词组成时所有字母都小写,
类名接口名:多单词组成时,所有单词的首字母大写
变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写
常量名:所有字母都大写。多单词时每个单词用下划线连接
注意事项 :不能以数字开头、不能是Java中的关键字、区分大小写要见名知意,驼峰命名
常量
概述:在程序执行的过程中其值不可以发生改变
常量分类:
1、字面值常量
2、自定义常量(面向对象部分讲)
字面值常量的分类
二进制的由来:任何数据在计算机中都是以二进制的形式存在的。二进制早期由电信号开关演变而来。
不同进制的数据组成:
二进制 由0,1组成。以0b开头 例:0101
八进制 由0,1,…7组成。以0开头 例:032
十进制 由0,1,…9组成。整数默认是十进制的 例:12
十六进制 由0,1,…9,a,b,c,d,e,f(大小写均可)。以0x开头 例:0x42b6
规律:进制越大,表现形式越短。
转换(可以通过计算机的程序员计算器)
8421码(8421码是BCD代码中最常用的一种。)
100转成二进制 0110 0100
101101转成十进制 45
二进制和八进制,十六进制进行转换是以十进制作为桥梁
二进制到八进制是3位二进制组成一位八进制
二进制到十六进制是4位二进制组成一位十六进制
在计算机内,有符号数有3种表示法:原码、反码和补码。所有数据的运算都是采用补码进行的。
原码:就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
变量
概述:在程序执行的过程中,在某个范围内其值可以发生改变的量
格式:数据类型 变量名 = 变量值;
好处: 可以用来不断的存放同一类型的常量,并重复使用
数据类型
概述:Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间
Java中数据类型的分类
分类:基本数据类型(4类8种) 和引用数据类型
<ignore_js_op>
整数型
byte 占一个字节 -128到127
short 占两个字 -2^15~2^15-1
int 占四个字节 -2^31~2^31-1
long 占八个字节 -2^63~2^63-1
浮点型
float 占四个个字节 -3.403E38~3.403E38
double 占八个字节-1.798E308~1.798E308
字符型
char 占两个字节 0~65535
布尔型
boolean
boolean理论上是占八分之一个字节,因为一个开关就可以决定是true和false了,但是java中boolean类型没有明确指定他的大小
注意事项
作用域 :变量定义在哪一级大括号中,哪个大括号的范围就是这个变量的作用域。相同的作用域中不能定义两个同名变量。
初始化值:没有初始化值不能直接使用
在一行上可以定义多个变量,但是不建议只定义一个
数据转换
默认转换
byte,short,char—int—long—float—double
byte,short,char相互之间补转换,他们参与运算首先转换为int类型
强制转换
目标类型 变量名=(目标类型)(被转换的数据);
boolean类型不能转换为其他的数据类型
运算符
<ignore_js_op>
加法(+): 1、加法 System.out.println(“a+b=”+(a+b)) ,此处是求(a+b)的值
2、正数 int b = +3; 此处表示b是正数3
3、字符串连接符 System.out.println(“a=“+a+”b=”+b)) ‘+’为字符串连接符号,不参与运算,显示的为 a=a,b=b
除法(/):1、整数相除,只能得到整数2、要想得到小数,可以*1.0
/和%的区别:
除法和平时用法一样,取模就是取余数,负数对正数取模结果为负数。正数对负数取模结果为正数。举个栗子:
-2%5= -2 -2是被模数,5是模数,负数的取模运算结果是不是负数看左边。
++和–的应用:
++运算单独存在时放左放右是没有区别的,
参与其他运算时 b = ++a相等于 b = a+1 ,
b = a++ b应为a的初始值,a为a+1
赋值运算符
符号:
= , +=, -=, *=, /=, %=
=为基本的赋值运算符,其他的为扩展的赋值运算符
=赋值号
+=加赋值
把左边和右边的结果赋值给左边。注意:左边不能是常量
关系运算符
<ignore_js_op>
比较运算符的结果都是boolean型,也就是要么是true,要么是false。
比较运算符“==”不能误写成“=” 。
第三章
逻辑运算符
|:有1位为1,结果为1
^:相同则0,不同则1 ,a^b^b a异或b两次还是a。
~:按位取反 6取反 ~6+1=-6
三元运算符
格式:(关系表达式)?表达式1:表达式2 如:z=(x>y)?x:y
如果条件为true,运算后的结果是表达式1
如果条件为false,运算后的结果是表达式2
和if else 的简写差不多
一定要返回一个变量或者值不能是其他语句。
键盘录入的基本格式
1.导入包: import java.util.Scanner;
2.在main函数中实例化对象: Scanner sc = new Scanner(System.in);
接受用户输入:
2.1) 接收整数:
int num = sc.nexInt();
2.2) 接收字符串:
String str = sc.next();
2.3)接收浮点值:
double val = sc.nextDouble();
在Scanner类中,有一些:hasNextXxxx()方法,这些方法可以先期判断是否能够获取一个Xxxx的值,如果可以,此方法返回true,否则返回false
流程控制语句
流程控制语句分类
顺序结构
选择结构
循环结构
选择结构的分类
if语句
switch语句
if语句有几种格式
格式1
执行流程
先计算比较表达式的值,看其返回值是true还是false。
如果是true,就执行语句体;
如果是false,就不执行语句体;
选择结构if语句注意事项
a:比较表达式无论简单还是复杂,结果必须是boolean类型
b:if语句控制的语句体如果是一条语句,大括号可以省略;如果是多条语句,就不能省略。建议永远不要省略。
c:一般来说:有左大括号就没有分号,有分号就没有左大括号
格式2
执行流程:
首先计算比较表达式的值,看其返回值是true还是false。
如果是true,就执行语句体1;
如果是false,就执行语句体2;
注意事项:else后面是没有比较表达式的,只有if后面有。
if语句的格式2和三元的相互转换问题:
当if语句控制的语句体是一条输出语句的时候,就不成立。因为三元运算符是一个运算符,必须要求有一个结果返回。而输出语句却不能作为一个返回结果,在其他的时候三元运算符的操作都可以使用if语句改进
格式3
执行流程:
首先计算比较表达式1看其返回值是true还是false,
如果是true,就执行语句体1,if语句结束。
如果是false,接着计算比较表达式2看其返回值是true还是false,
如果是true,就执行语句体2,if语句结束。
如果是false,接着计算比较表达式3看其返回值是true还是false,
如果都是false,就执行语句体n+1。
注意事项:最后一个else可以省略,但是建议不要省略,可以对范围外的错误值提示
选择结构
switch语句格式
格式解释
1.switch表示这是switch语句
表达式的取值:byte,short,int,char
JDK5以后可以是枚举
JDK7以后可以是String
2.case后面跟的是要和表达式进行比较的值3.语句体部分可以是一条或多条语句
4.break表示中断,结束的意思,可以结束switch语句
5.default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。
执行流程
首先计算出表达式的值
其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
注意事项
1.”表达式”可以产生的值:byte,short,int,char,枚举(JDK5以后),String(JDK7以后)
2.case语句后跟”常量表达式”,不能是”变量”;而且不能出现相同的常量值;
3.break;语句”不是必须的”。如果不写,如果一旦case相应的值成功,但内部没有break语句,那么将会无条件(不再进行case匹配)的继续向下执行其它case中的语句,直到遇到break;语句或者到达switch语句结束。
4.多个case之间,没有顺序关系;
5.default语句”不是必须的”。可以不写,它就相当于多重if语句中最后的else。
6.default语句和case语句”没有顺序关系”
选择结构if语句和switch语句的区别
switch建议判断固定值的时候用
if建议判断区间或范围的时候用
现有黑马教程2000G,欢迎互换项目资源共同进步! QQ 1481135711
逻辑运算符
|:有1位为1,结果为1
^:相同则0,不同则1 ,a^b^b a异或b两次还是a。
~:按位取反 6取反 ~6+1=-6
三元运算符
格式:(关系表达式)?表达式1:表达式2 如:z=(x>y)?x:y
如果条件为true,运算后的结果是表达式1
如果条件为false,运算后的结果是表达式2
和if else 的简写差不多
一定要返回一个变量或者值不能是其他语句。
键盘录入的基本格式
1.导入包: import java.util.Scanner;
2.在main函数中实例化对象: Scanner sc = new Scanner(System.in);
接受用户输入:
2.1) 接收整数:
int num = sc.nexInt();
2.2) 接收字符串:
String str = sc.next();
2.3)接收浮点值:
double val = sc.nextDouble();
在Scanner类中,有一些:hasNextXxxx()方法,这些方法可以先期判断是否能够获取一个Xxxx的值,如果可以,此方法返回true,否则返回false
流程控制语句
流程控制语句分类
顺序结构
选择结构
循环结构
选择结构的分类
if语句
switch语句
if语句有几种格式
格式1
执行流程
先计算比较表达式的值,看其返回值是true还是false。
如果是true,就执行语句体;
如果是false,就不执行语句体;
选择结构if语句注意事项
a:比较表达式无论简单还是复杂,结果必须是boolean类型
b:if语句控制的语句体如果是一条语句,大括号可以省略;如果是多条语句,就不能省略。建议永远不要省略。
c:一般来说:有左大括号就没有分号,有分号就没有左大括号
格式2
执行流程:
首先计算比较表达式的值,看其返回值是true还是false。
如果是true,就执行语句体1;
如果是false,就执行语句体2;
注意事项:else后面是没有比较表达式的,只有if后面有。
if语句的格式2和三元的相互转换问题:
当if语句控制的语句体是一条输出语句的时候,就不成立。因为三元运算符是一个运算符,必须要求有一个结果返回。而输出语句却不能作为一个返回结果,在其他的时候三元运算符的操作都可以使用if语句改进
格式3
执行流程:
首先计算比较表达式1看其返回值是true还是false,
如果是true,就执行语句体1,if语句结束。
如果是false,接着计算比较表达式2看其返回值是true还是false,
如果是true,就执行语句体2,if语句结束。
如果是false,接着计算比较表达式3看其返回值是true还是false,
如果都是false,就执行语句体n+1。
注意事项:最后一个else可以省略,但是建议不要省略,可以对范围外的错误值提示
选择结构
switch语句格式
格式解释
1.switch表示这是switch语句
表达式的取值:byte,short,int,char
JDK5以后可以是枚举
JDK7以后可以是String
2.case后面跟的是要和表达式进行比较的值3.语句体部分可以是一条或多条语句
4.break表示中断,结束的意思,可以结束switch语句
5.default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。
执行流程
首先计算出表达式的值
其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
注意事项
1.”表达式”可以产生的值:byte,short,int,char,枚举(JDK5以后),String(JDK7以后)
2.case语句后跟”常量表达式”,不能是”变量”;而且不能出现相同的常量值;
3.break;语句”不是必须的”。如果不写,如果一旦case相应的值成功,但内部没有break语句,那么将会无条件(不再进行case匹配)的继续向下执行其它case中的语句,直到遇到break;语句或者到达switch语句结束。
4.多个case之间,没有顺序关系;
5.default语句”不是必须的”。可以不写,它就相当于多重if语句中最后的else。
6.default语句和case语句”没有顺序关系”
选择结构if语句和switch语句的区别
switch建议判断固定值的时候用
if建议判断区间或范围的时候用
配套资料可以找我要 1481135711