logo资料库

黑马程序员基础班精华笔记总汇.doc

第1页 / 共207页
第2页 / 共207页
第3页 / 共207页
第4页 / 共207页
第5页 / 共207页
第6页 / 共207页
第7页 / 共207页
第8页 / 共207页
资料共207页,剩余部分请下载后查看
第一天
计算机语言:
Java的平台版本:
DOS命令
Java的两大特性:
JDK JRE JVM
环境变量的配置: path calsspath
关键字:
标识符:
Java语言的书写格式(约定俗成))
第二天
常量:
进制:
原码补码反码:
变量:
变量的数据类型(基本、引用数据类型)
类型转换(自动类型提升, 强制类型转换)
面试题之变量相加和常量相加的区别, Java语言基础
算术运算符(+, -, *, /, %, ++, --):
赋值运算符(=, +=, -=, *=, /=, %=):
关系运算符(=,!=,>,>=,<,<=)又叫比较、条件运算符
作业例子
1: byte b1=3,b2=4,b;b=b1+b2;b=3+4;哪句是编译失败的呢?为
2:byte by = 130;有没有问题?有问题如何解决?结果是多少呢?
3:byte b = 10;b++;b = b + 1;哪句是编译失败的呢?为什么呢?
第三天
逻辑运算符(& | ^ ! &&等), Java语言基础 (false 0) (true
位运算符的基本用法 (& ,| ,^ ,~转换成二进制,0代表false,1代表true)&,|,
三元运算符
流程控制语句(if的几种, switch):
作业例子:
1三位数分别取其单个值
2原码补码反码计算练习
第四天
循环结构: for , while , do...while
死循环(和break,continue,return比较)
代码优化 转义字符
方法:
重载
作业例子
1利用for循环的嵌套实现如下图形
2猜数字小游戏, 需要使用 Math.random()方法的返回值是0~0.9999999999 之
第五天
数组:
二维数组:
Java中参数传递的问题:
作业例子
1二维数组的遍历
2数组的交换:
3去除数组中重复元素并打印(扩展题)
4数组的查表
第六天
面向对象(找资料补全补细): 强调的是对象, 以对象为基础.
匿名对象:
封装定义: 隐藏对象的属性和实现细节, 仅对外提供公共的访问方式
Private私有的:
this特点:
作业例子
1:学生类Student成绩求和
2 类的定义及使用:手机品牌价格
第七天
构造方法:
面向对象()画图演示)(创建一个对象的步骤)(掌握)
static:
静态变量: 被static修饰的成员变量, 也叫做类变量(static不能修饰局部变量)
静态变量与成员变量的区别:
面向对象(main方法的格式详细解释)(了解)
工具类:
作业例子:
1:圆形类( Circle )编写并测试 要求set/get方法与构造方法两种方式
2键盘录入一个整形的二维数组, 要求二维数组内有3个一维数组, 每个一维数组内有3个元素
3 动物类Animal编写并测试 要求set/get方法与构造方法两种方式
4 圆形类(Circle)编写并测试 要求set/get方法与构造方法两种方式
5 static的使用特点:
第八天
代码块
继承
this与super的区别:
方法的重写
Final关键字:这个东西不能被改变(String就是一个final类)
作业例子:
1静态、构造代码块及构造方法之间运行顺序
2代码块加载顺序:
第九天
多态:
抽象类(定义:就是看不懂的)
接口:interface implements
类与类,类与接口,接口与接口的关系(面向对象)
接口与抽象类的区别:
作业例子
1多个继承类顺序
2多个继承类的方法排序
3接口、实现、类求正方形、圆形面积
第十天:
package关键字的概述及作用, 面向对象
四种权限修饰符的测试 面向对象
内部类概述和访问特点
成员内部类的面试题(掌握)
局部内部类访问局部变量的问题(掌握)
匿名内部类的格式和理解
匿名内部类重写多个方法调用
作业例子:
1匿名内部类在开发中的应用
2匿名内部类的面试题
第十一天: Eclipse
Eclipse的概述:
Eclipse工作空间的基本配置 (掌握)
Eclipse辅助键的使用(掌握)
Object类,及其子方法hashCode(),getClass(),toString(),equa
Scanner基本使用:
使用Scanner可能会遇到的小问题:
第十二天:
String类概念:引用数据类型,字符串类型
作业例子:
1: String相关格式定义
3: 多次录入返回倒印值
5: 模拟登录
7:完全平方和求一数
8:输入星期字母返回星期文字
第十三天:
1.StringBuffer 和 String 的区别:
2.StringBuffer类:
3.数组高级:
基本数据类型的包装类:
JDK5自动拆装箱(新特性)
byte 常量池:-128-127 -2^(8-1) ~ 2^(8-1) - 1
作业例子:
1:
2:789三个数互不相同
第十四天:日期类、正则表达式等
1:Math类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
2:Random类的概述
3:System类包含一些有用的类字段和方法。它不能被实例化。
4:BigInteger类(均为public)
5:BigDecimal类(表示、计算浮点数)
6: Date类(重点):表示特定的瞬间,精确到毫秒。是util包下的,不能导入sql包的
7:DateFormat类的概述
8:Calendar类的概述(重点)
9:正则表达式:是指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串。其实就是一种规则
正则表达式例题:和replaceAll替换:
作业例子:
1:(1)通过键盘录入日期字符串,格式(2015-10-20)
2:键盘录入两位的小数
第十五天: collection接口及其实现类
Collection接口: (单列集合的根接口) 接口
集合和数组的区别?
List接口 有序(索引)、元素可重复的接口、集合包括:ArrayList Linke
例题:集合元素位置交换
带All的功能演示
List子类、子集合特点(ArrayList、LinkedList、Vector)
迭代器Iterator:Iterator(遍历) ListIterator(遍历、修改)
Vector类 (List的实现类) 底层数组数据结构,查询快,增删慢,线程同步(安全, 因为
ArrayList类(List的实现类) 底层数组,查询快,增删慢,线程不同步(不安全,效率高)
作业例子:
1:for循环删除集合中包含任意数字的字符串的元素
第十六天:泛型及list等
泛型: 1.5的新特性
JDK1.5新特性(4个):
增强for循环概述(JDK1.5新特性底层是迭代,所以迭代可以,这个也可以)
静态导入:(JDK1.5新特性了解) 静态导入是导入类中静态方法
可变参数概述(JDK1.5新特性)
普通for删除集合元素(特定),索引要 - -
ArrayList去重:去除集合中字符串的重复值(字符串的内容相同)
LinkedList类 (List的实现类) 底层链表,查询慢,增删快,线程不同步(不安全,效率
集合嵌套(含双增强for循环题)
三打印法汇总(for,增强for,迭代):
第十七天:Set接口及其实现类
Set接口 (Collection子接口)无序(存取不一定一致)无索引,元素不可以重复
HashSet类(Set接口实现类) 底层数据结构是哈希表,线程不同步(不安全,效率高)
LinkedHashSet类(Set接口实现类)
TreeSet类(Set接口实现类) 底层数据结构二叉树,保证元素唯一性的依据: compar
Collections工具类成员方法
作业例子:
1:自定义比较器
第十八天:MAP接口及其实现类
Map接口 Map(set底层用的也是此) 键具有唯一性
Map.Entry映射项(键-值对)。
Map四种遍历方式:
1: 迭代(繁) //获取所有的键
2: (简)增强for循环遍历
3:嵌套迭代(繁)
4:嵌套使用增强for循环)(简)
Hashtable类(Map接口实现类)底层是哈希表数据结构,不可以存入null键null值。该集合
HashMap类(Map接口实现类) 底层是哈希算法,针对键,效率高,开发中用HashMap比较多
例1:需求:统计字符串中每个字符出现的次数
例2: HashMap双层嵌套和双增强for循环打印
LinkedHashMap类(Map接口实现类) 有序(存取一致) 底层是链表,针对键
TreeMap类(Map接口实现类) 底层是二叉树数据结构,不同步,可以给其键排序
作业例子:
1:斗地主 扑克存、洗、发、看牌
2:面试题:HashMap和Hashtable的区别
Map接口和Collection接口的不同
集合总结:
第十九天:异常及File类
异常(异常的概述和分类)
异常(处理异常的方式)
异常(编译期异常和运行期异常的区别)
异常(throw的概述以及和throws的区别)
异常(finally关键字的面试题)
异常(自定义异常概述和基本使用)
File类(File类的概述和构造方法)
File类的创建功能
File类的重命名和删除功能
File类的判断功能
File类的获取功能
File类(输出指定目录下指定后缀的文件名)
File类(文件名称过滤器的概述及使用) 文件过滤器FilenameFilter
第二十天:IO字节流
IO流(IO流概述及其分类)
必考:IO流(read()方法返回值为什么是int)
IO流拷贝:
IO流(BufferedInputStream和BufferOutputStream拷贝、加密)
IO流(流的两种处理异常代码方法)
第二十一天:IO字符流
字符流FileReader IO流
什么情况下使用字符流
字符流是否可以拷贝非纯文本的文件
字符流拷贝:
码表转换读写字符(面试俩桥梁)
作业例子:
1:统计文本文档里头各种字符出现的次数:
2:人机智能
第二十二天:IO其他流
序列流(整合多个文件)类SequenceInputStream
内存输出流类ByteArrayOutputStream
对象操作流类ObjectOutputStream
Properties(重点)父类
杂流
第二十三天:递归、文件等练习
第二十四天:多线程Thread
什么是线程
多线程程序实现的方式(掌握)
多线程(两种方式的区别)(掌握)
多线程Thread各种较常用方法:
综合例子:
多线程(同步代码块)(掌握)
多线程(线程安全问题)(掌握)
多线程(以前的线程安全的类回顾)(掌握)
第二十五天:多线程
单例设计模式)(掌握)
单例写法两种:(掌握)
Timer类(掌握)
多线程(两个线程间的通信)(掌握)
多线程(线程的五种状态)(掌握)
线程组的概述和使用)(了解)
作业例子:
1: /*某Java基础班共有100名学员, 创建4个线程进行分组, (提示: 分组过程用线程模拟
2:10个线程分别求和
3:三个用户分别存款
第二十六天:网络编程
老师重点,需掌握笔记:
第二十六天:反射
第一天 计算机: 由硬件与软件组成, 能够按照程序处理数据的电子设备 软件开发: 使用开发工具与计算机语言去开发软件 计算机语言: 机器语言: 二进制码 汇编语言: 用特殊的符号去代表二进制码 高级语言: 用英语写源代码, 然后由编译器去解释成机器语言 Java C#: 与 Java 有 90%的相似度 Python: 语法清晰, 哲学思想: 一件事情只有唯一的一个解决方案 Ruby: 灵活, 哲学思想: 一件事情有多个解决方案. Ruby On Rails(MVC) 人机交互: 命令行方式 图形化界面 Java 之父: James Gosling 詹姆斯·高斯林 Java 的平台版本: J2SE(Java 2 Platform Standard Edition)标准版 是为开发普通桌面和商务应用程序提供的解决方案,该技术体系是其他两者的基 础,可以完成一些桌面应用程序的开发 J2ME(Java 2 Platform Micro Edition)小型版 是为开发电子消费产品和嵌入式设备提供的解决方案 J2EE(Java 2 Platform Enterprise Edition)企业版 是为开发企业环境下的应用程序提供的一套解决方案,该技术体系中包含的技术如 盘符切换 Servlet、Jsp 等,主要针对于 Web 应用程序开发 DOS 命令 * d: 回车 * dir(directory) 列出当前目录下的文件以及文件夹 * cd (change directory)改变指定目录(进入指定目录) * cd.. * cd\ * cls (clear screen)清屏 退回到上一级目录 退回到根目录
退出 dos 命令行(分割线上的需要掌握,下的了解) * exit * /========================================================= * md (make directory) : 创建目录 * rd (remove directory): 删除目录 * del (delete): 删除文件,删除一堆后缀名一样的文件*.txt Java 的两大特性: 开源: 开放源代码 跨平台: 一处编译, 到处运行, 也就是说通过 Java 语言编写的程序可以在任意的 操作系统上运行(由 JVM 保证) 注意: JVM 不是跨平台的!!! (JVM: Java Virtual Machine) JRE JVM 其他特性:简单性 解释性 面向对象 高性能 分布式处理 多线程 健壮性 动态 结构中 立 安全性 开源 跨平台 JDK JVM: Java Virtual Machine 虚拟机 JRE: Java Runtime Environment 包含了 JVM 与核心类库 JDK: Java Develop Kit 包含了 JRE 与 JAVA 开发工具包 三者之间的关系: JDK > JRE > JVM 环境变量的配置: path calsspath path 记录的是可执行文件的路径 需要配置 path 的原因是: 为了在任意位置运行 java 程序 JAVA 运行环境 classpath 记录的是类的文件(class 文件)的路径
不需要配置 classpath 的原因是: *未配置之前, classpath 默认是当前路径 *配置之后, 只能去指定的路径去找 *但是, class 文件默认生成在当前路径, 因此不需要配置 关键字: 定义: 被 Java 赋予了特殊含义的单词(在 EditPlus 中是蓝色显示) 特点: 所有的字母都是小写的 常见的:public static void main 注意: class main 不是关键字! main 方法体中可以没有一行代码 goto 和 const 是关键字,但是作为保留字并不使用 标识符: 组成规则: 注意: 只能由 26 个字母 _ $ 数字组成 不能以数字开头 区分大小写 不能是关键字 命名规则: 包: 所有字母小写, 域名倒着写 www.baidu.com ==> com.baidu 类和接口: 方法和变量: 单个单词: 首字母大写 Student 多个单词: 每个单词的首字母大写 HelloWorld(驼峰标识) 单个单词: 全部小写 main 多个单词: 从第二个单词开始, 首字母大写 getName 常量: 单个单词: 全部大写 PI 多个单词: 全部大写, 但是单词之间用_隔开, MAX_VALUE Java 语言的书写格式(约定俗成)) 1,大括号要对齐,并且成对写 2,左大括号前面有空格
3,遇到左大括号要缩进,Tab 4,方法和程序块之间加空行让程序看起来清晰 5,并排语句之间加空格,例如 for 语句 6,运算符两侧加空格 第二天 常量: 在程序运行的过程中, 其值不可以发生改变的量 常量的分类: 自定义常量 字面值常量 字符串常量: 被双引号括起来的 字符常量: 被单引号括起来的, 只包含单个数字, 单个字母或单个符号(包括 空格符号) 整数常量: 所有的整数 小数常量: 所有的小数 布尔常量: true 和 false 空常量: null 进制: x 进制: 逢 x 进一位, 例如 10 进制, 就是逢 10 进 1 二进制: 八进制: 由 0 和 1 组成 前缀: 0b 十进制: 由 0~7 组成 前缀: 0 由 0~9 组成 前缀: 无 十六进制: 由 0~9, a~f(A~F)组成 前缀: 0x 或 0X 任意进制转成十进制 54321 = 1*10^0 + 2*10^1 + 3*10^2 + 4*10^3 + 5*10^4
系数: 每一位上的数据, 这里 5,4,3,2,1 都是系数 基数: 对于 x 进制, x 就是基数. 这里 10 就是基数 权: 从右往左, 从 0 开始递增 结果: 系数*基数^权次幂的和 0b1111: 1*2^0 + 1*2^1 + 1*2^2 + 1*2^3 = 1+2+4+8 = 15 0712: 2*8^0 + 1*8^1 + 7*8^2 = 2 + 8 + 448 = 458 0x9f: 15*16^0 + 9*16^1 = 15 + 144 = 159 十进制转成任意进制: 八四二一码: 先把十进制转成二进制, 再将二进制转换成任意的进制 128 64 32 16 8 4 2 1 1 1 1 1 1 1 1 1 举例: 对于 63, 二进制: 1 1 1 1 1 1 八进制: 77 十六进制: 3f 对于 250, 11111010 二进制: 八进制: 0372 十六进制: 0XFA 原码补码反码: 有符号数据的表示形式: 计算机的运算方式是补码运算 计算机计算的是补码所以给出来的数据 →→转换成补码→→ 再按要求进行相关操作 →→再转换成原码进行求值 对于正数: 原码, 反码, 补码是一致的
对于负数: 原码: 最高位是符号位, 正数为 0, 负数为 1, 因为是负数, 所以最高位取 1 反码: 符号位不变, 其他位逐位取反 补码: 在反码的基础上末位加 1 变量: 在程序运行的过程中, 其值可以在某个范围内发生变化的量 定义格式: 数据类型 变量名 = 变量值; 变量的数据类型(基本、引用数据类型) 引用数据类型(除了八种基本数据类型,其他的都是引用数据类型) String 字符串类型 Class 类 Interface 接口 Array 数组 基本数据类型(如下): 整数型(整数常量 所有整数) Byte 字节 1024b = 1kb short 占用 1 个字节(8 个二进制位), -128~127 ==> -2^(8-1) ~ 2^(8-1) - 1 占用 2 个字节,-2^(16-1)~2^(16-1)-1 int 占用 4 个字节 -2^(32-1)~ 2^(32-1) - 1,整数默认类型 long 占用 8 个字节 -2^(64-1)~2^(64-1)-1 浮点型(小数常量 所有小数) Float,-3.403E38~3.403E38 占用 4 个字节,单精度 Double,-1.798E308~1.798E308 占用 8 个字节,双精度.浮点默认类型 字符型 char(字符常量 用单引号括起来的内容,里面只能放单个数字,单个字母或 char 占用 2 个字节: 取值范围是: 0 ~ 65535 char c = 64; System.out.println(c); //@ 单个符号) A:案例演示
System.out.println('a'); a System.out.println('a'+1); 98 通过看结果知道'a'()的值是多少,由此引出 ASCII 码表 +1(int)触发了其自动类型提升及转码 B:ASCII 码表的概述 * 记住三个值: 48 65 97 * '0' * 'A' * 'a' 此处为字符串类型 C:案例演示 * System.out.println("hello"+'a'+1); helloa1 * System.out.println('a'+1+"hello"); 98hello * D:+在有字符串参与中被称为字符串连接符 * System.out.println("5+5="+5+5); * System.out.println(5+5+"=5+5"); 字符串参与运算: 5+5=55 10 任何数据类型与字符串相加都会生成一个新的字符串 注意: 运算顺序是从左往右的 加上小括号可以提升运算的优先级 char 可以表示中文: 1.char 采用 Unicode 编码 2.char 占两个字节 布尔型 boolean 理论上是占八分之一个字节,因为一个开关就可以决定是 true 和 false 了,但是 java 中 boolean 类型没有明确指定他的大小 使用变量的注意事项: 同一个作用域内不能出现重名变量 局部变量在使用之前必须赋值, 声明一个变量: int x; 声明一个变量, 并为这个变量赋值: int x = 10 ;
类型转换(自动类型提升, 强制类型转换) 自动类型提升(隐式转换: 小的往大的转): byte, short, char --> int --> long --> float --> double 当取值范围小的与取值范围大的进行运算时, 会先将取值范围小的数据提升成 大的, 然后再进行运算 强制类型转换(大的往小的转) 注意: 强制类型转换可能会损失精度 float 的取值范围是大于 long 的 int a = 10; * byte b = 20; * b = a + b; * B:强制转换的格式 * b = (byte)(a + b); 常见误区: (byte)a +-*/ b 这些都不会是 byte 类型,因为优先括号,a 变 为 byte 类型,再加减乘除之类,又自动类型提升为 int byte short char 进行运算的时候,会自动类型提升为 int 面试题之变量相加和常量相加的区别, Java 语言基础 A:案例演示 * 面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。 * byte b1 = 3; * byte b2 = 4; * byte b3 = b1 + b2; * 从两方面去回答这个题 * b1 和 b2 是两个变量,变量里面存储的值都是变化的,所以在程序运行中 JVM 是无法判断里面具体的值 * byte b4 = 3 + 4; * byte 类型的变量在进行运算的时候,会自动类型提升为 int 类型 * 3 和 4 都是常量,java 有常量优化机制,就是在编译的的时候直接把 3 和 4 的结果赋值给 b4 了 算术运算符(+, -, *, /, %, ++, --): +: 代表正数 代表加法运算 代表字符串的拼接
分享到:
收藏