
Java学习
Java学习
悠自在
有能力做出成绩,要知道一切来之不易,心不猖狂。
没能力作出成绩,要懂得成长需要努力,心不焦虑。
展开
-
Java之判断密码是否是大小写字母、数字、特殊字符中的至少两种组合
代码:public class CheckPassword { //数字 public static final String REG_NUMBER = ".*\\d+.*"; //小写字母 public static final String REG_UPPERCASE = ".*[A-Z]+.*"; //大写字母 public static final String REG_LOWERCASE = ".*[a-z]+.*"; //特殊符号原创 2021-01-05 16:34:05 · 3507 阅读 · 0 评论 -
Java之PriorityQueue实现最大堆、最小堆
简要概括学习很多算法知识,力争做到最优解的学习过程中,很多时候都会遇到PriorityQueue(优先队列)。一个基于优先级堆的无界优先级队列。优先级队列的元素按照其自然顺序进行排序,或者根据构造队列时提供的 Comparator 进行排序,具体取决于所使用的构造方法。优先级队列不允许使用 null 元素。依靠自然顺序的优先级队列还不允许插入不可比较的对象,这样做可能导致 ClassCastException。此队列的头是按指定排序方式确定的最小元素。如果多个元素都是最小值,则头是其中一个元素——选原创 2020-06-29 10:42:42 · 9535 阅读 · 0 评论 -
Java调用其他编程语言C、R
今天背书看到一句话“Android架构分为四层,在Application framework之下,有C/C++的程序组成,通过JNI完成由Java到C的调用”。因为很少使用,不太了解JNI,只好继续扩展知识面了。JNI全称:Java Native Interface,Java中有很多Native Method(相当于接口)的实现是由非Java语言实现的,例如C语言。在C/C++中调用J...原创 2017-12-14 09:04:46 · 1499 阅读 · 0 评论 -
Java之Math取整操作
Java中针对数据的取整操作,在此总结。舍掉小数取整,floor向下取整//正Math.floor(2)=2.0Math.floor(2.1)=2.0Math.floor(2.5)=2.0Math.floor(2.9)=-2.0//负Math.floor(-2)=-2.0Math.floor(-2.1)=-3.0Math.floor(-2.5)=-3.0Math.f...原创 2019-05-29 14:27:38 · 839 阅读 · 0 评论 -
Java去除字符串中的“0”
最近使用安卓手机实现读取cpu卡中的内容,卡中的数据有很多无用的“0”。使用正则表达式,进行去除多余的“0”。去除字符串前面的“0”:String str = "00000000123456789";String newStr = str.replaceAll("^(0+)", "");去除字符串后面的“0”:String str = "12345678900000000...原创 2019-03-07 13:45:05 · 5005 阅读 · 0 评论 -
Android之Calendar类(时间大全)
前两天,学习自定义View画了一个时钟,用到了Calendar这个抽象类(日历时间)。java常见类,在此记录一下简单的用法及意义。//获得Calendar这个类的实例:private Calendar c = Calendar.getInstance();//获得当前的年份c.get(Calendar.YEAR)//获得当前的月份c.get(Calendar.MONTH)...原创 2018-09-07 10:47:56 · 15201 阅读 · 0 评论 -
Java之内部类
首先,想说自己有些无聊,增加自己的知识库。再者,内部类可以将逻辑相关的类组织在一起,并控制其可视性,下文中内部类均指非静态内部类。学习内部类的以下知识点:1.创建内部类与连接外部类:public class Car { private int speed = 100; class Tyre { int getSpeed() { //访问外部类成...原创 2018-10-30 17:59:10 · 248 阅读 · 0 评论 -
Java之HashSet与HashMap的区别
来看一下HashSet与HashMap的区别。HashSet:HashSet实现了Set接口,它不允许集合中出现重复元素。当我们提到HashSet时,第一件事就是在将对象存储在HashSet之前,要确保重写hashCode()方法和equals()方法,这样才能比较对象的值是否相等,确保集合中没有储存相同的对象。如果不重写上述两个方法,那么将使用下面方法默认实现:public...原创 2018-11-22 09:27:06 · 251 阅读 · 0 评论 -
Java之将GB2312编码转化为汉字
本文实现将GB2312编码转换成汉字,并简单了解一下GB2312。GB2312是信息交换汉字编码字符集,适用于汉字处理、汉字通信等系统之间的信息交换,通行于中国大陆。使用区位码表示方式,对所收汉字进行了“分区”处理,每区含有94个汉字/符号。01-09区为特殊符号。16-55区为一级汉字,按拼音排序。56-87区为二级汉字,按部首/笔画排序。10-15区及88-94区则未有编码...原创 2019-03-07 14:29:52 · 4561 阅读 · 1 评论 -
Java之list集合根据对象的属性去重,保留新数据
需求:保存一段数组数据,向后台提交,实时提交最新的数据。将数据添加到一个list的集合中,最后提交之前去重。定义实体类:public class Robot implements Serializable { /** * id */ private Long id; /** * 名称 */ private St...原创 2019-03-11 09:17:04 · 7291 阅读 · 2 评论 -
Java反射机制
学习安卓hook原理时,推荐学习一下,Java的反射机制,深入底层就需要扩展知识面,在此记录。Java反射作用:增加程序的灵活性,避免将程序写死到代码里。 在编译时无法知道该对象或类属于哪些类,依靠运行时信息来获得该对象和类的真实信息:获取已装载类的成员变量信息 获取已装载类的方法 获取已装载类的构造方法信息前提知识:1.Class类的概念在Java中,每个class都有...原创 2019-05-29 13:50:08 · 193 阅读 · 0 评论 -
Java之的基础运算符
Java运算符:优先级 运算符分类 结合顺序 运算符 由 高 到 低 分隔符 左结合 . [] ( ) ; , 一元运算符 右结合 ! ++ -- - ~ 算术运算符 移位运算符 左结合 * / ...原创 2018-08-15 10:08:59 · 211 阅读 · 0 评论 -
Java之多线程同步
同步的方法:一、同步方法 即有synchronized关键字修饰的方法。由于java的每个对象都有一个内置锁,当用此关键字修饰方法时,内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。注: synchronized关键字也可以修饰静态方法,此时如果调用该静态方法,将会锁住整个类。二、同步代码块 即有synchronized关键字修饰的语句块。被...原创 2018-04-28 19:50:50 · 197 阅读 · 0 评论 -
Java之notify和notifyAll区别
notify()和notifyAll()的本质区别notify()和notifyAll()都是Object对象用于通知处在等待该对象的线程的方法。两者的最大区别在于:notifyAll使所有原来在该对象上等待被notify的所有线程统统退出wait的状态,变成等待该对象上的锁,一旦该对象被解锁,他们就会去竞争。notify则文明得多,它只是选择一个wait状态线程进行通知,并使它获得该对象上的锁,...原创 2018-04-28 11:06:14 · 1868 阅读 · 0 评论 -
Java基础知识之继承
继承的基本语法(1)当sub类和base类位于同一包中:sub类继承base类中的pulic、protected和默认访问级别的成员变量和成员方法。当sub类和base类位于不同包中时:sub类继承base类中的public、protected访问级别的成员变量和成员方法。(2)Java不支持多继承。(3)所有的Java类都直接或间接地继承了java.lang.Object,假如在定义一...原创 2017-12-29 10:37:41 · 552 阅读 · 0 评论 -
Java之基础面试题
Java面试题,看一遍心里有点数。原创 2018-04-14 15:51:02 · 201 阅读 · 0 评论 -
Java之锁机制
Java中锁的机制:synchronized在修饰代码块的时候需要一个reference对象作为锁的对象.在修饰方法的时候默认是当前对象作为锁的对象.在修饰类时候默认是当前类的Class对象作为锁的对象.线程同步的方法:sychronized、lock、reentrantLock分析方法锁(synchronized修饰方法时)通过在方法声明中加入 synchroni...原创 2018-04-30 09:26:24 · 1108 阅读 · 0 评论 -
Java问题try catch finally,try里有return,finally还执行吗?
try{}里有一个return语句,紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?答:肯定会执行,finally{}块的代码只有在try{}块中包含遇到System.exit(0);之类的导致Java虚拟机直接退出的语句才会不执行。当程序执行try{}遇到return时,程序会先执行return语句,但并不会立即返回——也就是把return...原创 2018-04-30 11:37:29 · 844 阅读 · 0 评论 -
Java之常用线程池
使用线程池好处:每次都new Thread的弊端如下:每次new Thread新建对象性能差。线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机或oom。缺乏更多功能,如定时执行、定期执行、线程中断。线程池的好处在于:重用存在的线程,减少对象创建、消亡的开销,性能佳。可有效控制最大并发线程数,提高系统资源的使用率,...原创 2018-04-27 17:05:55 · 244 阅读 · 0 评论 -
Java之对象的比较
Java中实现对象的比较:Comparable接口和Comparator接口在实际应用中,我们往往有需要比较两个自定义对象大小的地方。而这些自定义对象的比较,就不像简单的整型数据那么简单,它们往往包含有许多的属性,我们一般都是根据这些属性对自定义对象进行比较的。所以Java中要比较对象的大小或者要对对象的集合进行排序,需要通过比较这些对象的某些属性的大小来确定它们之间的大小关系。一般,Java中通...原创 2018-04-27 17:32:18 · 159 阅读 · 0 评论 -
Java之自定义FIFO线程池
自定义线程池Android中常用的线程池就上面的四种,其实在Java中还有一种常见的线程池(newSingleThreadScheduledExecutor),其实上面的线程池对于我们开发已经是足够了,不过有时候上面的仍然不能满足我们,这时候我们就需要自定义不同功能的线程池。上面我们也说了线程池功能的不同归根到底还是内部的BlockingQueue实现不同,所以,我们要实现我们自己相要的线程池,就...原创 2018-04-27 18:48:56 · 702 阅读 · 0 评论 -
Java之回调机制
从刚接触安卓,我就知道了回调这个东西,再看一次吧。1.先看一个简单回调例子:(小明做题)超级计算器的add()方法应该包含两个操作数和小明自身的引用,代码如下:public class SuperCalculator{public void add(int a, int b, Student xiaoming){int result = a ...原创 2018-04-27 19:22:49 · 221 阅读 · 0 评论 -
Java之线程池队列的饱和策略
转载地址Java线程池会将提交的任务先置于工作队列中,在从工作队列中获取(SynchronousQueue直接由生产者提交给工作线程)。那么工作队列就有两种实现策略:无界队列和有界队列。无界队列不存在饱和的问题,但是其问题是当请求持续高负载的话,任务会无脑的加入工作队列,那么很可能导致内存等资源溢出或者耗尽。而有界队列不会带来高负载导致的内存耗尽的问题,但是有引发工作队列已满情况下,新提交的任务如...转载 2018-04-28 09:16:17 · 674 阅读 · 0 评论 -
Java之InterruptedException 异常
当一个方法后面声明可能会抛出InterruptedException 异常时,说明该方法是可能会花一点时间,但是可以取消的方法,是阻塞方法。抛InterruptedException的代表方法有:1. java.lang.Object 类的 wait 方法2. java.lang.Thread 类的 sleep 方法3. java.lang.Thread 类的 join 方法...原创 2018-04-28 10:50:39 · 494 阅读 · 0 评论 -
Java基础知识之修饰符
记录一下,Java语言中的修饰符。对于java开发者,也许你不曾意识到这个知识点的重要性。如果想写出优雅的代码,严谨的使用修饰符是一个基本原则。修饰符 类 成员方法 构造方法 成员变量 局部变量 abstract Y Y _ _ _ static _ Y _ Y _ public Y ...原创 2017-12-29 10:54:10 · 275 阅读 · 0 评论