JAVA基础
文章平均质量分 64
雨轩_wscrf
奔跑在通往技术大牛的道路上。。。。
展开
-
java异常处理的throw和throws的区别
1. 区别throws是用来声明一个方法可能抛出的所有异常信息,throws是将异常声明但是不处理,而是将异常往上传,谁调用我就交给谁处理。而throw则是指抛出的一个具体的异常类型。2.分别介绍 throws:用于声明异常,例如,如果一个方法里面不想有任何的异常处理,则在没有任何代码进行异常处理的时候,必须对这个方法进行声明有可能产生的所有异常(其实就是,不想自己处理,那就交给别人吧,告诉别人...转载 2018-05-07 11:06:50 · 262 阅读 · 0 评论 -
小试Bean Validation
博客分类:JavaEEBean领域模型HibernateSwing编程 数据校验是任何一个应用程序都会用到的功能,无论是显示层还是持久层. 通常,相同的校验逻辑会分散在各个层中, 这样,不仅浪费了时间还会导致错误的发生。 为了避免重复, 开发人员经常会把这些校验逻辑直接写在领域模型里面, 但是这样又把领域模型代码和校验代码混杂在了一起, 而这些校验逻辑更应该是描述领域模型的转载 2017-12-13 10:50:57 · 124 阅读 · 0 评论 -
浅谈Java中的hashcode方法
哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率。在Java的Object类中有一个方法:1public native int hashCode(); 根据这个方法的声明可知,该方法返回一个int类型的数值,并且是本地方法,因此在Object类中并没有给出具体的实现。转载 2017-11-20 11:46:56 · 127 阅读 · 0 评论 -
hashCode与equals的作用与区别及应当注意的细节
以前写程序一直没有注意hashCode的作用,一般都是覆盖了equals,缺没有覆盖hashCode,现在发现这是埋下了很多潜在的Bug!今天就来说一说hashCode和equals的作用。 先来试想一个场景,如果你想查找一个集合中是否包含某个对象,那么程序应该怎么写呢?通常的做法是逐一取出每个元素与要查找的对象一一比较,当发现两者进行equals比较结果相等时,则停止查找并返回t转载 2017-11-20 11:20:03 · 277 阅读 · 0 评论 -
java中hashcode和equals的区别和联系
HashSet和HashMap一直都是JDK中最常用的两个类,HashSet要求不能存储相同的对象,HashMap要求不能存储相同的键。 那么Java运行时环境是如何判断HashSet中相同对象、HashMap中相同键的呢?当存储了“相同的东西”之后Java运行时环境又将如何来维护呢?在研究这个问题之前,首先说明一下JDK对equals(Object obj)和hashcode()这两个方转载 2017-11-20 11:02:03 · 220 阅读 · 0 评论 -
为什么重写equals时必须重写hashCode方法
首先我们先来看下String类的源码:可以发现String是重写了Object类的equals方法的,并且也重写了hashcode方法public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof S转载 2017-11-20 10:50:32 · 249 阅读 · 0 评论 -
java中自定义注解并通过反射获取注解属性值
1、定义自定义注解类(类注解和字段注解):[java] view plain copypackage com.uno.ray; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.转载 2017-10-16 16:20:29 · 3797 阅读 · 0 评论 -
Java基础之理解Annotation
Java基础之理解Annotation一、概念 Annontation是Java5开始引入的新特征。中文名称一般叫注解。它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联。 更通俗的意思是为程序的元素(类、方法、成员变量)加上更直观更明了的说明,这些说明信息是与程序的业务逻辑无关,并且是供指定的工具或框架使用的转载 2017-10-16 15:58:27 · 173 阅读 · 0 评论 -
Java-----隐藏手机号中间部分
phone.replaceAll("(\\d{3})\\d{4}(\\d{4})","$1****$2"); 152****4799 idCard.replaceAll("(\\d{4})\\d{10}(\\w{4})","$1*****$2"); 4304*****7733 $1、$2、……表示正则表达式里面第一个、第二个、……括号里面的匹配内容原创 2017-10-23 18:07:44 · 906 阅读 · 0 评论 -
Java的字符类String、StringBuffer与StringBuilder异同对比分析
Java的字符类String、StringBuffer与StringBuilder异同对比分析Java String是一个“不可变常量字符串”对象,final属性定义。之所以这么说,是从String内部在盛放字符串时候的容器char数组而言。比如当用户在初始化阶段定义了一个String对象String s=”hello,world!”,而此时再次对s进行操作改变s的值时候,如再次给s赋转载 2017-10-31 09:09:33 · 127 阅读 · 0 评论 -
深入理解Java:SimpleDateFormat安全的时间格式化
想必大家对SimpleDateFormat并不陌生。SimpleDateFormat 是 Java 中一个非常常用的类,该类用来对日期字符串进行解析和格式化输出,但如果使用不小心会导致非常微妙和难以调试的问题,因为 DateFormat 和 SimpleDateFormat 类不都是线程安全的,在多线程环境下调用 format() 和 parse() 方法应该使用同步代码来避免问题。下面我们通过一转载 2017-10-11 10:31:00 · 144 阅读 · 0 评论 -
Java常见设计模式之单例模式
1.何为单例模式? 单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例。 2.单例模式的实现方式转载 2017-12-13 14:16:54 · 244 阅读 · 0 评论 -
java中静态代码块的用法 static用法详解
(一)java 静态代码块 静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 静态方法在类加载的时候 就已经加载 可以用类名直接调用比如main方法就必须是静态的 这是程序入口两者的区别就是:静态代码块是自动执转载 2017-11-25 10:03:23 · 3650 阅读 · 0 评论 -
java多线程:并发包中ReentrantReadWriteLock读写锁的锁降级模板 写锁降级为读锁
java多线程:并发包中ReentrantReadWriteLock读写锁的锁降级模板写锁降级为读锁,但读锁不可升级或降级为写锁。锁降级是为了让当前线程感知到数据的变化。 1 //读写锁 2 private ReentrantReadWriteLock lock=new ReentrantReadWriteLock(); 3 //读锁 4 pri转载 2017-11-26 11:31:09 · 455 阅读 · 0 评论 -
Java 之 Serializable 序列化和反序列化的概念,作用的通俗易懂的解释
遇到这个 Java Serializable 序列化这个接口,我们可能会有如下的问题a,什么叫序列化和反序列化b,作用。为啥要实现这个 Serializable 接口,也就是为啥要序列化c,serialVersionUID 这个的值到底是在怎么设置的,有什么用。有的是1L,有的是一长串数字,迷惑ing。我刚刚见到这个关键字 Serializable 的时候,就有如上的这么些问题。在处理这个问题之前...转载 2018-04-17 14:25:44 · 170 阅读 · 0 评论 -
JRE和JDK的区别
1. 定义JRE(Java Runtime Enviroment)是Java的运行环境。面向Java程序的使用者,而不是开发者。如果你仅下载并安装了JRE,那么你的系统只能运行Java程序。JRE是运行Java程序所必须环境的集合,包含JVM标准实现及 Java核心类库。它包括Java虚拟机、Java平台核心类和支持文件。它不包含开发工具(编译器、调试器等)。JDK(Java Developmen...转载 2018-03-28 17:12:35 · 152 阅读 · 0 评论 -
JAVA语言为什么能跨平台?
JAVA语言为什么能跨平台?因为Java程序编译之后的代码不是能被硬件系统直接运行的代码,而是一种“中间码”——字节码。然后不同的硬件平台上安装有不同的Java虚拟机(JVM),由JVM来把字节码再“翻译”成所对应的硬件平台能够执行的代码。因此对于Java编程者来说,不需要考虑硬件平台是什么。所以Java可以跨平台。因为它有虚拟机(JVM),JAVA程序不是直接在电脑上运行的,是在虚拟机上进行的,...转载 2018-03-28 16:35:13 · 12020 阅读 · 0 评论 -
Java中怎么去掉数字字符串开头的0
方式一:例如:”0000123” (字符串必须全为数字) 处理过程:String tempStr = "0000123"; int result = Integer.parseInt(tempStr); 12result 结果:123方式二:例如:”0000123” 处理过程:String str = "0000123"; String newStr = str.replaceFirst(...转载 2018-03-05 17:03:22 · 784 阅读 · 0 评论 -
java字符串中NUL域的去除
在做加解密的时候,遇到了一个问题:解密出来的字符串中间,不可预期地出现了一些NULL域,如图中输出:图中红框中的NUL输出就是这些NULL域,这些NULL域影响了业务的后续处理,所以必须去除这些NUL。研究了一下这个输出,不难发现这些NULL输出,在字符串的字节数组里很容易发现,这些NULL也是占“地儿”的。所以只需要将这些"地儿"去除:去掉ascii码值为0的比特。[ja原创 2018-01-09 17:02:48 · 2705 阅读 · 0 评论 -
java.lang.NoClassDefFoundError: javax/servlet/ServletInputStream
如果在你所在开发过程中出现了:java.lang.NoClassDefFoundError: javax/servlet/ServletInputStreamfileupload.FileUpload.doPost(FileUpload.java:36)javax.servlet.http.HttpServlet.service(HttpServlet.java:717)javax.servlet原创 2018-01-09 09:20:31 · 3130 阅读 · 0 评论 -
org.codehaus.jackson.map.JsonMappingException
问题1,关于netflow v9的一个问题: v9中,该项 SysUptime 的 代表意义:Time in milliseconds since this device was first booted,根据英文翻译,应当是设备的启动时间长度,已毫秒数计算。 该值定义长度为4个字节,最大表示2的32次方的值 ,为4294967296,大概40亿左右。但是一年的毫秒数 已经超转载 2018-01-11 10:23:01 · 3088 阅读 · 0 评论 -
Java中重载和重写的区别
重载 overloading1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载是一个类中多态性的一种表现。2) Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型给它们的不同参数个数和参数类型给它们的不同参数个数和参数类型来决定具体使转载 2017-12-08 10:09:21 · 177 阅读 · 0 评论 -
java 四舍五入保留小数
// 方式一:double f = 3.1516;BigDecimal b = new BigDecimal(f);double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); // 方式二:new java.text.DecimalFormat("#.00").format(3.1415926);原创 2017-12-06 16:26:08 · 151 阅读 · 0 评论 -
Java 线程锁机制 -Synchronized Lock 互斥锁 读写锁
(1)synchronized 是互斥锁;(2)ReentrantLock 顾名思义 :可重入锁(3)ReadWriteLock :读写锁读写锁特点:a)多个读者可以同时进行读b)写者必须互斥(只允许一个写者写,也不能读者写者同时进行)c)写者优先于读者(一旦有写者,则后续读者必须等待,唤醒时优先考虑写者) 1、synchronized把代码块声明为 syn转载 2017-11-26 11:56:20 · 252 阅读 · 0 评论 -
Java时间日期格式转换
Java时间格式转换大全import java.text.*;import java.util.Calendar;public class VeDate {/** * 获取现在时间 * * @return 返回时间类型 yyyy-MM-dd HH:mm:ss */public static Date getNowDate() { Date current转载 2017-10-10 14:50:01 · 198 阅读 · 0 评论 -
Java/Jsp中让数值不使用科学计数法显示的解决方案
1.在java后台中进行转换(1)使用BigDecimal类double num=8.2347983984297E7;String str=new BigDecimal(num).toString();注意:以上方式转换之后的可能不是你想要的模样,而是酱紫——82347983.9842970073223114013671875,原因请参考下方用法链接。想原创 2017-09-22 14:07:08 · 373 阅读 · 0 评论 -
Java设置大数非科学计数法显示
今天在编程过程中发现:java中,当要显示的数字是一个很大或者很小的数字时,系统会默认使用科学计数法显示。例如:[java] view plain copy double testNum = 0.0001078137; System.out.println(testNum); 运行结果为:1.078137E-4。但是在我的程序中,我并不需要这原创 2017-09-22 13:58:20 · 538 阅读 · 0 评论 -
限制泛型可用类型
限制泛型可用类型 在定义泛型类别时,预设可以使用任何的类型来实例化泛型类型中的类型。 但是如果想限制使用泛型类别时,只能用某个特定类型或者是其子类型才能实例化该类型时,可以在定义类型时,使用extends关键字指定这个类型必须是继承某个类,或者实现某个接口,也可以是这个类或接口本身。 比如下面的例子:import java.util.ArrayList;import原创 2017-03-15 14:33:11 · 549 阅读 · 0 评论 -
java图片二进制相互转换
java图片二进制相互转换package mytest;import java.awt.image.BufferedImage;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.IOException;im原创 2017-04-12 11:28:15 · 583 阅读 · 0 评论 -
getContextPath、getServletPath、getRequestURI的区别
假定你的工程名称为projects,你在浏览器中输入请求路径:http://127.0.0.1:8080/projects/pages/newForm.jsp则执行下面向行代码后打印出如下结果:1、 System.out.println(request.getContextPath());打印结果:/projects 2、System.out.println(request.g原创 2017-03-29 13:14:24 · 173 阅读 · 0 评论 -
java项目打jar包
java项目打jar包java项目打jar包分为2种情况:一、java项目没有导入第三方jar包这时候打包就比较简单:1. 首先在Eclipse中打开项目, 右键点击项目,选择“Export”;2. 选择Java/JAR file,Next;3. Select the resources to export中可以选择你想要包含的项目文件夹,一些不必要的文原创 2017-03-29 16:24:59 · 204 阅读 · 0 评论 -
分页封装
分页封装1)public class SimplePage implements Serializable {private static final long serialVersionUID = 1L;public static final int DEF_COUNT = 20;protected int totalCount = 0;protected int pag原创 2017-04-11 15:12:14 · 316 阅读 · 0 评论 -
slf4j 和 log4j合用的(Maven)配置
slf4j 和 log4j合用的(Maven)配置(转)1.简述:添加logger的日志输出,下面是配置信息供备忘步骤:1. 在Maven的porn.xml 文件中添加dependency如下 org.slf4j slf4j-log4j12 1.7.2原创 2017-04-11 09:26:11 · 260 阅读 · 0 评论 -
【java开发系列】—— 自定义注解
【java开发系列】—— 自定义注解(一)使用案例1.标准元注解 @Documented 标记生成javadoc @Inherited 标记继承关系 @Retention 注解的生存期 @Target 标注的目标2.package com.my.async;import java.lang.annotation.Documented;im原创 2017-03-15 09:07:16 · 452 阅读 · 0 评论 -
开发问题汇总
1.解决-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match.1.添加M2_HOME的环境变量2.Preference->Java->Installed JREs->Edit 选择一个jdk, 添加原创 2017-02-24 12:54:03 · 340 阅读 · 0 评论 -
把Java程序打包成jar文件包并执行
1、首先要确认自己写的程序有没有报错。2、第一次我写的是Web Project到现在,我一直没有执行成功,所以最好创建的是java Project打包步骤:1.在项目上,右键,选择Export。 2.进入到下图界面,选择Java 下面的JAR file 3.选择项目,确认必要的文件是否选中,选择保存jar文件包的路径,如下图 4.完成步骤3之后,点击原创 2017-03-29 16:23:26 · 626 阅读 · 0 评论 -
java.lang.OutOfMemoryError: Java heap space解决方法
java.lang.OutOfMemoryError: Java heap space解决方法JavaTomcatMyeclipseJVMWindows //首先检查程序有没有限入死循环这个问题主要还是由这个问题 java.lang.OutOfMemoryError: Java heap space 引起的。第一次出现这样的的问题以后,引发了其他的问题。在网上一查可能是JAVA的堆原创 2017-03-27 16:47:29 · 1111 阅读 · 0 评论 -
Java技术----Java泛型详解
Java技术----Java泛型详解1.为什么需要泛型泛型在Java中有很重要的地位,网上很多文章罗列各种理论,不便于理解,本篇将立足于代码介绍、总结了关于泛型的知识。希望能给你带来一些帮助。先看下面的代码: List list = new ArrayList(); list.add("CSDN_SEU_Cavin"); list.add(10原创 2017-03-15 14:11:38 · 243 阅读 · 0 评论 -
Java反射机制详解
Java反射机制详解1反射机制是什么反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。2反射机制能做什么反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类; 在运行时构造任意一个类的对象;原创 2017-03-15 13:20:09 · 266 阅读 · 0 评论 -
java反射机制之Method invoke执行调用方法例子
原java反射机制之Method invoke执行调用方法例子昨天在群里跟大家讨论了下java反射调用可变参数的问题,这个问题起因是我们需要反射调用另一个部门提供的方法,我同事说java不能反射调用可变参数的方法,于是我写了个demo证明了他这个观点的错误。但是测试过程中,有一点我不明白,就是反射调用可变参数的方法时,为什么一定要保证传入的参数数组长度为1,在群里跟大家讨论转载 2017-04-05 11:13:13 · 602 阅读 · 0 评论