
Java
文章平均质量分 64
Java
黄道婆
大数据开发工程师、AI算法工程师,喜欢写代码、喜欢读IT资料,IT行业的一名小学生,持续学习ing。活到老,学到老。
程序员的追求:知识、技术、创新。我喜欢这句话。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java代码:产生随机数
java代码:产生随机数原创 2023-09-05 20:14:54 · 494 阅读 · 0 评论 -
java学习笔记:统计字符串在文件中出现的次数 源代码
写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。package study.count;import java.io.BufferedReader;import java.io.FileReader;public class MyUtil { // 工具类中的方法都是静态方式访问的因此将构造器私有不允许创建对象(绝对好习惯) private MyUtil() { throw new AssertionError();原创 2021-08-04 21:37:58 · 202 阅读 · 0 评论 -
转载:java 7新特性-TWR(Try-with-resources)
原始链接:https://blog.youkuaiyun.com/ty_laurel/article/details/60348495java 7新特性-TWR(Try-with-resources)今天在资料上练习文件拷贝程序时,遇到了java 7中的一个新特性TWR,可以减少实际中的部分代码书写,对其做以记录。try-with-resources语句是声明了一个或多个资源的try语句块。在java中资源作为一个对象,在程序完成后必须关闭。try-with-resources语句确保每个资源在语转载 2021-08-04 17:27:28 · 194 阅读 · 0 评论 -
java学习笔记:Java的IO流要点、文件拷贝源代码
问题:Java 中有几种类型的流?答:字节流,字符流。字节流继承于InputStream、OutputStream,字符流继承于Reader、Writer。在java.io 包中还有许多其他的流,主要是为了提高性能和使用方便。补充:关于Java的IO需要注意的有两点:一是两种对称性(输入和输出的对称性,字节和字符的对称性);二是两种设计模式(适配器模式和装潢模式)。另外Java中的流不同于C#的是它只有一个维度一个方向。补充:下面用IO和NIO两种方式实现文件拷贝,这个题目在面试的时候是经常被问原创 2021-08-03 16:34:09 · 151 阅读 · 0 评论 -
转载:简说设计模式_GoF
原始链接:https://www.cnblogs.com/adamjwh/p/9033554.html转载 2021-08-08 16:11:39 · 80 阅读 · 0 评论 -
转载:简说设计模式_GoF
原始链接:https://www.cnblogs.com/adamjwh/p/9033545.html简说设计模式 设计模式是一个很重要的内容,接下来将逐步的介绍一下常用的23种设计模式及其它的一些设计模式,每一个设计模式都配有模板代码和简单测试用例方便理解,完整代码会逐步上传到码云中,链接放上:https://gitee.com/adamjiangwh/GoF。 本篇主要介绍一下设计模式的基本原则,并给出目录。一、什么是设计模式 设计模式是一套被反复使用...转载 2021-07-12 11:34:02 · 96 阅读 · 0 评论 -
设计模式之装饰模式(Decorator)_代码(二)
文章标题:转载:设计模式之装饰模式(Decorator)文章链接:https://blog.youkuaiyun.com/elizabethxxy/article/details/118608823代码:package com.study.javastudy.designpattern.decorator.dressingexample;public class Person { private String name; public Person() {} public原创 2021-07-10 21:24:17 · 117 阅读 · 0 评论 -
设计模式之装饰模式(Decorator)_代码(一)
文章标题:转载:设计模式之装饰模式(Decorator)文章链接:https://blog.youkuaiyun.com/elizabethxxy/article/details/118608823代码:package com.study.javastudy.designpattern.decorator;public abstract class Component { public abstract void operation();}-----package com.st..原创 2021-07-10 17:44:58 · 142 阅读 · 0 评论 -
java学习笔记:线程的基本状态以及状态之间的关系
java学习笔记:线程的基本状态以及状态之间的关系除去起始(new)状态和结束(finished)状态,线程有三种状态,分别是:就绪(ready)、运行(running)和阻塞(blocked)。其中就绪状态代表线程具备了运行的所有条件,只等待CPU调度(万事俱备,只欠东风);处于运行状态的线程可能因为CPU调度(时间片用完了)的原因回到就绪状态,也有可能因为调用了线程的yield方法回到就绪状态,此时线程不会释放它占有的资源的锁,坐等CPU以继续执行;运行状态的线程可能因为I/O中断、线原创 2021-07-08 18:05:50 · 155 阅读 · 0 评论 -
java学习笔记:多线程代码示例
Question: 编写多线程程序有几种实现方式?答:Java 5以前实现多线程有两种实现方法:一种是继承Thread类;另一种是实现Runnable接口。两种方式都要通过重写run()方法来定义线程的行为,推荐使用后者,因为Java中的继承是单继承,一个类有一个父类,如果继承了Thread类就无法再继承其他类了,显然使用Runnable接口更为灵活。补充:Java 5以后创建线程还有第三种方式:实现Callable接口,该接口中的call方法可以在线程执行结束时产生一个返回值。(展开知识,详见原创 2021-07-08 13:25:55 · 386 阅读 · 0 评论 -
转载:深入学习java源码之Callable.call()与Future.get()
原始链接:https://blog.youkuaiyun.com/qq_35029061/article/details/86750369深入学习java源码之Callable.call()与Future.get()wespten 2019-02-03 08:07:50 7904 收藏 8分类专栏: Java源码 文章标签: 深入学习java源码之Callable.call()与Fut版权深入学习java源码之Callable.call()与Future.get()Callable和Futur..转载 2021-07-08 10:40:16 · 719 阅读 · 0 评论 -
java学习笔记:多线程的一个代码示例
java学习笔记:多线程的一个代码示例需求:100个线程同时向一个银行账户中存入1元钱。/** 在没有同步的情况下,执行结果通常是显示账户余额在10元以下,出现这种状况的原因是,当一个线程A试图存入1元的时候,另外一个线程B也能够进入存款的方法中,线程B读取到的账户余额仍然是线程A存入1元钱之前的账户余额,因此也是在原来的余额0上面做了加1元的操作,同理线程C也会做类似的事情,所以最后100个线程执行结束时,本来期望账户余额为100元,但实际得到的通常在10元以下。。解决这个问题的办法原创 2021-07-07 20:43:17 · 177 阅读 · 0 评论 -
java学习笔记:sleep和wait的区别, sleep和yield的区别
java学习笔记:sleep和wait的区别, sleep和yield的区别3.7 sleep()和wait()有什么区别?答:sleep()方法是线程类(Thread)的静态方法,导致此线程暂停执行指定时间,将执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复(线程回到就绪(ready)状态),因为调用sleep 不会释放对象锁。wait()是Object 类的方法,对此对象调用wait()方法导致本线程放弃对象锁(线程暂停执行),进入等待此对象的等待锁定池,只有针对此对象发出no原创 2021-07-05 18:12:37 · 194 阅读 · 0 评论 -
java学习笔记:集合比较排序的示例代码
Question: TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?答:TreeSet要求存放的对象所属的类必须实现Comparable接口,该接口提供了比较元素的compareTo()方法,当插入元素时会回调该方法比较元素的大小。TreeMap要求存放的键值对映射的键必须实现Comparable接口从而根据键对元素进行排序。Collections工具类的sort方法有两种重载的形式,第一种要求传入的待排序容器中存放的对象比较实现C原创 2021-07-05 17:55:52 · 91 阅读 · 0 评论 -
java学习笔记:里氏代换原则的两个例子
java学习笔记:里氏代换原则的两个例子(根据里氏代换原则[能使用父类型的地方一定能使用子类型],抓取ExampleA类型异常的catch块能够抓住try块中抛出的ExampleB类型的异常)package com.study.javastudy;class ExampleA extends Exception{}class ExampleB extends ExampleA{ ExampleB(String s){}}public class TestExample原创 2021-07-05 11:42:37 · 353 阅读 · 0 评论 -
java学习笔记:用递归编写程序的要点
用递归编写程序时一定要牢记两点:1. 递归公式;2. 收敛条件(什么时候就不再递归而是回溯了)。原创 2021-06-30 11:03:19 · 139 阅读 · 0 评论 -
java学习笔记:Error 和Exception 有什么区别?
Question: Error 和Exception 有什么区别?答:Error 表示系统级的错误和程序不必处理的异常,是恢复不是不可能但很困难的情况下的一种严重问题;比如内存溢出,不可能指望程序能处理这样的情况;Exception 表示需要捕捉或者需要程序进行处理的异常,是一种设计或实现问题;也就是说,它表示如果程序运行正常,从不会发生的情况。...原创 2021-06-30 11:01:40 · 91 阅读 · 0 评论 -
转载:java assert基本用法
原始路径:https://my.oschina.net/hongliangsun/blog/1546439java assert基本用法assert简介:java assert(断言) 一般断言在开发和测试的阶段进行开启,用于检查程序的基本正确性,在VM arguments里面输入-ea就可以开启了。如果没有这个参数,assert在程序中将不起作用。assert基本语法:1. assert expression1;2. assert expression1: expression转载 2021-06-30 09:55:04 · 1433 阅读 · 0 评论 -
java学习笔记:什么时候用assert?
什么时候用assert?答:assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。一般来说,assertion用于保证程序最基本、关键的正确性。assertion检查通常在开发和测试时开启。为了提高性能,在软件发布后, assertion检查通常是关闭的。在实现中,断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为true;如果表达式计算为false,那么系统会报告一个AssertionError。断言用于调试目的:assert(a >原创 2021-06-30 09:08:21 · 18242 阅读 · 0 评论 -
java学习笔记:日期和时间的一些操作源代码
package com.study.javastudy;import java.util.Calendar;public class CalendarTest { public static void main(String[] args) { // 日期和时间的一些操作 // Question: 如何取得年月日、小时分钟秒? // 创建java.util.Calendar 实例,调用其get()方法传入不同的参数即可获得参数所对应的值 .原创 2021-06-29 21:03:25 · 115 阅读 · 0 评论 -
java学习笔记:java 获取系统中默认的编码、字符串编码转换源代码
java学习笔记:java 获取系统中默认的编码、字符串编码转换源代码import java.io.UnsupportedEncodingException;import java.nio.charset.Charset;public class Main { public static void main(String[] args) throws UnsupportedEncodingException { // java 获取系统中默认的编码 /原创 2021-06-29 14:10:17 · 643 阅读 · 0 评论 -
java学习笔记:字符串的反转的代码
java学习笔记:字符串的反转的代码public class Main { public static String reverse(String originStr) { if(originStr == null || originStr.length() <= 1) return originStr; return reverse(originStr.substring(1)) + originStr.charAt(0);原创 2021-06-28 16:34:30 · 129 阅读 · 0 评论 -
java学习笔记:创建对象时构造器的调用顺序
package com.study.javastudy;class A { static { System.out.print("1"); } public A() { System.out.print("2"); }}class B extends A { static { System.out.print("a"); } public B() { System.out..原创 2021-06-24 21:42:14 · 448 阅读 · 0 评论 -
java学习笔记:java如何实现对象克隆
直接上代码。package com.study.javastudy;/** 问:java如何实现对象克隆?答:有两种方式:1)实现Cloneable接口并重写Object类中的clone()方法;2)实现Serializable接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆,代码如下。* */import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java..原创 2021-06-24 12:16:10 · 114 阅读 · 0 评论 -
java学习笔记:一个内存泄漏的例子
java学习笔记:一个内存泄漏的例子/** 在实际开发中,可能会存在无用但可达的对象,这些对象不能被GC回收也会发生内存泄露。一个例子就是Hibernate的Session(一级缓存)中的对象属于持久态,垃圾回收器是不会回收这些对象的,然而这些对象中可能存在无用的垃圾对象。下面的例子也展示了Java中发生内存泄露的情况:* */package com.study.javastudy;import java.util.Arrays;import java.util.EmptyS原创 2021-06-23 19:26:28 · 253 阅读 · 0 评论 -
java学习笔记:扑克牌类的源代码
偶然看到,觉得设计得很有道理,故记录一下。设计主要是采用了非静态内部类的方式,即:Poker类里嵌套内部类Card。package com.study.javastudy;/** * 扑克类(一副扑克) */public class Poker { private static String[] suites = {"黑桃", "红桃", "草花", "方块"}; private static int[] faces = {1, 2, 3, 4, 5, 6, 7,原创 2021-06-23 18:09:18 · 1395 阅读 · 1 评论 -
java学习笔记:抽象类(abstract class)和接口(interface)有什么异同?
小学生曰:这个基础知识纯粹死记硬背是没用的,需要在不断的实践应用中锻炼和理解。抽象类(abstract class)和接口(interface)有什么异同?答:抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用。一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类。接口比抽象类更加抽象,因为抽象类中可以定义构造器,可以有抽象方法和具体方法,而接口中不能定义构造器而且其中的方法全部都是抽象方法。抽象类中的成员可以是priva.原创 2021-06-22 11:24:09 · 135 阅读 · 0 评论 -
java学习笔记:JVM 加载class文件的原理机制
描述一下JVM 加载class文件的原理机制?答:JVM 中类的装载是由类加载器(ClassLoader) 和它的子类来实现的,Java中的类加载器是一个重要的Java 运行时系统组件,它负责在运行时查找和装入类文件中的类。补充:1)由于Java的跨平台性,经过编译的Java源程序并不是一个可执行程序,而是一个或多个类文件。当Java程序需要使用某个类时,JVM会确保这个类已经被加载、连接(验证、准备和解析)和初始化。类的加载是指把类的.class文件中的数据读入到内存中,通常是创建一个字节数组原创 2021-06-22 11:15:35 · 104 阅读 · 0 评论 -
java学习笔记:重载(Overload)和重写(Override)的区别
重载(Overload)和重写(Override)的区别答:方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求。...原创 2021-06-22 11:05:27 · 103 阅读 · 0 评论 -
java学习笔记:关于equals和hashCode方法
补充:关于equals和hashCode方法,很多Java程序都知道,但很多人也就是仅仅知道而已,在Joshua Bloch的大作《Effective Java》(很多软件公司,《Effective Java》、《Java编程思想》以及《重构:改善既有代码质量》是Java程序员必看书籍,如果你还没看过,那就赶紧去亚马逊买一本吧)中是这样介绍equals方法的:首先equals方法必须满足自反性(x.equals(x)必须返回true)、对称性(x.equals(y)返回true时,y.e...原创 2021-06-17 15:53:30 · 141 阅读 · 0 评论 -
转载:面试:字符串中的相关试题
原始链接:https://www.cnblogs.com/csyuan/p/6625437.html面试:字符串中的相关试题题目1.:实现一个算法来判断一个字符串中的字符是否唯一(即没有重复).不能使用额外的数据结构。 (即只使用基本的数据结构)首先,你可以问面试官,构成字符串的字符集有多大?是ASCII字符,还是只是26个字母? 还是有更大的字符集,对于不同的情况,我们可能会有不同的解决方案。如果我们假设字符集是ASCII字符,那么我们可以开一个大小为256的bool数组来表征每个字转载 2020-10-25 22:35:30 · 178 阅读 · 0 评论 -
java学习笔记_基础知识day01-day13day14 完整版
java学习笔记_基础知识day01-day13day14 完整版这些算是java最最基础的知识了,我经常翻阅。链接:https://pan.baidu.com/s/1WeK-Ms4XyarXAd-FW-KCCQ提取码:3gjq优快云现在好像下载啥附件都要花积分。我只是把自己看到的东东记录一下,分享是顺便的事,还不想拿这个赚积分。所以不上传附件了,用网盘来放文件吧。btw, 我习惯在一个文件里写东西,方便自己查阅。东一个西一个文件,想查特别详细的知识或者小东西会非常不方...原创 2020-09-02 22:32:16 · 158 阅读 · 0 评论 -
java学习笔记: 基础知识: day13,day14 异常、File类、IO流
====day13day13java学习笔记: 基础知识: day13 异常、File类、IO流一、异常异常就是程序出现了不正常的情况。代码在编译或运行的时候出现的不正常的情况。1.概念 (1)Throwable类是java语言中所有错误(Error)或异常(Exception)的超类。 (2)Error是Throwable的子类,用于指示合理的应用程序不应该试图捕获的严重问题,如内存不足,即我们的程序不处理。 (3)Exception类及其子类是Throwable的一种形式...原创 2020-09-02 22:15:42 · 270 阅读 · 0 评论 -
java学习笔记: 基础知识: day12 Set、Map集合、集合与集合的嵌套、一些练习题
====day12java学习笔记: 基础知识: day12 Set、Map集合、集合与集合的嵌套、一些练习题一、SetSet:无序、唯一、元素不可重复,使用方式与Collection一致在java.util包中,是一个接口,继承了Collection1.不包含重复元素:HashSet不保证Set的迭代顺序,特别是它不保证该顺序恒久不变2.什么时候使用? (1)要对List集合进行去重。 (2)要求生成不重复的元素。例子:在[1,10]生成10个不重复的数字。代码:impor...原创 2020-09-02 17:33:16 · 197 阅读 · 0 评论 -
java学习笔记: 基础知识: day11 对象也可以比较大小、集合、List集合、常见的数据结构、集合的工具类Collections
====day11java学习笔记: 基础知识: day11 对象也可以比较大小、集合、List集合、常见的数据结构、集合的工具类Collections一、对象也可以比较大小如果想比较两个对象的大小,可以通过实现Comparable接口,重写compareTo方法。接口,比较器:java.lang.Comparable方法:public int compareTo(T o);调用方法:int i = stu1.compareTo(stu2);//this:stu1; o:stu2如果大.原创 2020-09-01 17:31:16 · 271 阅读 · 0 评论 -
java学习笔记: 基础知识: 一些练习题
====day 一些练习题java学习笔记: 基础知识: 一些练习题练习题1.把单个数字字符转换成数字,例如'7'-->7。思路:int num = Integer.parseInt('7' + "");因为Integer.parseInt(String s)方法里的参数s是字符串类型,如"fdffsfds",不是字符,如'a'。所以需要把字符先转换成字符串。练习题2.字符串中的数字相加,比如"dafd1b52h34hj``89**&&"。思路:(1)把字符串中非数原创 2020-08-29 22:07:23 · 214 阅读 · 0 评论 -
十大排序算法源代码(Java版)
十大排序算法源代码(Java版)参考了网上很多关于原理类的文章、好多篇java版源代码,也有自己写的代码。都是在网上边搜边调试边写的,就不逐一列出参考的文章出处了。//file name: BubbleSort.java//冒泡排序package cn.study.sort;public class BubbleSort { public static int[] bubbleSort(int[] arr){ if(arr == null || arr.l...原创 2020-08-25 23:22:28 · 328 阅读 · 0 评论 -
转载:一篇文章搞懂Java十种常见排序方法(原理+代码+注释)
一篇文章搞懂Java十种常见排序方法(原理+代码+注释)Java十种常见排序方法(原理加代码)单纯基于比较的排序方法的时间复杂度不能突破O(NlogN),表中最后的三种排序方式复杂度较低。1.冒泡排序:Java代码:(做了一个小改进) /** * 1.冒泡排序,是通过每一次遍历获取最大/最小值;将最大值/最小值放在尾部/头部; * 然后除开最大值/最小值,剩下的数据在进行遍历获取最大/最小值... * 此处采取最小值放在头部 */ .转载 2020-08-25 00:03:10 · 2283 阅读 · 1 评论 -
java学习笔记: 基础知识: day10: 排序、Array类、基本类型的包装类、自动装箱和拆箱、Date类和SimpleDateFormat
====day10java学习笔记: 基础知识: day10: 排序、Array类、基本类型的包装类、自动装箱和拆箱、Date类和SimpleDateFormat一、排序算法(一)冒泡排序算法的原理1.原理相邻元素两两比较,大的往后放。第一次比较,比较完毕后,最大值就出现在了最大索引处。第二次比较,比较完毕后,次大值就出现在了次大索引处。...最终得到了一个排序好的数组。2.总结:(1)每一次比较完毕后,下一次的比较就会少一个元素参加。第一次比较,少0个元素。第二次比较,少1原创 2020-08-24 14:51:43 · 228 阅读 · 0 评论 -
java学习笔记: 基础知识: day09: Object, String, StringBuilder,字符串的一些常用方法
====day09java学习笔记: 基础知识: day09: Object, String, StringBuilder,字符串的一些常用方法一、API的概述当你想学习一个API的时候,可以查看API文档。不想看API文档的话,可以直接看源代码。建议有时间的话,还是要好好研究一下java JDK的源代码。(一)Object和toString方法1.Object是类层次结构的根类,所有的类都直接或者间接地继承自Object。在eclipse里导入JDK的源代码class包:鼠标放在clas原创 2020-08-23 23:26:28 · 207 阅读 · 0 评论