Java学习
本栏目位Java学习栏目
温润如玉L
这个作者很懒,什么都没留下…
展开
-
FileOutputStream
FileOutputStreamimport org.junit.jupiter.api.Test;import java.io.FileOutputStream;import java.io.IOException;public class FileOutputStream01 { //如果文件不存在,则会自动创建 //使用FileOutputStream在D:\Java.txt文件写入hello,world @Test public void FO...原创 2022-02-15 11:33:53 · 1638 阅读 · 0 评论 -
IO流原理和分类
IO流原理和分类 Java IO流原理 I/O是Input/Output的缩写,I/O技术是非常实用的技术,用于处理数据传输。如读/写文件,网络通讯等。 Java程序中,对于数据的输入/输出操作以“流(stream)”的方式进行。 java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过方法输入或输出数据。 输入input:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中 输出output:将程序(内原创 2022-02-13 23:09:13 · 67 阅读 · 0 评论 -
IO流目录操作
目录操作 mkdir创建一级目录、mkdirs创建多级目录、delete删除空目录或文件 import org.junit.jupiter.api.Test;import java.io.File;import java.io.IOException;public class Mkdir01 { //判断D:\Jack1.txt是否存在,如果存在就删除 //判断D:\\Java1是否存在,存在就删除,否则就创建 @Test public void...原创 2022-02-12 13:03:54 · 277 阅读 · 0 评论 -
IO获取文件信息
获取文件信息 getAbsolutePath() 文件绝对路径 getName() 文件名 getParent() 父级目录 length() 文件大小(字节) exists() 文件是否存在 isFile() 是不是一个文件 isDirectory() 是不是一个目录 import java.io.File;public class GetFileMessage { public static void main(Str..原创 2022-02-11 23:44:57 · 238 阅读 · 0 评论 -
IO流文件创建的三种方式
import org.junit.jupiter.api.Test;import java.io.File;import java.io.IOException;public class FileCreate { public static void main(String[] args) { } //方式一: new File(String pathname) @Test public void createNewFile(){ Str...原创 2022-02-10 23:20:14 · 827 阅读 · 0 评论 -
集合练习题
import java.util.TreeSet;public class Exercise04 { public static void main(String[] args) { TreeSet treeSet = new TreeSet(); //add 方法,因为TreeSet() 构造器没有传入Comparator接口的匿名内部类 //所以在底层 Comparable<? super K> K = (Comparable&l...原创 2022-01-23 23:01:06 · 246 阅读 · 0 评论 -
集合练习题02
Exercise03import java.util.Collection;import java.util.HashMap;import java.util.Map;import java.util.Set;public class Exercise03 { public static void main(String[] args) { /* 1.使用HashMap类实例化一个Map类型的对象m,键(String)和值(int)分别用于存储员工的...原创 2022-01-22 22:18:04 · 536 阅读 · 0 评论 -
公司放年假了,年假期间要持续学习
2022年01月21我请假了,九号上班,寒假加油,继续学习!原创 2022-01-21 23:53:29 · 95 阅读 · 0 评论 -
集合练习题
Exercise01import java.util.ArrayList;public class Exercise01 { public static void main(String[] args) { /* 1.封装一个新闻类,包含标题和内容属性,提供get、set方法,重写toString方法,打印对象时只打印标题; 2.只提供一个带参数的构造器,实例化对象时,只初始化标题;并且实例化两个对象: 新闻一:新冠确诊病例...原创 2022-01-20 12:37:53 · 200 阅读 · 0 评论 -
Collection工具类
Collection工具类01 Collections工具类介绍 Collections是一个操作Set、List和Map等集合的工具类 Collections中提供了一系列静态的方法对及格元素进行排序、查询和修改等操作 排序操作:(均为static方法) reverse(List):反转List中的元素顺序 shuffle(List):对List集合元素进行随机排序 sort(List):根据元素的自然顺序对指定Li原创 2022-01-19 22:06:03 · 518 阅读 · 0 评论 -
TreeSet、TreeMap 源码解读
TreeSet 源码解读import java.util.Comparator;import java.util.TreeSet;public class TreeSet01 { @SuppressWarnings({"all"}) public static void main(String[] args) { TreeSet treeSet = new TreeSet(new Comparator() { @Override ...原创 2022-01-18 20:48:50 · 199 阅读 · 0 评论 -
Properties和在实际应用中集合怎么选择
Properties Properties介绍 Properties 类继承子Hashtable类并且实现类Map接口,也是使用一种键值对的形式来保存数据 他的使用特点和Hashtable类似 Properties 还可以用于 从 xxx.properties 文件中,加载数据到Properties类对象,并进行读取和修改 说明:工作后 xxx.properties 文件通常作为配置文件,这个知识点在IO流举例 import jav原创 2022-01-17 12:59:35 · 324 阅读 · 0 评论 -
HashTable的使用和其扩容机制
HashTable的使用 HashTable介绍 存放的元素是键值对: 即 K- V hashtable的键和值都不能为null hashTable 使用方法基本上和HashMap一样 hashTable是线程安全的,hashMap是线程不安全的的 import java.util.Hashtable;public class HashTable { public static void main(String[] a..原创 2022-01-16 23:56:34 · 1196 阅读 · 0 评论 -
HashMap源码解读和扩容树的触发
HashMapyu源码解读import java.util.HashSet;public class HashSetSource { public static void main(String[] args) { HashSet hashSet = new HashSet(); hashSet.add("Java"); hashSet.add("PHP"); hashSet.add("Java"); S...原创 2022-01-15 23:23:01 · 76 阅读 · 0 评论 -
HashMap底层机制
HashMap底层机制 (k,v)是一个Node实现了Map.Entry<k,v>,查看HashMap的源码可以看到 JDK 7.0 的hashmap 底层实现 [ 数组 + 链表 ] ,JDK 8.0 底层 [ 数组 + 链表 + 红黑树 ] HashMap底层为维护了Node类型的数组他变了,默认为null 当创建对象时,将加载因子(loadfactor)初始化为0.75 当添加 key-val 时,通过key的哈希值得到再table的索引。然后原创 2022-01-14 23:41:36 · 125 阅读 · 0 评论 -
Map六大遍历方式
Map六大遍历方式 KeySet:获取所有键 entrySet: 获取所有关系 values: 获取所有的值 import java.util.*;public class MapFor { public static void main(String[] args) { HashMap hashMap = new HashMap(); hashMap.put(1,"Jack"); hashMap.put(2,"T...原创 2022-01-13 21:14:40 · 180 阅读 · 0 评论 -
HashSet底层源码解读
HashSet底层源码解读01import java.util.HashSet;public class HashSetSource { public static void main(String[] args) { HashSet hashSet = new HashSet(); hashSet.add("Java"); hashSet.add("PHP"); hashSet.add("Java"); ...原创 2022-01-12 23:27:11 · 218 阅读 · 0 评论 -
Map基本介绍和Map方法
Map接口特点 Map接口特点(JDK8的Map接口特点) Map中key不可以重复,原因和HashSet一样,重复了后面添加的会覆盖前面添加的数据 Map中key可以为null,但只能有一个,因为后面添加的数据会覆盖前面添加的数据,value为null,可以有多个 key和value为一对一关系,通过key总能找到对应的value 常用类String类作为Map的key Map与Collection并列存在。用于保存具有映射关原创 2022-01-11 23:28:13 · 810 阅读 · 0 评论 -
LinkedHashSet底层机制和源码解读
LinkedHashSet介绍 LinkedHashSet是HashSet说明 LinkedHashSet是HashSet的子类 LinkedHashSet底层是一个LinkedHashMap,底层维护了一个 数组 + 双向链表 LinkedHashSet根据元素的hashcode值来决定元素的存储位置,同时使用链表维护元素的次序,使得元素看起来十一插入顺序保存到 LinkedHashSet不能许添加重复元素 LinkedHas原创 2022-01-10 23:19:54 · 910 阅读 · 0 评论 -
HashSet练习题
HashSet练习import java.util.HashSet;import java.util.Objects;public class HashSetExercise { public static void main(String[] args) { /* 定义一个Employee类,该类包含:private成员属性name,age 要求: 1.创建3个Employee 对象放入HashSet中 ...原创 2022-01-08 23:05:44 · 579 阅读 · 0 评论 -
数组链表模拟、HashSet扩容机制
数组链表模拟 HashSet底层机制说明 HashSet的底层是HashMap,HashMap的底层是(数组+链表+红黑树) import java.util.Arrays;public class HashSetStructure { public static void main(String[] args) { //创建数组 Node[] node = new Node[16]; Node jack ...原创 2022-01-07 23:25:42 · 458 阅读 · 0 评论 -
Set集合、HashSet
Set接口方法 Set接口基本介绍 无序(添加和取出的顺序不一致),没有索引 不允许重复元素,所以最多包含一个null Jdk API中常用Set接口的是实现类有TreeSet、HashSet Set接口的遍历方式 可以使用迭代器 增强for循环 不能使用索引的方式来获取 import java.util.HashSet;import java.util.Iterator;public原创 2022-01-06 23:45:13 · 521 阅读 · 0 评论 -
LinkedList双链表和源码解析
LinkedList双链表 LinkedList的全面说明 LinkedList实现了双向链表和双端队列特点 可以添加任意元素(元素可以重复),包括null 线程不安全,没有实现同步 LinkedList的底层操作机制 LinkedList底层维护了一个双向链表 LinkedList中维护了两个属性frist和last分别指向 首节点和尾节点 每个节点(Node对象),里面有维护了prev、next、i原创 2022-01-05 23:04:14 · 553 阅读 · 0 评论 -
Vectory源码解析
Vectory注意事项 Vectory的基本介绍 Vectory 底层也是一个对象数组,protected Object[] elementData; Vectory 是线程同步的,即线程安全,Vectory类的操作方法带有synchronized public synchronized boolean add(E e) { modCount++; ensureCapacityHelper(elementCount + 1); elementD...原创 2022-01-05 12:00:00 · 327 阅读 · 0 评论 -
ArrayList扩容机制、底层源码解读
ArrayList扩容机制、底层源码解读 ArrayList的底层操作机制源码分析 ArrayList中维护了一个Object类型的数组elementData ;transient Object[] elementData; //transient 表示瞬间,短暂的,表示该属性不会被序列号 当创建对象是,如果使用的是无参构造器,则初始elementData容量为0(jdk7是10) 当添加元素时,先判断是否需要扩容,如果需要扩容,则条用grow方法,否则直接添原创 2022-01-03 23:03:19 · 469 阅读 · 0 评论 -
ArrayList注意事项
ArrayList注意事项 ArrayList可以加入多个null ArrayList是数组来实现存储数据的 ArrayList基本等同于Vector,除了ArrayList是线程不安全(执行效率高)看源码 没有 synchronized,在多线程情况下,不建议使用ArrayList public boolean add(E e) { ensureCapacityInternal(size + 1); // Increments modCount!! ele...原创 2022-01-03 23:02:14 · 278 阅读 · 0 评论 -
List三种遍历方式
List三种遍历方式 ArrayList、LinkedList、Vector三种集合遍历 方式一:iterator迭代器遍历list //iterator迭代器遍历Iterator iterator = list.iterator();//快速生成快捷键 ititwhile (iterator.hasNext()) { //判断迭代器是否为空 Object next = iterator.next(); //指针,获取数据 System.out.pr...原创 2022-01-03 00:36:13 · 1915 阅读 · 0 评论 -
List排序练习
.List排序练习import java.util.ArrayList;import java.util.LinkedList;import java.util.List;import java.util.Vector;public class ListSortExercise { /* 1.使用List实现类添加三本书,并遍历,打印如下效果 名称:xx 价格:xx 作者:xx 名称:xx 价格:xx 作者:xx 名称:xx 价格:xx ...原创 2022-01-01 23:59:57 · 347 阅读 · 0 评论 -
IDEA调试debug时stepinto进不去
最近在 idea 调试中,发现 stepinto 进不了里面的方法,和 stepover 是一样的方法:依次点击 File–>Settings–>Build,Execution,Deployment–>Debugger–>Stepping将 java.* 取消勾选即可,如果还有其他需要 stepinto 进去方法的,可以相应的取消勾选。点击 Apply 应用,再点击 OK 即可。为了 debug 有更详细的过程,建议将此处取消勾选!!,否则默认是简化.原创 2021-12-30 23:27:24 · 450 阅读 · 0 评论 -
List接口练习
接口练习import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class ListExercise { public static void main(String[] args) { /** * 添加10个以上的元素,在2号位插入一个元素"温润如玉!",获得第五个元素,删除第六个元素,修改第七个元素, * 在遍历集合,要求...原创 2021-12-29 21:26:47 · 289 阅读 · 0 评论 -
list接口方法
list接口方法 List接口是Collection接口的子接口 List集合类中元素有序(即添加顺序和去除新婚徐一致)、且可重复 List集合中每个元素都有其对应的顺序索引,及支持索引 List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素 List接口常用的实现类用ArrayList、LinkedList和Vector List接口的常用方法: void add(int index,Collectio原创 2021-12-29 21:24:53 · 612 阅读 · 0 评论 -
集合测试题
集合测试题import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class CollectionExercise { @SuppressWarnings({"all"}) public static void main(String[] args) { /** * 1.创建3个Dog{name,age}对象,放入到ArrayList中,原创 2021-12-28 23:07:59 · 244 阅读 · 0 评论 -
增强for循环
增强for循环 Collection接口遍历对象方式2 : for循环增强 增强for循环,可以代替iterator迭代器,特点:增强for循环就是iterator的简化版,本质是一样。只能用于遍历集合和数组 基本语法 for(元素类型 元素名 : 集合名或者数组名){ 访问元素} import java.util.ArrayList;import java.util.List;@SuppressWarnings({"all"})public c.原创 2021-12-28 23:02:49 · 161 阅读 · 0 评论 -
迭代器遍历
迭代器遍历 Collection接口遍历元素方式:使用Iterator(迭代器) Iterator对象称为迭代器,主要用于遍历Collection集合中的元素; 所有实现类Collection接口的集合类都有一个Iterator()方法,用以返回一个实现了了Iterator接口的对象,即剋返回一个迭代器; Iterator仅用于遍历及格,Iterator本身并不存放对象。 Iterator iterator = list.iterator(); .原创 2021-12-27 12:21:54 · 2846 阅读 · 0 评论 -
Collection接口
Collection接口 Collection接口是实现类的特点 public interface Collcetion<E> extends Iterable<E> Collection实现子类可以存放多个元素,没个元素可以是Object 有些Collection的实现类,可以存放重复的元素,有些不可以 有些Conllection的实现类,有些是有序的(List),有些不是有序的(Set) Collection接口没有直接原创 2021-12-26 23:33:29 · 276 阅读 · 0 评论 -
Java集合
1.集合介绍 前面我们保存多个数据使用的是数组,那么数组有不足的地方 数组 长度必须指定,而且一旦指定,不能更改 保存的必须为同一类型 使用数组进行增加/删除元素的示意代码,比较麻烦 写出Person数组扩容示意代码 Person[] pers = new Person[1]; //大小是1 per[0] = new Person(); 增加新的Person对象 Per...原创 2021-12-25 23:55:32 · 177 阅读 · 0 评论 -
Java常用类02
11.Calender类 Calender提供了获取或设置各种日历字段的方法 构造方法 protected Calendar():由于修饰符是protected,所以无法直接创建该对象 其他方法 import java.util.Calendar;public class Calendar01 { public static void main(String[] args) { //1.创建Calenar对象 ...原创 2021-12-24 17:14:17 · 553 阅读 · 0 评论 -
Java常用类01
1.Object类 超类、基类,所有类的直接或者间接父类,位于继承树的最顶层; 任何类,如没有书写extends显示继承某个类,都默认直接继承Object类,否则为间接继承。 Object类中所定义的方法,是所有对象都具备的方法。 Object类型可以存储任何对象 作为参数,可接受任何对象 作为返回值,可以返回任何对象 2.getClass方法 public final Class<?> getClass.原创 2021-12-23 23:14:59 · 391 阅读 · 0 评论 -
Java异常
1.异常 实际工作中,遇到的情况不可能是非常完美的。比如:你写的某个模块,用户输入不一定符合你的要求、你的程序要打开某个文件,这个文件可能不存在或者文件格式不对,你要读取数据库的数据,数据可能是空的等。我们程序跑着,内存或者硬盘就可能满了。等等。 软件程序在运行过程中,非常可能遇到刚刚提到的这些异常问题,我们叫异常,英文是:Exception,意思:例外;这些,例外情况,或者叫异常,怎么让我们写的程序做出合理的处理,而不至于程序崩溃。 异常指程序中出现的不期而至的各种情况,如:文件原创 2021-12-22 19:59:00 · 59 阅读 · 0 评论 -
小结类与对象
类与对象 类是一个模板:抽象;对象是一个具体实例; 方法 定义、调用 对应的引用 引用类型:基本类型(8) 对象是通过引用来操作的:栈 --> 堆 属性:字段Field 成员变量 默认初始化: 数字:0 0.0 char: u0000 boolean: false 引用:null ...原创 2021-12-21 23:22:07 · 56 阅读 · 0 评论