Java学习笔记
2021-09-06 13:53:01 14 举报
AI智能生成
登录查看完整内容
更新注解
作者其他创作
大纲/内容
D:\\Develop\\jdk\\jdk12\\bin\\java.exe \"-javaagent:D:\\Program Files\\JetBrains\\IntelliJ IDEA 2019.2.4\\lib\\idea_rt.jar=55074:D:\\Program Files\\JetBrains\\IntelliJ IDEA 2019.2.4\\bin\" -Dfile.encoding=UTF-8 -classpath E:\\IdeaProjects\\AdvancedCode\\out\\production\\day09_heima_hash_set com.itheima.hashset.job.test02.Test01Exception in thread \"main\" java.lang.ClassCastException: class com.itheima.hashset.job.test02.Employee cannot be cast to class java.lang.Comparable (com.itheima.hashset.job.test02.Employee is in unnamed module of loader 'app'; java.lang.Comparable is in module java.base of loader 'bootstrap') at java.base/java.util.TreeMap.compare(TreeMap.java:1291) at java.base/java.util.TreeMap.put(TreeMap.java:536) at java.base/java.util.TreeSet.add(TreeSet.java:255) at com.itheima.hashset.job.test02.Test01.main(Test01.java:25)Process finished with exit code 1
没有重写
原因分析
ClassCastException
用增强for循环遍历TreeSet集合时出现的异常
异常
Markdown 常用语法
掌握
了解
掌握&了解
JavaSE单词
Java语言的背景介绍
Java跨平台性
JDK和JRE关系
子主题
环境搭建
day01_环境搭建&快速入门
day02_类型转换&运算符
day03_siwtch和循环语句
day04_idea&数组
day05_方法
什么是进制
任意进制到十进制的转换公式: 系数*基数的权次幂相加 :例1: 0b110 --> (0*2^0=0)+(1*2^1)+(1*2^2)=6 例2: 0x110 --> (0*16^0=0)+(1*16^1)+(1*16^2)=272
以 0b开头
二进制 0~1
以0开头
八进制 0~7
十进制
以0x开头
十六进制0~7
常见的进制
原码:看数据用的
反码:转数据用的
补码:运算数据用的
原码反码补码
位与
取反
运算规则
<<有符号左移运算
>>有符号右移运算
>>> 无符号右移运算
位移运算符
位运算
day06_进制
day07_Debug和二维数组
day01_面向对象基础
常见方法
System类
Prototype
length
属性
fromCharCode(...Num)
fromCodePoint(...Num) -- 无效字符返回错误
静态方法
比较字符串的内容是否相等
equals(String srt)
equalsIgnoreCase()
charAt(int index);
返回字符串的长度
length();
将当前字符串拆分为字符数组并返回
toCharArray();
substring(int index);
从statindex索引位置开始截取到endindex处(不包含endindex)
replace(\"旧值\
根据 \
String[] split = str.split(\
常用方法
返回一个ahtml元素
anchor(name)
返回指定索性的字符串
charAt(index)
返回指定索性的字符串的Unicode编码
charCodeAt(index)
返回字符串的拼接 -- 'a'.concat('b') ==> 'ab'
concat(String)
判断指定字符串为目标字符串的结束为止,可指定结束值
判断指定字符串是否存在目标字符串,可指定搜索位置
返回字符串是否存在目标字符串,存在返回位置,不存在返回-1
indexOf(String)
返回字符串是否存在目标字符串的结束为止,不存在返回-1
lastIndexOf(String)
创建一个a标签
link(url)
返回匹配符合正则规则的字符串
match(正则)
replace( 正则|String newSubStr|function )
返回匹配成功的首位索引。无返回-1
search(正则)
返回字符串的分割,带返回数量为返回指定数量的数组
split('分割’|正则,返回数量)
查看字符串是否在起始位置,默认为0
提取字符串,开始位置默认为0(负数为length-值),截至默认为length(不包含)
substr(开始位置,截至位置)
substring(开始位置,截至位置)
返回字符串小写
toLowerCase()
返回字符串小写(针对特殊地区)
toLocaleLowerCase()
返回字符串大写
toUpperCase()
返回字符串的大写(针对特殊地区)
toLocaleUpperCase()
返回字符串形式
toString(String)
删除字符串两边的空格
trim()
原型方法
String
StringBuilder sb = new StringBuilder();
StringBuilder sb = new StringBuilder(\"abc\");
构造方法
sb.append(任意类型);
返回相反的字符序列
StringBuilder reverse = sb.reverse();
返回长度(字符出现的个数)
int length = sb.length();
将StringBuilder对象转换为String对象
String s = sb.toString();
提高字符串的操作效率
作用
StringBuilder可变字符串
StringBuffer
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
外框
day01_String 和 StringBuffer 和 StringBuilder 类
概要
sb.toString();
1. StringBuilder转换为String
StringBuilder(String s);
2. String转换为StringBuilder
String和StringBuilder相互转化
学生类
成员变量
成员方法
定义一个学生类
主界面的代码实现
添加学生的代码实现
查看学生的代码实现
删除学生的代码实现
修改学生的代码实现
分析
list.add
遍历list
list.remove
修改对象属性
围绕集合容器进行操作
设计
编程
学生管理系统
day01_ArrayList集合&综合案例
一 . Java基础
StudentDao类Dao: (Data Access Object)用于访问存储数据的数组或集合
StudentService类: 用来进行业务逻辑的处理(例如:判断录入的id时候存在)
黑马信息管理系统分类
分类思想的介绍
分类思想
包的概述
包的注意事项
类与类之间的访问
分包思想
学生管理
老师管理
黑马信息管理系统
增删改查
day01_
day02_继承
day03_封装
day04_多态
day05
abs(int a);
返回参数的绝对值
ceil(double b);
向上取整
floor(double b);
向下取整
round(float a);
四舍五入
返回两个int值中的较大值
返回两个int值中的较小值
返回b的次幂的值
random();
常用类
Math
exit(int status);
获取1970年1月1日0时0分0秒到当前时间经历过的毫秒值
System.currentTimeMillis();
数组拷贝
System
每一个类都可以将Object作为父类. 所有类都直接或者间接的继承自该类.
概述
public Object();
构造方法:
Object
返回参数中对象的字符串表示形式
toString(对象);
返回对象的字符串表示形式
判断对象是否为空
isNull(对象);
判断对象是否不为空
noNull(对象);
Objects
参数为: double
BigDecimal(double val)
参数为: String
BigDecimal(String val)
BigDecimal(用于高精度计算)
byte----Byte
short----Short
Integer.MAX_VALUE
获取int的最大值
Integer.MIN_VALUE
获取int的最小值
Integer.valueOf(String str);
Integer.valueOf(int i)
Integer类
int----Integer
long----Long
float----Float
double----Double
char----Character
boolean----Boolean
基本类型的包装类
自动装箱和自动拆箱
包装类的数据转换
包装类
Date类
SimpleDateFormat类
JDK7的日期时间类
LocalDateTime获取对象
LocalDateTime的获取方法
LocalDateTime的转换方法
LocalDateTime的格式化和解析
LocalDateTime加减运算方法
LocalDateTime设置时间的方法
Period类
Duration类
时间间隔类
JDK8新增的日期类
二分查找
冒泡排序
递归
数组的高级操作
Arrays数组工具类
常用的类
API文档
day05_API 应用程序编程接口(Application Programming Interface)
异常类的继承体系
异常的处理
Throwable的方法
throw 产生一个异常
自定义异常
异常的小结
JavaSE常见的异常
day06_
集合的体系结构
Collection接口
迭代器遍历
增强for遍历
数据结构
LinkedList类特有方法
day07_数组和集合的区别
泛型类
泛型方法
泛型接口
泛型的总结
泛型限定
泛型
boolean add(E element)
Iterator iterator()
int size()
boolean isEmpty()
boolean contains(Object obj)
boolean containsAll(Collection c)
boolean addAll(Collection from)
boolean remove(Object obj)
boolean removeAll(Collection c)
void clear()
boolean retainAll(Collection c):删除所有与c集合中的元素不同的元素
Object[] toArray()
T[] toArray(T[] arrayToFill)
方法
ArrayList:动态列表
LinkedList:可以在任何位置进行高效插
List接口
void addFirst(E item)
void addLast(E item)
boolean offerFirst(E item)
boolean offerLast(E item)
E removeFirst()
E removeLast()
E pollFirst()
E pollLast()
E getFirst()
E getLast()
E peekFirst()
E peekLast()
ArrayDeque:双端队列
子类
Deque接口
boolean add(E item)
boolean offer(E item)
E remove()
E poll()
E element()
E peek()
PriorityQueue:优化级队列
Queue接口
HashSet的底层原理
JDK7底层HashSet的原理
如果同一个hashCode值位置的元素超过8个,把就链表改为红黑树JDK8底层HashSet的数据结构:数组+链表+红黑树
JDK8底层HashSet的原理
HashSet:没有重复元素的无序集合
1. 自然排序Comparable
2. 比较器排序Comparator
3.如何选择排序规则
TreeSet:没有重复元素的有序集合
EnumSet:包含枚举类型值的集合
LinkedHashSet:可以记住元素插入顺序的集合
E first():返回集合中最小的元素
E last():返回集合中最大的元素
SortedSet
E higher(E value)
E lower(E value)
E ceiling(E value)
E floor(E value)
NavigableSet
Set接口
K getKey()
V getValue()
V setValue(V newValue)
Map.Entry 静态内部类
Set keySet()
Collection values()
Set> entrySet()
V get(Object key)
map集合变量.get(K hey); 根据键获取map集合中的值
String ls = map.remove(\"2号丈夫\
void putAll(Map entries)
boolean containsKey(Object key)
boolean containsValue(Object value)
HashMap集合的底层原理
HashMap:存储键值关联的数据结构
TreeMap集合的底层原理
TreeMap:键值有序排列的映射表
EnumMap:键值属于枚举类型的映射表
LinkedHashMap:可以记住键值添加顺序的映射表
K firstKey():返回最小元素
K lastKey():返回最大元素
SortedMap
WeakHashMap:如果值以后不再被使用则可以被GC回收的映射表
IdentityHashMap:用 == 而不是equals比较键值的映射表
Map集合的基本使用
Map集合的遍历
Map接口
E next()
boolean hasNext()
void remove()
iterator接口
作用:让一个类实现此接口,那么这个类的集合就具有了排序功能
int compareTo(T other)
Comparable接口
作用:让一个类实现此接口,这个类可以根据自己的定义的属性灵活的进行排序
Comparator接口
排序
void sort(List items):对列表中的元素排序
void shuffle(List items):随机地打乱列表中的元素
void reverse(List items):逆转列表中元素的顺序
Comparator reverseOrder():返回一个比较器
Comparator reverseOrder(Comparator c):返回一个比较器
T min(Collection items)
T max(Collection items)
Collection synchronizedCollection(CollectionM c)
List synchronizedList(List c)
Set synchronizedSet(Set c)
SortedSet synchronizedSortedSet(SortedSet c)
Map synchronizedMap(Map map)
SortedMap synchronizedSortedMap(SortedMap map)
Collections工具类
List asList(E... array):返回一个数组元素的列表视图。
Arrays工具类
集合框架
二叉树
红黑树
扩展内容
小细节
day09_红黑树、HashSet、Map
可变参数
获取流
中间操作
终结操作
流程
练习1
练习2
练习3
练习
Stream流练习
day11_Stream(流)
文件所在的文件夹必须存在
boolean newFile = dir.createNewFile();
创建一个新的空的文件
boolean mkdir = dir.mkdir();
创建一个单级文件夹
boolean mkdirs = dir.mkdirs();
创建单级文件夹或创建多级文件夹
方法名
File类创建功能
把String类型的字符串变成File对象
File(String pathname)
把两个路径进行拼接
把一个File对象和String字符串进行拼接成为一个新的File对象
三个构造方法
创建File类对象的方式
File file1 = new File(\"E:\\\\IdeaProjects\\\\AdvancedCode\\\\day11_heima_IOStream\\\\src\\\\test01\\\\a.txt\");
绝对路径:从盘符开始的路径绝对路径 C:\\\\IdeaProjects\\javase\\myModule\\a.txt
绝对路径
File dir = new File(\"day11_heima_IOStream\\\\src\\\\test01\\\\a.txt\");
相对路径: 相对于项目的根目录,下面的路径 //假设项目的根路径是C:\\\\IdeaProjects\\javase 相对路径:myModule\\a.txt
相对路径
相对路径和绝对路径
只有在项目的文件下的文件,才可以写相对路径。
删除后不能在回收站找回
boolean delete = dir.delete();
只能删除空文件夹和文件
File类删除功能
创建
删除
判断
返回由此抽象路径名表示的文件或目录的名称
public String getName() 获取文件或者文件夹的名称
获取
遍历文件夹的方法
File操作文件夹练习
File类的常用方法
返回null
当调用者不存在时
返回为null
当调用者是一个文件时
返回一个长度为0的数组
当调用者时一个空文件夹时
将文件夹内的全部File对象返回
当调用者是一个有内容的文件夹时
当调用者是一个有权限才能进入的文件夹时
注意事项:
File[] files = file.listFiles();
File类中的高级获取功能
先删除这个文件夹里面的所有文件内容
可以解决所有文件夹里面所有内容的File对象
注意:
思路
进入------得到file文件夹里面所有内容的File对象
遍历
删除自己
步骤
删除一个多级文件夹及文件
删除文件夹的思路:先删除里面的内容,然后再删除外面空的文件夹
删除文件夹
操作
File对象的常见方法
File类
输入流: 读数据
输出流: 写数据
按流向
- FileInputStream:读取文件中的字节- BufferedInputStream: 对已有的InputStream进行包装,提高读取的效率
字节输入流:InputStream,用来读取字节数据
FileOutputStream fos= new FileOutputStream(\"test01\\\\b.txt\");
向硬盘中的b.txt文件写入数据(a)
fos.write(97)
fos.write(\"\\\".getBytes());
Windows换行
Linux换行
Mac换行
换行
FileOutputStream outStr = new FileOutputStream(\"test01\\\\b.txt\
- FileOutputStream: 写入文件中的字节- BufferedOutputStream:对已有的OutputStream进行包装,提高写入的效率
字节输出流:OutputStream,用来写字节数据
字节流:读写任意类型的文件(图片、视频、文字、游戏...)
包括音频视频图片等
操作所有类型的文件
读写文本文件(用记事本打开,能看懂的就是文本文件)
- FileReader- BufferedReader
字符输入流: Reader
- FileWriter- BufferedWriter
字符输出流: Writer
字符流
按照读写的数据类型分类
分类
一般按照数据类型来分类
1.创建流对象(搭桥)
2.读写数据(过桥)
3.释放资源(过河拆桥)
学习IO流的步骤
判断此抽象名表示的File是否存在
boolean exists = file.exists();
//创建输出流对象(搭桥),需要关联一个文件//如果文件不存在,会自动创建一个//如果文件存在,会把原来的文件覆盖掉。 FileOutputStream fos=new FileOutputStream(\"myModule11\\\\a.txt\");
//写数据(过桥)fos.write(\"helloworld\".getBytes());fos.write(\"\\\".getBytes()); //写一个换行fos.write(\"你好世界\".getBytes());
//写单个字节fos.write(97); //97对应字符'a'
//释放资源(过河拆桥)fos.close();
字节流写数据
字节流读数据
字节流复制文件【重点】
字节缓冲流复制文件【重点】
IO流的异常处理
需求:把a.txt文件中的内容,复制到b.txt文件中
//1.创建输入、输出流对象FileInputStream fis = new FileInputStream(\"day11/a.txt\");FileOutStream fos = new FileOutStream(\"day11/b.txt\");//2.一边读一边写int b; //记录每次读取的一个字节while((b=fis.read())!=-1){ fos.write(b);}//3.关闭流fos.close();fis.close();
一次复制一个字节
//1.创建输入、输出流对象FileInputStream fis = new FileInputStream(\"day11/a.txt\");FileOutStream fos = new FileOutStream(\"day11/b.txt\
一次复制多个字节【重点】
//1.创建缓冲输入、输出流对象BufferedInputStream bis = new BufferedInputStream(new FileInputStream(\"day11/a.txt\"));BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(\"day11/b.txt\"));//2.一边读一边写int b; //记录每次读取的一个字节while((b=bis.read())!=-1){ bos.write(b);}//3.关闭流bis.close();bos.close();
//1.创建缓冲输入、输出流对象BufferedInputStream bis = new BufferedInputStream(new FileInputStream(\"day11/a.txt\"));BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(\"day11/b.txt\
缓冲流文件复制
BufferedInputStream对FileInputStream进行包装,提高读取数据的效率。
BufferedOutptuStream对FileOutputStream进行包装,提高写入数据的效率。
缓冲流
普通流文件复制
IO流重点掌握知识点
1. 字节输出流:向文件中写入数据(FileOutputStream)
2. 字节输入流(FileInputStream)的练习
3. 字节输入流的批量读取数据
文件的拷贝
利用byte文件的拷贝
利用缓冲字节流和byte数组来拷贝文件
IO流
day12_File 和 IO流
多线程概述
继承Thread方式
实现Runnable接口的方式
实现 Callable方式创建线程
三种线程实现方式的区别
多线程的实现方案
线程的常用方法
线程安全问题
卖票案例
死锁
生产者和消费者案例
阻塞队列
day13_多线程
类加载器
反射
day16_类加载器&反射
反射调用获取方法
语法规则
xml的特殊字符
父主题
day17_XML
枚举的常用方法
枚举
注解
单元测试(Junit)
日志
day18_枚举&注解&日志
二 . JavaSE基础进阶
面向对象
分支主题
ctrl+alt+t 选择用什么语句进行包裹
ctrl+alt+m 将选中的内容抽取为方法
ctrl+p 输入提示
idea快捷键
calc
win+r
计算器
Windows
快捷键
MySQL的安装
MySQL数据库管理系统
JavaWeb
Java学习笔记
0 条评论
回复 删除
下一页