Java 基础
文章平均质量分 68
列举JavaSE中的一些基础知识,基础知识不牢固,有时候可能会让你吃大亏!
FARO_Z
还好有好好学,毕业没失业
展开
-
浅尝 java8 新特性
文章目录Java8 新特性一、集合1、Optional1)Optional 介绍2)Optional 演示3)Optional 方法介绍3)Mybatis 使用 Optional二、Lambda 表达式1、无参函数式接口2、带参函数式接口二、流式编程1、获得流2、中间操作1)distinct()2)filter()3)map()4)sorted()3、结束操作1)forEach()2)collect()Java8 新特性Java 8 是目前使用的最广的 jdk 版本,其中包含了很多新特性,这里,我们就原创 2021-08-09 17:50:50 · 226 阅读 · 0 评论 -
BigDecimal 的使用
BigDecimal 的使用一、介绍BigDecimal用于表示精确的小数,常用于财务计算;比较BigDecimal的值是否相等,必须使用compareTo()而不能使用equals()。二、常用操作public static void main(String[] args) { BigDecimal num1 = new BigDecimal("23"); BigDecimal num2 = new BigDecimal("2"); BigD原创 2021-07-03 17:19:22 · 89 阅读 · 0 评论 -
Java 多线程 万字最详解
文章目录Java多线程多线程概述线程与进程线程调度同步与异步并发与并行线程阻塞Java 多线程的实现继承 Thread 类实现 Runnable 接口实现 `Callable`接口Thread 类讲解线程状态`currentThread()`线程休眠`sleep()`线程中断`interrupt()`守护线程`setDaemon()`主线程之前完成`join()`线程安全问题线程不安全的演示解决方法 1:同步代码块解决方法 2:同步方法解决方法 3:显示锁 Lock更多 synchronized 用法显示锁原创 2021-05-05 16:27:00 · 192 阅读 · 0 评论 -
Java Properties文件的使用
Properties配置文件,很多是用 .properties 的存储的方式,是键值对,类似于下面的形式键=值存public static void main(String[] args) throws IOException { Properties ppt = new Properties(); //在内存中,存入数据 ppt.put("name","金苹果"); ppt.put("desc","讲述了苹果种植的辛酸历程");原创 2021-05-04 18:23:06 · 67 阅读 · 0 评论 -
Java IO 详细解析
Java IOIOFile`mkdir()``mkdirs()``createNewFile()``delete()``getAbsolutePath()``getName()``getParent()``getParentFile()``length()``list()``listFiles()``renameTo(File newFile)`———— 实战————判断==文件夹==是否存在,不存在,则创建判断==文件==是否存在,不存在,则创建依据传来的==文件夹==,在里面==新建文件==遍历一个文件原创 2021-05-04 17:55:46 · 242 阅读 · 0 评论 -
Java 集合 源码分析+重点解析 超详细学习资料
Java集合集合————单值存储————CollectionList相对于 Collection,添加的方法ArrayList底层实现是数组:为什么默认是长度为 10?为什么扩容 1.5 倍?VectorLinkedListIterator 和 ListIteratorIteratorIteraotr 实现删除ListIteratorSetSet集合该怎么获取元素?HashSetTreeSetTreeSet 放置自定义实例————键值对存储————哈希表概念碰撞处理桶散列因子HashMapHashMap 的原创 2021-05-03 17:40:00 · 500 阅读 · 2 评论 -
Java常用类,指导手册
常用类Objectsequals()源代码:public static boolean equals(Object a, Object b) { return (a == b) || (a != null && a.equals(b));}在使用 Objects的 equals 方法前,我们要保证,我们对比的对象,也重写了 equals 方法我们之所以不直接使用比对对象重写的 equals 方法,是因为担心比对对象的某一个是 null:[外链图片转存失败,源站可能有原创 2021-05-02 18:02:00 · 916 阅读 · 0 评论 -
堆、栈、和方法区
文章目录堆、栈、方法区堆新生代老年代永久代栈方法区小结堆、栈、方法区下面这张图,是这三个部分的大体演示:堆一个 JVM 实例只存在一个堆,堆内存的大小是可以调节的,类加载器读取了类文件后,需要把类、方法、常变量放到堆内存中,保存所有引用类型的真实信息,以方便执行器执行新生代刚创建的对象,都是放在新生代中的,新生代的 GC 询问比较频繁,过一会,就会检查这个对象是否需要被回收老年代如果一个新生代中的对象,经过了 15 次 GC 访问,都没有被回收,那么,这个对象,就会被转移到老年代中。老年代原创 2021-05-02 17:39:44 · 251 阅读 · 1 评论 -
Java 泛型详解
泛型泛型分下面这三种情况泛型类就是我们最长用的泛型使用public class MyList<T> { /** * 这里放一个数组,用来存储信息 * 但是,用下面这种方式,设置数组是不行的 */ // T []element; 用这种方式,是不行的 /** * 泛型主要就是起一个限定作用, * 在 ArrayList 中,里面的数组是 Object 类型 * 但是对传入的数据,做了类型限制 *原创 2021-04-30 13:31:23 · 79 阅读 · 0 评论 -
你真的了解 枚举 enum 吗?
枚举我发现,很多讲枚举的地方,只是讲枚举怎么用,并没有将枚举的性质讲清楚使用使用我相信各位都没什么困难,如果没有用过枚举的话,我相信,在看完性质后,就知道怎么使用了。性质枚举类中的每一个对象,都相当于一个内部类,调用枚举的对象的时候,会实例化其中所有对象仅调用 RED:public class Demo1 { enum Color { RED,GREEN,YELLOW; Color() { System.out.prin原创 2021-04-08 11:34:16 · 113 阅读 · 0 评论 -
设计模式 观察者模式的介绍与思考
观察者模式报社(Subject) 和订阅者(Observer)观察者模式,就是 观察者Observer去关注Subject,然后当Subject发生数据改变的时候,能将关注它的观察者的数据全部改变。主题Subject必须实现的接口public interface Subject { /** * 注册新的观察者 * @param o */ void addObserver(Observer o); /** *原创 2021-03-25 14:17:16 · 72 阅读 · 0 评论 -
java泛型,你真的了解吗?
Java 泛型一直在使用泛型,但对于泛型的一些知识,你真的了解吗?1.<T> T是什么鬼我们在看源码的时候,经常会看到这样的代码public static <T> T copy(Object source, Class<T> clazz) {}这里的T,顾名思义,就是返回值为泛型但是,这个<T>又是什么东西?其实,这个问题,要从类上面看:public class CopyUtil { /** * 单体复制 */原创 2021-03-22 11:39:10 · 94 阅读 · 0 评论 -
接口那点事,你真的了解吗???
Java 接口这里不讲为什么需要使用接口,因为大部分人开发那么久,应该都了解使用接口的原因和好处了吧,无非就是松耦合那一套吗,但关于接口的一些问题,你真的考虑过嘛?。1. 接口中的方法不用声明为public虽然写上不会报错,但是完全没有必要,因为接口实现的时候,只能是public更别提将接口方法声明为private,protected了,直接报错2. 接口实现的时候,只能是public除了public,其他类型准报错何况你再想想,如果要将接口方法申明为private,那写这个接口,还有什么原创 2021-03-18 00:24:36 · 440 阅读 · 0 评论 -
关于 i++ 和 ++i ,以及在函数中使用 ++ 的重要思考
关于i++和++i的重要思考先看下面这个程序:public class PPTest { public static void main(String[] args) { int x=0; System.out.println("函数外x为:"+x); test(x++); System.out.println("现在x是:"+x); test(++x); System.out.println("现在原创 2021-03-17 17:53:12 · 295 阅读 · 0 评论 -
Java IO IO类之间的区别于联系
Java IO 包讲解IO类的继承关系如下:字节流:字符流:具体使用就没必要说了,大概说一下关系:字节流和字符流字节流,是将文件,以字节的形式读取和读出。适合操作图片,程序等非文本文件字符流,是将文件,以字符的形式读取和读出。适合操作文本文件字节流InputStream和OutputStream是基类,无法直接使用FileInputStream是一个字节一个字节的读取,需要大量IO操作BufferedInputStream是先将字节读入缓存,然后一次性操作,IO操原创 2021-03-15 16:15:43 · 104 阅读 · 0 评论 -
位运算 学习笔记
位运算位运算,因为在开发中使用很少,是很多人忽略的问题。但是,合理使用位运算,能大大增加程序运行效率常见位运算符号Java提供的位运算符有:左移( << )、右移( >> ) 、无符号右移( >>> ) 、位与( & ) 、位或( | )、位非( ~ )、位异或( ^ ),除了位非( ~ )是一元操作符外,其它的都是二元操作符。左移( << )Test1、将5左移2位:package com.xcy;public class原创 2021-03-13 15:06:23 · 72 阅读 · 0 评论 -
byte类型,一文就够了
byte类型解析因为byte类型在开发中使用得比较少,很多人都对其一知半解,我一开始也是,但是研究一下以后,对许多问题都能豁然开朗了。运算报错问题byte类型参数运算,无论是否超范围,都会报错:byte类型常数运算,超范围,会报错,不超范围,不会报错:这是因为:两个变量相加,先对类型进行提升,然后运算,再将运算结果赋值。两个常量相加,先计算常量数值,然后判断是否满足类型范围,再赋值。范围超出问题byte类型,范围是-128~127,但是如果相加结果超出范围,那显示的是什么结果?原创 2021-03-13 13:53:36 · 4871 阅读 · 0 评论 -
mac上idea断点调试的快捷键
mac系统下,IDEA断点调试的快捷键注意:键盘上要使用f1-f12键的话,需要fn键和需要的键一起按,不然的话是功能键control+D:开启调试f8:跳到下一步(大跳,不会进入到方法里面)shift+f8:跳到下一个断点f7:进入代码(就是进入方法里,只要这一行里面有方法,就会依次进入所有方法里面,但是java jar包中加锁的用这个快捷键是进不去的,比如HashMap)(option)+shift+f7:强制进入代码(有一些代码是不会进的,用这个快捷键会强制进入,比如说HashMap,直原创 2020-09-07 16:06:27 · 4430 阅读 · 0 评论 -
java 反射:框架的灵魂
反射:框架的设计灵魂框架:半成品软件。可以在框架的基础上进行软件开发,简化编码在了解反射的概念之前,要先了解java代码在计算机中经历的三个阶段,如下图反射:将类的各各组成部分封装成为其他对象,这就是反射机制如上图中所示,将成员变量name、age封装成Field对象;将构造方法封装成为Constructor对象;将成员方法封装成为Method对象,这就是反射机制好处:可以在程序的运行过程中去操纵这些对象,如下所示:String str后面跳出来许多可用的方法,这就是上原创 2020-08-15 01:31:47 · 121 阅读 · 1 评论 -
JAVA ArrayList 实现排序
我们先生成20个随机数,存入ArrayListArrayList<Integer> al=new ArrayList<>(); Random r=new Random(); for (int i=0;i<20;i++) { al.add(r.nextInt(100)); }输出结果如下对于ArrayList的排序,有两种实现形式使用Collections的排序使用ArrayList自带的原创 2020-07-07 15:35:25 · 3425 阅读 · 0 评论 -
JAVA 迭代器 next(),hasNext()初探
目录前言原码解析总结前言在使用迭代器的时候,我总是被next(),hasNext()到底指向哪一个元素给迷惑,这次自己读了读原码,总算对相关的知识有了一丁点了解,这次就来分享一下。原码解析对于hasNext()public boolean hasNext() { return cursor != size; }其实现方式是如果游标还没有达到容器的size大小,就返回true,这里与许多人解释的方式不一样, hasNext()不是指有没有下一个元素,原创 2020-07-07 14:07:52 · 6236 阅读 · 11 评论 -
JAVA 常用方法
这里写目录标题1.trim()2.Java indexOf()3.split()4.charAt()5.substring()6.replace()方法7.parseInt()8.arrayCopy()1.trim()trim() 方法用于删除字符串的头尾空白符。public String trim()实例:public class Test { public static void main(String args[]) { String Str = new Strin原创 2020-06-28 22:51:06 · 179 阅读 · 0 评论 -
JAVA语法 抽象类和接口的区别
前言乍看之下,两者实现的功能好像差不多,因为两者都不能被实例化,但其实差别还是很大的区别抽象类要被子类继承接口要被类实现接口只能做方法声明抽象类中可以作方法声明,也可以做方法实现接口里定义的变量只能是公共的静态的常量抽象类中的变量是普通变量接口是设计的结果抽象类是重构的结果.这里用通俗易懂一点的话来讲,就是:接口,就是写文章先写好所有的小标题。然后所有人都使用一样的小标题,但底下的文章可以自由发挥抽象类,就是写文章先写好所有的小标题,但小标题下也可以先预先写原创 2020-06-28 22:18:17 · 97 阅读 · 0 评论 -
JAVA 异常处理
最近学习到了JAVA的异常处理,这里把自己记录下的思维导图分享一下导图只是起一个引导作用,没有详细的代码原创 2020-05-30 14:11:14 · 81 阅读 · 0 评论 -
JAVA 抽象类和接口的异同点
抽象类和接口的异同点接口和抽象类的区别:(1)抽象类可以有构造方法,接口中不能有构造方法。(2)抽象类中可以有普通成员变量,接口中没有普通成员变量(3)抽象类中可以包含静态方法,接口中不能包含静态方法(4) 一个类可以实现多个接口,但只能继承一个抽象类。(5)接口可以被多重实现,抽象类只能被单一继承(6)如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中方法接口和抽象类的相同点:(1) 都可以被继承(2) 都不能被实例化(3) 都转载 2020-05-22 20:49:35 · 208 阅读 · 0 评论