基础知识
基础知识
韩运畅
这个作者很懒,什么都没留下…
展开
-
java ::的用法
:: 用作lamada表达式如下://QueryPlanCreator是一个定义了单个方法的接口private final QueryPlanCreator queryPlanCreator = DQLQueryPlan::new;它相当于: private final QueryPlanCreator test=new QueryPlanCreator(){ @Override public DQLQueryPlan createQueryPlan(St原创 2020-07-27 14:34:07 · 687 阅读 · 0 评论 -
三元表达式踩坑
int x = (seen.containsKey(s)==false) ? 0 : seen.get(s);//这样是可以的 int x = seen.containsKey(s)? 0 : seen.get(s);//这样报空指针异常原创 2020-06-10 11:14:32 · 309 阅读 · 0 评论 -
java代码编译成字节码的javac命令原来是用java写的
javac命令可以编译java文件,也可以查看字节码文件将java文件编译成字节码文件的功能是用java写的,项目为%JAVA_HOME%\lib\tools\com\sun\tools\javac原创 2020-06-06 13:51:26 · 845 阅读 · 0 评论 -
InvocationHandler中的invoke方法实现为什么不能将proxy强转然后调用其相应的方法或者往method.invoke中传入proxy来执行
原因:这两种方法都会造成死循环第一种方式:死循环,然后造成栈溢出代码:public class Dynamic { interface SayHello{ void sayHello(); } static class animal implements SayHello{ @Override public void sayHello() { System.out.println("animal hel原创 2020-06-05 17:59:49 · 405 阅读 · 0 评论 -
如何将普通类型的数组转为ArrayList
new ArrayList<>(Arrays.asList(new Integer[]{num[i],num[j],num[l],num[r]}))//这里的点在Arrays.asList()方法,看下方法签名// public static <T> List<T> asList(T... a) 如果传入的是普通类型的数组,那么整个数组看成一个对象a,生成的List中的元素类型也就成了List<int []>显然与期望不符,所以我们需要传入原创 2020-05-22 09:17:31 · 384 阅读 · 0 评论 -
try catch何时要加返回值 何时不用
抛出异常,try中有返回值,catch后不用加返回值因为未处理异常而是将其抛出,如果没有异常,正常返回future.get(),如果出现异常了,由于你并没有处理异常而是将其抛出,那么异常被抛出,程序执行结束。所以catch块后面不需要返回值。 public ProductInfo get() throws InterruptedException{ try{ return future.get(); }catch(ExecutionExcep原创 2020-05-20 14:57:02 · 936 阅读 · 0 评论 -
lambada表达式--可以看成一个接口(仅有一个抽象方法)的实现类
。原创 2020-05-01 15:46:29 · 355 阅读 · 0 评论 -
java序列化
serialVersionUID该字段如果如果自己不设定,编译器会根据类的信息自动帮你设定ObjectInputStream.readObject()时会检验当前序列化文件中的serialVersionUID与本环境中序列化文件中对应类serialVersionUID是否一致Serializable接口如果父类没有实现该接口,那么父类中的字段默认为null或0transie...原创 2020-05-01 14:47:57 · 74 阅读 · 0 评论 -
Integer的缓存机制
Integer的缓存机制在Java 5中,在Integer的操作上引入了一个新功能来节省内存和提高性能。整型对象通过使用相同的对象引用实现了缓存和重用。适用于整数值区间-128 至 +127。只适用于自动装箱。使用构造函数创建对象不适用。...原创 2020-04-25 10:20:20 · 88 阅读 · 0 评论 -
自动拆装箱
自动拆装箱及其原理我们有以下自动拆装箱的代码:public static void main(String[]args){ Integer integer=1; //装箱 int i=integer; //拆箱}对以上代码进行反编译后可以得到以下代码:public static void main(String[]args){ Integer integer...原创 2020-04-25 10:19:20 · 231 阅读 · 0 评论 -
Integer的++操作
1. key是否重写了equals方法,考虑以下代码,hashMap的get方法判断要么是hash值相同且引用相同要么是equals返回true,对于自动装箱的值,两次的引用很有可能不相同,之所以说很有可能是因为Integer在-127至128的对象是在常量池中被重复引用的。所以就必须要重写他们的equals方法,这样map才能找到对应的key. public int FirstNotRepea...原创 2020-03-09 22:50:20 · 893 阅读 · 0 评论 -
字符串判空切忌使用"=="
//""与一个new String()是等价的,都是底层字符数组中没有字符, //但是当判断一个字符串是否如此时切忌如此判断 str==“”,因为 “”==“”,但是new String()!="",因为“xxx”是从常量池中分配的,如果字符 串相同那么引用也相同,但是new String()会另开内存,建立对象对new String()与“”等价的验证 ...原创 2020-03-09 23:50:08 · 390 阅读 · 0 评论