
Java
野猿新一
这个作者很懒,什么都没留下…
展开
-
java 判断数组中是否包含某个元素
其实写个循环判断就可以了,如果懒得写代码可以直接用apache库的ArrayUtils.contains方法import org.apache.commons.lang3.ArrayUtils;int[] array = {1, 2, 3};boolean b = ArrayUtils.contains(array, 1);其实ArrayUtils.contains()其内部也是写一个循环,源码如下public static boolean contains(int[] array,.原创 2020-10-31 23:39:00 · 1901 阅读 · 0 评论 -
java数组转List方法
方法一List<String> list = new ArrayList<>(Arrays.asList(array));方法二List<String> list = new ArrayList<>(array.length);Collections.addAll(list, array);原创 2020-10-31 23:14:36 · 408 阅读 · 0 评论 -
java FTPClient changeWorkingDirectory()方法切换当前工作目录
二话不说直接上代码boolean result = ftpClient.changeWorkingDirectory("/AA/BB");System.out.println("切换工作目录:" + result);System.out.println("当前工作目录:" + ftpClient.printWorkingDirectory());文件夹路径"/AA/BB"写成/AA/BB/"末尾多一个/也可以,其实多多少个/都无所谓,会自动去掉,最终进入的文件目录还是"/AA/BB"..原创 2020-07-21 09:39:29 · 16474 阅读 · 0 评论 -
java FTPClient 使用rename()方法移动文件和文件重命名
踩过的坑有个需求是要将ftp中处理过的文件移动到某个备份文件夹一开始走了弯路,一直要找FTPClient中有没remove之类的方法,但是一直找不到后来就曲线救国,采用先复制文件再删除的方法,例如下面的伪代码但是这样的代码不是很优雅,最好是有个方法直接调用,而且后来的操作中出现了一些莫名其妙的问题也不知道这样的写法是否有问题InputStream inputStream = ftpClient.retrieveFileStream("/AAA/test.txt");ftpClient原创 2020-07-20 16:42:58 · 10325 阅读 · 9 评论 -
java FTPClient 的连接和断开
导入依赖包使用的是apache的commons-net包<dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.6</version></dependency>FTP连接public boolean connect(String ip, St原创 2020-07-20 14:30:22 · 6712 阅读 · 0 评论 -
java正则表达式或or的表示方法
示例二话不说上代码Pattern pattern = Pattern.compile("^(AAA|BBB|CCC)$");Matcher matcher1 = pattern.matcher("AAA");Matcher matcher2 = pattern.matcher("BBB");Matcher matcher3 = pattern.matcher("CCC");Matcher matcher4 = pattern.matcher("DDD");System.out.print原创 2020-07-16 15:08:44 · 10330 阅读 · 0 评论 -
java正则表达式最简单入门示例
示例先上示例,看输出结果,然后我们再来说明Pattern pattern1 = Pattern.compile("^\\d{1,3}$");Pattern pattern2 = Pattern.compile("^[a-z]{2}$");Pattern pattern3 = Pattern.compile("^[A-Z]{1,}$");Matcher matcher1 = pattern1.matcher("15");Matcher matcher2 = pattern2.matcher(原创 2020-07-16 14:48:18 · 387 阅读 · 0 评论 -
Java BufferedReader加InputStreamReader按行读取文件内容
主要通过BufferedReader的readLine()方法按行读取字符串,如下代码所以读取完毕后记得关闭文件流,最好统一放在finally中关闭public void readLine(String path) { InputStreamReader isr = null; BufferedReader br = null; try { isr = new InputStreamReader(new FileInputStream(path)); .原创 2020-05-31 23:48:05 · 4914 阅读 · 0 评论 -
《JavaSE学习笔记 - 泛型基础》学习笔记
本文是本人学习《JavaSE学习笔记 - 泛型基础》这篇文章的笔记,记录自己学习理解的过程,主要是作为备忘。建议大家直接看《JavaSE学习笔记 - 泛型基础》这篇文章原文后再来看本文。泛型基础知识Java SE5加入的新特性 实现了参数化类型 编译期类型检查我很喜欢参数化类型这种表达,清晰明了。可以类比一个普通方法参数的概念。一个方法中的参数用一个形参来表示,到具体使用的时候传入具...原创 2020-03-06 11:01:42 · 425 阅读 · 0 评论 -
java ScheduledExecutorService实现定时任务
使用scheduleAtFixedRate方法private ScheduledExecutorService pool = Executors.newScheduledThreadPool(5);private ScheduledFuture future;// 开启定时器private void startTask() { stopTask(); future = ...原创 2019-12-26 15:49:46 · 1251 阅读 · 0 评论 -
java Thread.sleep()实现定时任务
实现代码很简单,在Thread内不断循环执行任务,通过Thread.sleep()控制时间间隔另外用一个boolean变量来控制定时任务的开始和停止。private boolean run;// 开启定时器private void startTask() { // 任务执行中,直接返回 if (run) { return; } run ...原创 2019-12-26 14:05:28 · 1933 阅读 · 1 评论 -
java Timer结合TimerTask执行定时任务
直接上代码TimerTask的第二个参数delay表示延时多久开始定时任务,第三个参数period表示定时任务的间隔若要停止定时任务,调用Timer.cancel()方法即可import java.util.Timer;import java.util.TimerTask;public class Main { public static void main(Stri...原创 2019-12-26 13:26:11 · 330 阅读 · 0 评论 -
java 递归复制文件夹及文件夹内的文件
package com.xindecoiot.rfidchecker.result;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;publ...原创 2019-12-25 12:21:00 · 271 阅读 · 0 评论 -
java double精度丢失引发的血案
公司做的无人便利店用的微信支付,微信支付传的支付值是以分为单位的,而公司的商品是以元为单位的,所以计算出来的价格还要乘以100,其中有一个可乐的商品定价是2.3元,但是乘以100后结果却是229.99999999999997,直接舍弃小数点后的值后为229,而不是230,比实际需支付的少了了一分钱,这一分钱到底那去了呢?公司财务找上门来了,虽然是一分钱,那也是钱啊。double yuan...原创 2019-10-25 16:12:22 · 479 阅读 · 1 评论 -
byte[]字节数组转hex16进制字符串的三种方法
方法1这种方法代码量是最少的,推荐private String bytesToHex(byte[] bytes) { String hex = new BigInteger(1, bytes).toString(16);}方法2private String bytesToHex(byte[] bytes) { StringBuilder sb = new S...原创 2019-03-25 21:21:01 · 13860 阅读 · 1 评论 -
java 有序的Map LinkedHashMap简介
无序的HashMap我们知道HashMap是无需的,数据并不是按我们插入的顺序排序的,我们可以验证下public class Test6 { public static void main(String[] args) { Map<String, String> hashMap = new HashMap<String, String>()...原创 2019-09-06 15:27:24 · 52788 阅读 · 2 评论 -
java null==null是否成立
看Arrys.equals()源码的时候,第一行是判断两个参数是否==,突然很好奇,如果==号两边都是null这种写法是否可行,可行的话结果是true还是false?public static boolean equals(int[] a, int[] a2) { if (a==a2) return true; if (a==null || a2==null...原创 2019-09-06 16:00:06 · 14323 阅读 · 0 评论 -
java Arrays.equals()方法简介
简介java Arrays中共定义了如下几种equals方法,用来对比判断数组是否相等equals(boolean[], boolean[]) equals(byte[], boolean[]) equals(char[], boolean[]) equals(double[], boolean[]) equals(float[], boolean[]) equals(short...原创 2020-08-05 16:57:47 · 15682 阅读 · 0 评论 -
java System.arraycopy()使用方法
源码及参数说明我们先看下arraycopy方法的源码,这是一个native方法,有5个参数src:这是源数组,数据是从这个数组拷贝的 srcPos:从源数据的哪个位置开始拷贝 dest:这个目的数组,从源数组拷贝的数据拷贝到这个数组 destPos:从源数组拷贝过来的数据存放在目的数组的开始位置 length:从原数组拷贝的数组元素的个数/* * @param s...原创 2019-09-10 10:17:48 · 681 阅读 · 0 评论 -
java Arrays.toString数组格式化输出
测试的时候经常要打印输出查看数组内容,最笨的方法就是循环打印输出内容,但是其实java的Arrays有提供一个toString方法,可以格式化数组public class Test6 { public static void main(String[] args) { int[] array = {1, 2, 3, 4, 5, 6}; System.o...原创 2019-09-10 10:29:38 · 4938 阅读 · 1 评论 -
java Arrays.copyOf使用方法
源码copyOf方法有以下几个重载的方法,使用方法基本一样,只是参数数组类型不一样original:第一个参数为要拷贝的数组对象 newLength:第二个参数为拷贝的新数组长度各个方法的源码基本一样,我们选取一个看下可以看到内部实现实际是调用了System.arraycopy数组拷贝方法/** * Copies the specified array, truncat...原创 2019-09-10 11:05:43 · 11645 阅读 · 1 评论 -
java Arrays.copyOfRange使用方法
源码copyOfRange方法有以下几个重载的方法,使用方法基本一样,只是参数数组类型不一样original:第一个参数为要拷贝的数组对象 from:第二个参数为拷贝的开始位置(包含) to:第三个参数为拷贝的结束位置(不包含)各个方法的源码基本一样,我们选取一个看下可以看到内部实现实际是调用了System.arraycopy数组拷贝方法Math.min(original...原创 2019-09-10 13:55:00 · 14585 阅读 · 1 评论 -
java Collections.sort对List排序的两种方法
方法一:Comparable方法一只需两个步骤需要排序的类实现Comparable接口,在compareTo方法里定义排序规则 调用Collections.sort(List<T> list)方法排序下面看下示例代码,首先创建一个Student类,实现Comparable接口public static class Student implements Comparab...原创 2019-08-12 16:06:11 · 1989 阅读 · 0 评论 -
解决POI库导入Excel整型类型解析成double类型的问题
问题描述POI库是一个支持Excel导入导出的工具类库,同时支持.xls和xlsx两种类型但是在使用过程中发现一个问题,POI中解析数字类型只支持解析成double类型,这就造成了原本int类型的内容解析出来的结果后面带“.0”,或者长一点的int变成科学计数法原来的解析代码如下double d = cell.getNumericCellValue();String conte...原创 2019-08-09 16:40:28 · 2038 阅读 · 0 评论 -
java 四舍五入BigDecimal.ROUND_HALF_DOWN和BigDecimal.ROUND_HALF_UP的区别
BigDecimal.ROUND_HALF_DOWN最贴切的说法应该是叫五舍六入,舍弃的部分如果大于5才进位,小于或等于5直接舍弃。BigDecimal.ROUND_HALF_UP就是我们小学教的四舍五入,舍弃的部分如果大于等于5就进位,小于5的直接舍弃。直接写几行代码输出验证下就很清楚了注意方法setScale第一个参数为保留小数点后的位数System.out.println(...原创 2019-03-31 23:21:06 · 20248 阅读 · 0 评论 -
java 四舍五入new BigDecimal(double)及BigDecimal valueOf(double)的区别
最近在研究java的四舍五入,其中有一个方法如下new BigDecimal(val).setScale(newScale, BigDecimal.ROUND_HALF_DOWN));其中val是要处理的浮点数newScale表示要保留小数点后几位BigDecimal.ROUND_HALF_DOWN表示若舍弃的部分>0.5则进位,否则直接舍弃,说白了就是五舍六入比如说1...原创 2019-03-31 22:48:30 · 3655 阅读 · 0 评论 -
Java Math.floor()、Math.ceil()和Math.round()四舍五入的使用及区别
Math.floor()、Math.ceil()和Math.round()都是对浮点数取整(floor和ceil返回不带小数的double,round返回long)floor字面意思为地板,返回的是小于或等于该数值的最大的整数 ceil字面意思是天花板,返回的是大于或等于该值的最小的整数 round就是我们常见的四舍五入,不再多说直接看下demo及运行结果public class ...原创 2019-03-31 16:09:35 · 2261 阅读 · 1 评论 -
数字0123456789对应的ASCII码值
做开发的时候经常会遇到需要用ASCII码来表示数字,或者由ASCII码查找对应的数字每个数字对应一个ASCII码值,也就十个值,但是记不住,每次都要百度查表这里做个记录以备下次用到,也方便大家查询 Bin(二进制) Oct(八进制) Dec(十进制) Hex(十六进制) 缩写/字符 ...原创 2019-03-24 12:42:20 · 81892 阅读 · 2 评论 -
最全的ASCII码表,EASCII码表,ISO/IEC 8859码表二进制、八进制、十进制、十六进制快速查询
查询ASCII码只有128个字符,在本页面直接按Ctrl+F输入你要查找的字符查询对应的ASCII吗,或者输入ASCII值(二进制、八进制、十进制、十六进制)查找对应的字符。简介ASCII(AmericanStandardCode forInformationInterchange,美国信息交换标准代码)是基于拉丁字母的一套计算机编码系统。它主要用于显示现代英语,而其扩展版本E...原创 2019-03-23 11:53:54 · 30718 阅读 · 0 评论 -
java String计算MD5的三种方法以及文件计算MD5的方法
MD5简介MD5,Message Digest Algorithm 5,是一种被广泛使用的信息摘要算法,可以将给定的任意长度数据通过一定的算法计算得出一个128位二进制的散列值。常见的表示方法是将128位二进制转成32位16进制,这样看起来比较简短。方法1这种方法要注意一点的是不足32位高位需补零,否则会不足位,比如:6531经MD5计算后正确的结果为0a7d83f084ec2...原创 2019-03-25 21:06:48 · 20285 阅读 · 1 评论 -
java八进制、十进制、十六进制(hex)ASCII码字符串和String互转
笔者在做Android串口开发的时候,与串口设备间的通信经常内容都是16进制的发送命令的时候需要先把命令转成16进制的ASCII字符串。接收到设备的反馈时需要把16进制的ASCII字符串转成对应的明文。比如我们要发送的明文为ABCDEF,需要先转成对应的16进制ASCII码字符串414243444546比如我们收到的反馈为16进制的ASCII码字符串313233343536,需要转...原创 2019-03-24 19:05:12 · 14063 阅读 · 3 评论 -
Base64加密解密
参考Java8 Base64BASE64在线加密解密Android自带Base64加密import android.util.Base64;String encode2 = new String(Base64.encode("123456".getBytes(), Base64.DEFAULT)); // 结果为"MTIzNDU2\n"// encodeToString内部其实也...原创 2019-02-13 22:25:48 · 935 阅读 · 0 评论 -
Android预定义样式?android:attr/attribute、?attr/attribute和?attribute
系统内建属性比如系统有一个内建属性selectableItemBackground,可以为可点击控件设置点击时的水波纹效果,以下几种方法都可以成功引用// 未设置前<Button /> // 设置水波纹点击效果<Button 、、、 android:foreground="?android:attr/selectableItemBackg...原创 2019-02-17 17:20:54 · 854 阅读 · 0 评论 -
adb shell 命令行模拟发送开机广播android.intent.action.BOOT_COMPLETED测试开机自启动
开发中需求需要监听开机广播android.intent.action.BOOT_COMPLETED,然后让应用开机自启动。以前测试总是傻傻的关机然后再开机再验证有没自启动,很浪费时间,现在发现原来可以通过adb shell命令模拟开机广播,记录下模拟开机广播adb shell am broadcast -a android.intent.action.BOOT_COMPLETED当然...原创 2019-03-27 22:04:46 · 14059 阅读 · 2 评论 -
java生成UUID
简介UUID是通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。如此一来,每个人都可以创建不与其它人冲突的UUID。在这样的情况下,就不需考虑数据库创建时的名称重复问题。目前最广泛应用的U...原创 2019-04-02 19:28:27 · 289 阅读 · 0 评论 -
java import static 用法
在项目中有时候在同个Java文件中会多次用到某个工具类的static静态方法,这时候我们可以用import static导入该方法,然后可以直接可以直接使用该方法就像是改类中的方法一样,如下代码所示import static android.text.TextUtils.isEmpty;public class MyClass { public void myFun() { ...原创 2019-06-04 22:44:00 · 618 阅读 · 0 评论 -
java SimpleDateFormat设置时区格式化时间
前情提要在Android开发中经常遇到有的接口需要上传当前时间,如果后台要求直接传一个long类型的时间戳还好,因为这个时间戳是跟时区无关的,如果后台接口要求传的是格式化的时间,若本地设备设置的时区与后台要就的时区不一致,就会导致上传的时间不准确。有问题的写法这种写法SimpleDateFormat默认用的是本地设备设置的时区,若本地时区与后代约定的不一致就会导致问题Simple......原创 2019-05-18 22:30:05 · 46239 阅读 · 3 评论 -
java 单键值对类AbstractMap.SimpleEntry使用方法
public class Test { public static void main(String[] args) { Map.Entry<String,String> entry = new AbstractMap.SimpleEntry<String, String>("name", "野猿新一"); System.out.p...原创 2019-05-18 22:29:47 · 5003 阅读 · 0 评论 -
java break停止外层循环和continue继续外层循环
停止外层循环public class Test { public static void main(String[] args) { out:for (int i = 0; i < 3; i++) { System.out.println("out:" + i); for (int j = 0; j < 3;...原创 2019-05-18 22:29:41 · 6234 阅读 · 1 评论 -
介绍几个在线json转java实体类的POJO网站
https://www.bejson.com/json2javapojo/new/http://www.jsons.cn/json2java/http://tool.chinaz.com/Tools/json2entity.aspx原创 2019-05-18 22:28:55 · 4433 阅读 · 0 评论