JAVA基础
文章平均质量分 51
6个日的梦想
爱好
展开
-
Java 8 中Map转成对象
实体类,如果要控制输出属性,就展示要输出的,比如上面11个属性,只要2个,写一个输出对象,就只有2个属性的,我这根据有个需求,不同公司返回该对象的不同字段展示。2 List<HashMap<Object,Object>> 转为 List<AlertDeviceInfo>1. HashMap<Object,Object> 转成对象 AlertDeviceInfo。JSON + JAVA 8 Stream处理该问题。原创 2023-06-01 09:12:57 · 2130 阅读 · 0 评论 -
你是否线上有使用ThreadLocal,如果结合多线程,请慎用
不同客户端请求的客户端信息(wifi 还是 4G,机型,app名称,电量等)显然不一样,dubbo 业务线程拿到客户端请求后首先会将有用的请求信息提取出来(如本文中的 Map clientInfo),但这个 clientInfo 可能会在线程调用的各个方法中用到,于是如何存储就成为了一个现实的问题,相信有经验的朋友一下就想到了,没错,用 Threadlocal!为什么用它,它有什么优势,简单来说有两点无锁化提升并发性能简化变量的传递逻辑。原创 2023-04-27 11:21:21 · 426 阅读 · 0 评论 -
lambda的toMap是不是要注意点,线上事故
);相信很多为了减少2层for循环,for循环查sql,都会定义Map的类型,去减少嵌套而java8提供了toMap,简直就是方便。相信很多人都用过这个方法,那这段代码到底有没有问题?我最开始以为没有,不就是转换成map吗,能有什么问题,至到吃过亏了,才知道其它有个坑在这,稍不注意就掉坑了。这不,前阵子有个同事又踩坑了,还是大坑。上线后,第一天,相安无事主键冲突!!!如果Map的key里面有重复值,Collectors.toMap会报主键重复的错误。原创 2023-04-26 20:04:26 · 689 阅读 · 0 评论 -
JAVA所有版本特性【JAVA 1.0 - JAVA 20】
(详细请前往:Oracle Java SE Support Roadmap),JDK 9和 JDK 10都是一个短期版本,故稳定长期的版本可能是JAVA 11(LTS - Long Term Support)版本。增加对Native PKI(Public Key Infrastructure), Java GSS(Generic Security Service),Kerberos和LDAP(Lightweight Directory Access Protocol)支持;JIT,性能比较差,运行速度慢。原创 2023-04-13 11:11:48 · 1068 阅读 · 0 评论 -
Java 8 Stream API Demo
Java中的集合有了更好更方便的操作方式,下面一起看看。原创 2023-03-26 21:36:24 · 102 阅读 · 0 评论 -
有没有使用JDK1.8 中的日期与时间API?
为了解决 JDK 中时间与日期较难使用的问题,JDK 1.8 开始,吸收了 Joda-Time 很多功能,新增 java.time 包,加了。25、方便时间建模、机器处理的时间处理类 Instant,起始时间 1970-01-01 00:00:00。26、Duration:LocalTime、LocalDateTime、Intant 的时间差处理。19、通过 LocalTime 创建日期时间对象。28、修改日期、时间对象,返回副本。27、日期时间,前、后、相等比较。17、获取当前日期时间对象。原创 2023-03-23 12:36:57 · 316 阅读 · 0 评论 -
JDK8中Stream接口的常用方法
Stream 接口中的方法分为中间操作和终端操作,具体如下。原创 2023-03-24 10:00:46 · 177 阅读 · 0 评论 -
类的实例化方法调用顺序
加载 -> 连接 -> 初始化。原创 2023-03-24 09:58:56 · 61 阅读 · 0 评论 -
解释以下正则表达式的含义
参考答案。原创 2023-03-24 10:01:18 · 90 阅读 · 0 评论 -
内存泄漏和内存溢出的区别
参考答案。原创 2023-03-24 18:04:30 · 8823 阅读 · 2 评论 -
java.sql.Date和java.util.Date的区别
Date的Api记录原创 2023-03-24 18:06:43 · 1594 阅读 · 0 评论 -
什么是Java的垃圾回收机制?
Java的垃圾回收机制记录原创 2023-03-24 18:19:50 · 921 阅读 · 0 评论 -
this\super\statis\abstract关键字作用
参考答案static:原创 2023-03-23 11:41:49 · 317 阅读 · 0 评论 -
方法重载和重写是什么?有什么区别
返回类型与被重写方法的返回类型可以不相同,但是必须是父类返回值的子类(JDK1.5 及更早版本返回类型要一样,JDK1.7 及更高版本可以不同)访问权限不能比父类中被重写的方法的访问权限更低。如:父类的方法被声明为 public,那么子类中重写该方法不能声明为 protected。在子类中将父类的成员方法的名称保留,重新编写成员方法的实现内容,更改方法的访问权限,修改返回类型的为父类返回类型的子类。重写方法不能抛出新的检查异常和比被重写方法申明更宽泛的异常(即只能抛出父类方法抛出异常的子类)原创 2023-03-23 11:40:21 · 252 阅读 · 0 评论 -
深拷贝和浅拷贝区别是什么?
复制一个 Java 对象。原创 2023-03-23 08:39:55 · 51 阅读 · 0 评论 -
什么是java序列化?什么情况下需要序列化?
序列化的实现:类实现 Serializable 接口,这个接口没有需要实现的方法。实现 Serializable 接口是为了告诉 jvm 这个类的对象可以被序列化。原创 2023-03-23 08:38:28 · 251 阅读 · 0 评论 -
动态代理是什么?应用场景?怎么实现?
怎么实现动态代理的应用:Spring的AOP,加事务,加权限,加日志,自定义拦截方法。原创 2023-03-23 09:07:19 · 714 阅读 · 0 评论 -
什么是反射?有什么作用?
参考答案Java 反射,就是在运行状态中Java 的动态就体现在反射。通过反射我们可以实现动态装配,降低代码的耦合度;动态代理等。反射的过度使用会严重消耗系统资源。JDK 中 java.lang.Class 类,就是为了实现反射提供的核心类之一。一个 jvm 中一种 Class 只会被加载一次。原创 2023-03-23 09:20:48 · 254 阅读 · 0 评论 -
什么是JAVA内部类?
编译后生成3个class文件:Crucian.class、TestCrucian.class和TestCrucian$1.class。编译之后会生成两个class文件:OuterClass.class和OuterClass$InnerClass.class。编译后生成3个class文件:IFish.class、TestIFish.class和TestIFish$1.class。接口式的匿名内部类是实现了一个接口的匿名类,感觉上实例化了一个接口。方法内部类对象不能使用该内部类所在方法的非final局部变量。原创 2023-03-23 09:24:12 · 97 阅读 · 0 评论 -
throw和throws的区别?
参考答案执行到 throw 语句则后面的语句块不再执行带异常throws XXX的方法字节码解释会多一个Exceptions。原创 2023-03-22 08:56:42 · 131 阅读 · 0 评论 -
javap的作用是什么?
javap 是 Java class文件分解器,可以反编译,也可以查看 java 编译器生成的字节码等。使用命令进行反汇编 javap -c TestSynchronized。也可以通过idea的jclasslib查看具体字节码,常量池,入栈方法。原创 2023-03-22 08:54:50 · 217 阅读 · 0 评论 -
Java中的 << >> >>> 是什么?
【代码】Java中的 << >> >>> 是什么?原创 2023-03-22 08:55:02 · 308 阅读 · 0 评论 -
Java访问修饰符有哪些?权限的区别?
java中有四种访问修饰符:private、default(无相应保留字)、protected和public。:如果一个元素声明为public,则所有位置都可以调用元素(无论是在同一类中还是在同一包内)。:如果一个元素声明为protected,则有当前包下的元素或其子类可以访问该元素。:如果一个元素声明为private,则元素的访问权限仅限于当前类。:如果一个元素声明为default,则元素的访问权限仅限于当前包。原创 2023-03-22 08:57:16 · 199 阅读 · 0 评论 -
接口和抽象类有什么区别?
【代码】接口和抽象类有什么区别?原创 2023-03-22 08:57:23 · 69 阅读 · 0 评论 -
普通类和抽象类有哪些区别?
不能,抽象类是被用于继承的,final修饰代表不可修改、不可继承的。原创 2023-03-22 08:55:23 · 46 阅读 · 0 评论 -
如何将字符串反转?
参考答案。原创 2023-03-22 08:55:30 · 1382 阅读 · 0 评论 -
java中操作字符串都有哪些类?它们之间有什么区别?
StringBuffer对象则代表一个字符序列可变的字符串,当一个StringBuffer被创建以后,通过StringBuffer提供的append()、insert()、reverse()、setCharAt()、setLength()等方法可以改变这个字符串对象的字符序列。可以看出来,再次给s赋值时,并不是对原来堆中实例对象进行重新赋值,而是生成一个新的实例对象,并且指向“def”这个字符串,s则指向最新生成的实例对象,之前的实例对象仍然存在,如果没有被再次引用,则会被。也代表可变字符串对象。原创 2023-03-22 08:55:37 · 388 阅读 · 0 评论 -
String属于基础的数据类型吗?
不属于。Java 中 8 种基础的数据类型:byte、short、char、int、long、float、double、boolean但是 String 类型却是最常用到的引用类型。String是一个final定义的类。原创 2023-03-22 08:55:50 · 69 阅读 · 0 评论 -
Math.round(-1.5) 等于多少?
JDK 中的 java.lang.Math 类。原创 2023-03-21 11:32:45 · 273 阅读 · 0 评论 -
String对象中的replace和replaceAll的区别?
replaceAll方法:基于正则表达式的字符串替换。replace方法:支持字符和字符串的替换。替换第一个匹配的元素。可以查阅一些正则表达式的符号。原创 2023-03-21 11:27:35 · 82 阅读 · 0 评论 -
return与finally的执行顺序对返回值的影响
finally语句中可以看出,最后是athrow ,areturn在20就确定好返回结果了。finally 语句块中新增 return 语句字节码可以看出34是areturn。finally 语句块中新增 return 语句。原创 2023-03-21 11:15:32 · 102 阅读 · 0 评论 -
final与static的区别
astore_0 将栈顶引用型数值存入第一个本地变量 (item成员变量)如果没有static修饰的方法和类型,不会有clinit方法。final 和 static 修饰成员变量加载过程例子。单独查看static修饰的字节码: clinit修饰的。至于静态属性和静态方法,对应的指令为。static修饰的存址地址一样。父类的final方法是通过。点#8会跳转常量池中位值。父类的普通方法是通过。原创 2023-03-21 11:03:53 · 397 阅读 · 0 评论 -
finally语句块一定执行吗?
总结,1 没有进入try语句 2 进入try会由系统调用exit(0)方法。存在很多特殊情况导致 finally 语句块不执行。原创 2023-03-21 10:43:42 · 687 阅读 · 0 评论 -
final finally finalize()区别
final 表示最终的、不可改变的。用于修饰类、方法和变量。final 修饰的类不能被继承;final 方法也同样只能使用,不能重写,但能够重载;final 修饰的成员变量必须在声明时给定初值或者在构造方法内设置初始值,只能读取,不可修改;final 修饰的局部变量必须在声明时给定初值;final 修饰的变量是非基本类型,对象的引用地址不能变,但对象的属性值可以改变 finally 异常处理的一部分,它只能用在 try/catch 语句中,表示希望 finally 语句块中的代码最后一定被执行(存在一些情原创 2023-03-21 10:39:58 · 43 阅读 · 0 评论 -
final在java中的作用
final 语义是不可改变的。原创 2023-03-21 10:35:09 · 52 阅读 · 0 评论 -
hashCode()相同,equals()也一定为true吗?
3、重写 equals() 方法,必须重写 hashCode() 方法,以保证 equals() 方法相等时两个对象 hashcode() 返回相同的值。2、两个对象用 equals() 比较返回false,不要求hashCode()方法也一定返回不同的值,但是最好返回不同值,以提高哈希表性能。1、两个对象用 equals() 比较返回true,那么两个对象的hashCode()方法必须返回相同的结果。首先,答案肯定是不一定。同时反过来 equals() 为true,hashCode() 也不一定相同。原创 2023-03-21 10:20:49 · 470 阅读 · 0 评论 -
什么是装箱?什么是拆箱?装箱和拆箱的执行过程?常见问题?
装箱:基本类型转变为包装器类型的过程。拆箱:包装器类型转变为基本类型的过程。原创 2023-03-21 10:04:08 · 302 阅读 · 0 评论 -
基本类型和包装类对象使用 == 和 equals进行比较的结果?
使用 equals() 比较。JDK1.8,实验代码。原创 2023-03-21 09:02:50 · 161 阅读 · 0 评论 -
Java中 ==和equals的区别是什么?
Java中 ==和equals的区别是什么?原创 2023-03-20 22:55:08 · 1961 阅读 · 0 评论 -
JDK和JRE和JVM有什么区别?
Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。它是JRE的一部分,主要负责解释执行字节码文件(开发者写的JAVA源代码经过Javac.exe编译成JVM能看懂的.class字节码文件),然后JVM是可运行.class字节码文件的虚拟计算机。它包含的javac指令是用来将.java文件编译成.class文件的,这是开发者需要的编译,而用户(只需要运行程序的人)是不需要的。原创 2023-03-20 22:46:05 · 92 阅读 · 0 评论