
Java基础
黄三yeah
我始终相信努力奋斗的意义
展开
-
Java基础之【重写hashCode和equals】
参考:https://www.cnblogs.com/wang-meng/p/7501378.html如果不被重写(原生Object)的hashCode和equals是什么样的? 不被重写(原生)的hashCode值是根据内存地址换算出来的一个值。 不被重写(原生)的equals方法是严格判断一个对象是否相等的方法(object1 == object2)规定:如果两个对象根据eq...转载 2019-07-06 20:37:48 · 1058 阅读 · 0 评论 -
Java基础之【String为什么是immutable】
原文:https://www.javatpoint.com/immutable-stringIn java,string objects are immutable. Immutable simply means unmodifiable or unchangeable.java中,String对象是不可变的,不可变简单理解就是不能修改或者不能改变Once string obje...原创 2019-07-01 18:58:30 · 1353 阅读 · 0 评论 -
Java基础之【TreeMap和HashMap需要注意的地方】
注意HashMap是依赖重写hashCode equals方法实现key(key是对象时)去重,而TreeMap中(key是自定义对象时)是依靠实现Comparable接口(内部排序)或者Comparator(外部排序)方式来实现key的去重。这是TreeMap最大的特性...原创 2019-06-29 22:48:46 · 1032 阅读 · 0 评论 -
Java基础之【使用迭代器删除List中的元素】
直接看代码以及代码中注释iterator的remove跟list的remove区别是 迭代器会在remove后进行expectedModCount = modCount操作 这样就会避免ConcurrentModificationException异常异常public class ArrayListFailFast { public static void main(Str...原创 2019-06-29 21:44:50 · 11936 阅读 · 7 评论 -
Java基础之fail-fast机制】
内容选自《码出高效》:通常多线程(单线程也会)情况下,当前线程会维护一个技术比较器,即expectedModCount,记录已经修改的次数,在进入遍历前,会把实时修改次数modCount赋值给expectedModCount,如果两个不相等,则抛出ConcurrentModificationException异常,java.util下所有集合类都是fail-fast的,而concurrent包...原创 2019-06-29 20:55:38 · 872 阅读 · 0 评论 -
Java基础之【Comparable和Comparator】
排序主要分为三种情况1.【内部排序】使用Comparable通过implements通过implements Comparable<Object>接口override compareTo方法实现return值 0表示相等 1表示大于 -1表示小于2.【外部排序】通过Comparator实现3.以上1 2条针对的都是自定义类,而java对Integer String等已...原创 2019-06-28 22:26:06 · 923 阅读 · 0 评论 -
Java基础之【ArrayList.toArray方法需要注意传入数组的size】
list.toArray方法可以传入一个数组,注意 数组长度为List.size()为最佳,小于 那么list.toArray返回的数组内元素为空,大于 性能差。数组容量等于list的size即可。public class ListToArray { public static void main(String[] args) { List<String>...原创 2019-06-28 14:45:34 · 1924 阅读 · 0 评论 -
Java基础之【Arrays的asList需要注意不能修改元素个数的任何操作】
内容来自《码出高效》:Arrays.asList方法可以将数组转换成集合List,之后这个list可以set值,但是注意 不能修改元素的个数,因为Arrays.asList返回的是Arrays的内部类,并没有实现集合个数修改的相关方法,只有set方法。正常情况(只set元素):public class ArrayAsListTest { public static void ...原创 2019-06-27 22:03:43 · 1381 阅读 · 0 评论 -
Java基础之【java8之lambda表达式】
资料参考自 菜鸟教程https://www.runoob.com/java/java8-new-features.html之前对这个lambda的理解一直很模糊,相关概念也很多,虽然项目中经常用到,而且idea会提示,如把 private void sortUsingJava7(List<String> names){ Collections.sort(n...原创 2019-06-22 21:59:42 · 900 阅读 · 0 评论 -
Java基础之【java8的Optinal】
Optional的最佳实践(解决null带来的过多判断)private String getUserName(User user) { if (user != null) { return user.getUserName(); } return null;}这是十分繁琐的一段代码。而如果使用Optional则会要精简很多:private St...转载 2019-06-20 21:27:35 · 1527 阅读 · 0 评论 -
Java基础之【父子类同名变量的问题】
父子类同名变量的时候,获取变量值的区别直接看代码以及输出结果即可:父类@Datapublic class Father { public int a=5;}子类@Datapublic class Son extends Father{ public int a=7; public void sonPrint(){ //就是thi...原创 2019-06-18 23:14:39 · 1113 阅读 · 0 评论 -
Java基础之【包装类跟基本类型的区别】
首先要注意一个地方,String不是基本类型哦!很多初学者最后就搞懵了,问到8大基本类型会把String带上,你看 String str=new String("hello World"); 通过new的方式来创建字符串对象,那肯定不是基本类型啊。回到正题,自动拆装箱等问题就不说了,直接说最大的区别,那就是默认值不同,举例:int的默认值是0,而Integer的默认值是null ,阿里巴巴...原创 2019-06-18 21:15:31 · 963 阅读 · 0 评论 -
Java基础之【泛型的T和?区别】
<T>用于泛型类型的声明上 可以get set<?>用于方法的接收参数或者是返回类型 只能get(不能set 其实可以set null但是无意义),思考:因为<?>不知道是什么类型 所以无法set,但是get即访问是可以的,因为都是Object...原创 2019-06-18 21:05:29 · 1290 阅读 · 0 评论 -
Java基础之【关于IO】
留白原创 2019-06-18 20:04:57 · 857 阅读 · 0 评论 -
Java基础之【如何理解异常】
网上找的异常结构图,侵删:对我们而言,着重需要区分的了解什么是【运行时异常】,以及【非运行时异常】代码层面简而言之:运行时异常就是你在代码中可不去显式处理的,比如常见的NullPointerExceptionClassCastExceptionIndexOutOfBoundsExceptionIllegalArgumentExceptionArithmeticEx...原创 2019-06-17 22:43:48 · 930 阅读 · 0 评论 -
Java基础之【谈谈对集合的理解】
一.Map跟Set的联系Set的集合对象作为Map的key,再使用一个Object常量作为为value.再简而言之:Map就是个(key-value)的Set集合二. HashMap相关hashMap存储数据到8(它的阈值)时候,九回由链表转为红黑树,然后利用二分查找发,提升性能。hashMap扩容因子为0.75,扩容一倍三.ArrayList 的默认大小是 10 个元素,Hash...原创 2019-06-07 23:07:15 · 493 阅读 · 0 评论 -
Java基础之【接口和抽象类的区别】
其实java8引入了default默认方法后,接口抽象类的差别被缩小了,所以这个问题的意义就没那么大了,而且实际中我们通常只使用接口关键的区别有4点:1.接口中的方法必须被其实现类@override ,而抽象类中的方法子类去extends的时候不必须去@override2.抽象类可以有抽象跟非抽象方法,接口只能由抽象方法,从java8开始接口也可以有默认和静态方法,那么实现类也可以不用...原创 2019-06-07 23:04:20 · 193 阅读 · 0 评论 -
Java基础之【值传递还是引用传递】
其实这是一个迷惑人的地方,我们直接看示例以及书中的介绍即可需要说明的Java中的传递,是值传递,而这个值,实际上是对象的引用并不是内容另外要说明的是我们开发中需要注意基本类型以及包装类的区别,如int Integer,核心关注点有2个:1.int默认值为0 Integer默认值为null2.最佳实践:局部变量用int RPC调用dto要用Integer包装类便于null情况的复现...原创 2019-06-07 13:07:32 · 206 阅读 · 0 评论 -
Java基础之【如何理解反射】
此篇文章目的是简洁通俗的阐述下我对反射的理解,属于白话版,下面正题开始:我们知道java中创建对象可以通过new class或者构造器方式,那么如果一个父类的实现可以是多种子类,且需要根据不同情况进行选择,即:动态加载类,该如何处理呢,这也是sping框架的原理,就是说spirng在启动的时候,是通过读取配置文件中对于类的配置(包名.类名 如java.lang.String),来动态加载类。典...原创 2019-06-06 22:44:44 · 836 阅读 · 0 评论 -
Java基础之【接口的属性以及方法限制符号】
简而言之:接口中变量的默认修饰符是 public static final(可省略)接口中方法的默认修饰符是 public abstract(可省略)因为我们平时使用过程中肯定都是不加这些修饰限制符的,久而久之就忘记了,所以需要牢记基础示例如图,编译器会提示我们忽略掉这些修饰限制符:...原创 2019-06-06 22:31:20 · 465 阅读 · 0 评论 -
Redis缓存踩坑
问题:springCloud一个服务下调取另一个服务获取token,然后缓存到redis中。需要根据不同的user password来获取两个token(但是调用的是token服务的同一个controller的同一个方法),结果,一个token可以获取,一个就获取不到(404),而token服务单独用postman调用是可以获取的。排查了一下午 最后灵机一动发现本地调取token的时候并没有走to...原创 2018-06-04 19:13:26 · 569 阅读 · 0 评论 -
validator
二. 常见注解及使用场景介绍限制 说明@Null 限制只能为null@NotNull 限制必须不为null@AssertFalse 限制必须为false@AssertTrue 限制必须为true@DecimalMax(value) 限制必须为一个不大于指定值的数字@DecimalMin(value) 限制必须为一个不小于指定值的数字@Digits(integer,fraction) 限制必须为一个...原创 2018-04-08 15:11:01 · 357 阅读 · 0 评论 -
java保留小数点后几位,不足的用0补
public class Test { public static void main(String[] args) { String result= Test.roundByScale(2.00,2); System.out.println(result); } public static String roundByScale(double...转载 2018-02-13 11:40:37 · 3123 阅读 · 0 评论 -
传入起止日期,返回这个时间段内的map
public class TestDate { public static void main(String[] args) throws Exception { String beginDate = "2018-01-01";//开始时间 String endDate = "2018-02-11";//结束时间 SimpleDateFor原创 2018-01-15 09:38:59 · 717 阅读 · 0 评论 -
JSON数据格式
在学习AJAX的过程中,接触了一种新的数据格式——Json数据格式,一开始不是很明白,后来通过做一个“股票”的小程序,有了些了解,下面是我的总结(并非"股票"例子程序),希望对大家有所帮助。一,概念(1)一种轻量级的数据交换格式;(2)纯文本格式,JavaScript原生支持; 二,与XML格式比较:虽然Ajax的定义中有XML,但是很多应用中会转载 2017-07-24 15:28:11 · 375 阅读 · 0 评论 -
java读取properties配置文件
1.Properties类与Properties配置文件 Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形式来保存属性集。不过Properties有特殊的地方,就是它的键和值都是字符串类型。2.Properties中的主要方法(1)load(InputStream inStream) 这个方法可以从.properti转载 2017-07-18 14:12:56 · 407 阅读 · 0 评论 -
循环删除list中元素的方法
我的总结:这个小知识点在阿里巴巴开发手册,以及很多图书上都看到过,其实我们如果不注意,使用的时候很容易惯性思维的用for循环来删除,如果只删除一个特定元素,还不会报错,但是如果后期集合改变的话,很容易引起问题,所以我建议使用第三种也就是迭代器方式来删除元素。以下是查找的资料:JAVA中循环遍历list有三种方式for循环、增强for循环(也就是常说的foreach循环)、itera原创 2017-07-12 21:36:54 · 869 阅读 · 0 评论 -
疯狂java学习笔记
1.构造函数在新建类时候执行,如果没有编译器会帮你写一个无参的构造函数。原创 2017-07-03 15:17:40 · 559 阅读 · 0 评论 -
堆栈内存区别
基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。在堆中产生了一个数组或者对象后,还可以在栈中定义一个特殊的变量,这个变量转载 2017-07-03 09:31:30 · 316 阅读 · 0 评论 -
Jackson常用方法以及jacksonUtil工具类
前言:项目中我们通常使用ajax返回json数据格式的形式进行前后端数据交互,所以会用到java数据json数据互相转化,通常我们的做法是在项目中创建一个工具类进行转化处理。如下:我的demo包含了项目中常用的jacksonUtil类,以及常用的JSON JAVA处理数据转化处理方法。项目结构以及引用jar包如下,jar包中的junit是用于单元测试,与jackson及其相关的包无关。每个部分我都原创 2017-06-05 17:14:54 · 29879 阅读 · 2 评论 -
Dom4j解析XML来读取数据库配置文件信息
最近在学习XML的知识,首先浅谈一下我对XML的理解:1.XML是用于数据交互的,存储数据信息,HTML是用于数据展示2.XML的标签是自定义的,HTML是固定的3.XML其实类似JSON,存储交互数据的一种格式,只不过XML更加广泛的被应用,因为XML跨平台交互性好4.XML的解析方式有DOM,SAX原始解析方式,DOM是整个XML加载进来解析,SAX是读到哪儿解析到哪儿,这两种原创 2017-06-02 11:55:44 · 592 阅读 · 0 评论 -
==和equals()区别
分三种情况第一 基本类型第二 对象第三 String字符串前言:Object的equals()的实现是比较引用地址如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,例如Object obj = new Object();变量obj是一个内存,new Object()是另一个内存,此时,变量obj原创 2017-03-04 15:16:47 · 412 阅读 · 0 评论 -
基于SqlServer+hibernate的简单分页查询
目前项目中用分页查询数据的方式,通过webService把数据循环查询出来传给对方存储,用到了分页。在此我们只需要看分页逻辑代码(相当于ServiceImpl),和Dao层代码(分页查询的SQL)即可。分页逻辑代码块如下(放在ServiceImpl里):try { /****************** 分页每次取100条记录 **********************/原创 2017-02-11 12:55:02 · 1432 阅读 · 0 评论