Java学习笔记
2021-08-29 14:15:46 0 举报
AI智能生成
登录查看完整内容
补充API的笔记
作者其他创作
大纲/内容
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集合时出现的异常
异常
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_多态
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 add(另一个BigDecimal对象);
加法
BigDcimal subtract(另一个BigDecimal对象);
减法
BigDcimal multiply(另一个BigDecimal对象);
乘法
BigDcimal divide(另一个BigDecimal对象);
除法
四则运算
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
基本类型的包装类
自动装箱和自动拆箱
包装类的数据转换
包装类
二分查找
冒泡排序
数组的高级操作
Arrays数组工具类
常用的类
API文档
API 应用程序编程接口(Application Programming Interface)
day05
day06_
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:没有重复元素的无序集合
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接口
Collection接口
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:存储键值关联的数据结构
TreeMap:键值有序排列的映射表
EnumMap:键值属于枚举类型的映射表
LinkedHashMap:可以记住键值添加顺序的映射表
K firstKey():返回最小元素
K lastKey():返回最大元素
SortedMap
WeakHashMap:如果值以后不再被使用则可以被GC回收的映射表
IdentityHashMap:用 == 而不是equals比较键值的映射表
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
可变参数用在方法的形式参数的位置,它可以看做是一个数组,可以接收多个实际参数。
//求任意几个数的和//int... array : 可变参数,可以接收多个int类型的值public static int getSum(int... array){ int sum=0; for(int i=0;i<array.length;i++){ sum+=array[i]; } return sum; }
可变参数的运用
可变参数
Stream<元素类型> strem = 集合对象.stream();
单列集合获取流,直接使用集合对象调用stream()方法即可;
单列集合获取流
双列集合获取流,不能够直接获取,把双列集合转换为单列集合;
//键集,获取流 Stream<键的类型> keyStream=map.keySet().stream();
//值集,获取流 Stream<值的类型> valueStream=map.values().stream();
//键值对集,获取流 Stream<Map.Entry> entryStream=map.entrySet().stream();
双列集合获取流
数组获取流、同一个类型的多个数据获取流
获取流
对Stream流进行中间操作,返回值也是一个Stream流。
fliter: 对元素进行过滤
limit: 截取前面n个元素
skip: 跳过前面n个元素
map: 对流中的元素类型进行转换
中间操作
forEach: 遍历元素
count: 统计个数
toList: 把元素放到List集合中
toSet: 把元素放到Set集合中
toMap: 把元素放到Map集合 需要给定2个Lambda表达式,分别表示键和值
collect: 收集剩余的元素到新的集合
终结操作
ArrayList<Student> list=new ArrayList<>();list.add(new Student(\"张三\
package com.itheima.job.test02;import java.util.Arrays;import java.util.List;import java.util.stream.Collectors;import java.util.stream.Stream;/** * @Auther: YeJunli * @Date: 2021/8/26 - 08 - 26 - 22:22 * @Description: * @version: 1.0 */public class Test02 { public static void main(String[] args) {// 二、按要求完成下面的需求:// 1.定义一个字符串数组// String[] arr = {\"123\
练习题
Stream流练习
例题
流程
Stream(流)
创建File对象时,需要指定一个路径。这个路径可以存在,也可以不存在,可以是文件路径也可是文件夹路径。
File f1=new File(\"C:\\\\a.txt\");System.out.println(f1);
File f2=new File(\"C:\\\\itheima\\\\aaa\
File dir=new File(\"C:\\\\itheima\\\\aaa\
文件所在的文件夹必须存在
boolean newFile = dir.createNewFile();
创建一个新的空的文件
boolean mkdir = dir.mkdir();
创建一个单级文件夹
boolean mkdirs = dir.mkdirs();
创建单级文件夹或创建多级文件夹
方法名
File类创建功能
创建File类对象的方式
把String类型的字符串变成File对象
File(String pathname)
把两个路径进行拼接
把一个File对象和String字符串进行拼接成为一个新的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 boolean mkdir() 创建文件夹
public boolean mkdirs() 创建多级文件夹(推荐)
public boolean createNewFile() 创建文件
创建
public void delete() 删除文件或者文件夹(必须是空的文件夹才能删除)
删除
boolean exists = file.exists();
public boolean exists() 判断File对象的路径是否存在
boolean directory = file.isDirectory();
public boolean isDirectory() 判断File对象的路径是否为文件夹路径
boolean file1 = file.isFile();
public boolean isFile() 判断File对象的路径是否为文件路径
判断
返回由此抽象路径名表示的文件或目录的名称
public String getName() 获取文件或者文件夹的名称
public String getParent() 获取文件或者文件夹的父目录,返回字符串
public File getParentFile() 获取文件或者文件夹的父目录,返回File对象
public String getPath() 获取File对象封装的路径
public File getAbsoluteFile() 获取绝对路径,返回值File对象
public long length() 获取文件的大小,单位(字节) 不能获取文件夹的长度
File dir = new File(\"day11_heima_IOStream\\\\src\\\\test01\\\\a.txt\"); //获取文件名 System.out.println(dir.getName()); //获取File对象中的文件的路径 System.out.println(dir.getParent()); //获取父绝对路径 System.out.println(dir.getAbsolutePath()); //获取File对象的封装路径 System.out.println(dir.getPath()); long length = dir.length(); System.out.println(\"获取文件的大小(字节):\
获取
File f1 = new File(\"/Users/itheima/Desktop/a.txt\");//1.判断f1是文件吗?boolean b1 = f1.isFile();System.out.println(b1); //true
//2.判断f1是文件夹吗?boolean b2 = f1.isDirectory();System.out.println(b2); //false
//3.判断f1的路径是否存在boolean b3 = f1.exists();System.out.println(b3); //true
//4.获取名称String name = f1.getName();System.out.println(name); //a.txt
//5.获取父路径String parent = f1.getParent();System.out.println(parent); // /Users/itheima/DesktopFile parentFile = f1.getParentFile();System.out.println(parentFile); // /Users/itheima/Desktop
//6.获取绝对路径String absolutePath = f1.getAbsolutePath();System.out.println(absolutePath); // /Users/itheima/Desktop/a.txtFile absolutePathFile = f1.getAbsoluteFile();System.out.println(absolutePathFile); // /Users/itheima/Desktop/a.txt
//7.获取File对象封装的路径File f2 = new File(\"day11/a.txt\");System.out.println(f2.getPath()); // day11/a.txt
//8.获取文件的大小File f3 = new File(\"day11/a.txt\");System.out.println(f3.length());
用法
遍历文件夹的方法
File类的常用方法
返回null
当调用者不存在时
返回为null
当调用者是一个文件时
返回一个长度为0的数组
当调用者时一个空文件夹时
将文件夹内的全部File对象返回
当调用者是一个有内容的文件夹时
当调用者是一个有权限才能进入的文件夹时
注意事项:
File[] files = file.listFiles();
File类中的高级获取功能
先删除这个文件夹里面的所有文件内容
可以解决所有文件夹里面所有内容的File对象
注意:
思路
进入------得到file文件夹里面所有内容的File对象
遍历
递归
删除自己
步骤
删除一个多级文件夹及文件
练习
删除文件夹的思路:先删除里面的内容,然后再删除外面空的文件夹
删除文件夹
操作
File对象的常见方法
File类表示文件或者文件夹的路径
IO流是用来处理数据的输入(读)和输出(写)的。
IO可以对硬盘中的文件进行读写
IO流所做的事情就是对文件的读和写的操作
把你脑子里所想的事情,写在纸上,这个过程叫输出;
输入
这里有一本小说,你把书本上的问题读取到大脑里,这个过程叫输入;
输出
IO流分为输入流和输出流,输入流:读取数据; 输出流:写入数据
什么是io流
输入流: 读数据
输出流: 写数据
按流向
- 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是否存在
//创建输出流对象(搭桥),需要关联一个文件//如果文件不存在,会自动创建一个//如果文件存在,会把原来的文件覆盖掉。 FileOutputStream fos=new FileOutputStream(\"myModule11\\\\a.txt\");
//写数据(过桥)fos.write(\"helloworld\".getBytes());fos.write(\"\\\".getBytes()); //写一个换行fos.write(\"你好世界\".getBytes());
//写单个字节fos.write(97); //97对应字符'a'
//释放资源(过河拆桥)fos.close();
字节流写数据
//1.创建输入流对象FileInputStream fis=new FileInputStream(\"myModule11\\\\a.txt\");
//3.释放资源fis.close();
字节流读数据
需求:把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\
一次复制多个字节【重点】
把a.txt文件中的内容,复制到b.txt文件中文件复制的思路: 使用输入流,读取源文件(a.txt) 使用输出流,写入目标文件(b.txt)//使用输入流,读取源文件(a.txt)FileInputStream fis=new FileInputStream(\"myModule11\\\\itheima42.jpg\");//使用输出流,写入目标文件(b.txt)FileOutputStream fos=new FileOutputStream(\"myModule11\\\\itheima43.jpg\
字节流复制文件【重点】
//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和BufferedOutputStream用来对已有的InputStream和OutPutStream进行包装,从而提高读写效率。//记录开始时间long start = System.currentTimeMillis();//读取a.exe文件BufferedInputStream bis = new BufferedInputStream(new FileInputStream(\"C:\\\\itheima\\\\a.exe\"));//写入b.exe文件BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(\"C:\\\\itheima\\\\c.exe\
字节缓冲流复制文件【重点】
缓冲流文件复制
BufferedInputStream对FileInputStream进行包装,提高读取数据的效率。
BufferedOutptuStream对FileOutputStream进行包装,提高写入数据的效率。
缓冲流
普通流文件复制
IO流重点掌握知识点
IO流
day01_File 和 IO流
三种实现方式
线程安全
死锁问题
多线程(基础)
生产者消费者案例
day13_多线程
二 . JavaSE基础进阶
面向对象
分支主题
ctrl+alt+t 选择用什么语句进行包裹
ctrl+alt+m 将选中的内容抽取为方法
idea快捷键
calc
win+r
计算器
Windows
快捷键
Java学习笔记
0 条评论
回复 删除
下一页