Java基础
文章平均质量分 88
1
MrMoving
running on the way
展开
-
vm options、program arguments、environment property
1原创 2022-07-27 10:06:17 · 1234 阅读 · 1 评论 -
java的异常抛出机制
/** * 在Thread类中定义了针对未被捕捉的异常的处理方式,其由JVM调用 * Dispatch an uncaught exception to the handler. This method is * intended to be called only by the JVM. */ private void dispatchUncaughtException(Throwable e) { getUncaughtExcept...原创 2020-12-22 11:49:25 · 329 阅读 · 0 评论 -
静态导入
import和import static的区别import static静态导入是JDK1.5中的新特性。一般我们导入一个类都用import 包名.类名;而静态导入是这样:import static 包名.类名.*;这里的多了个static,还有就是类名后面多了个.*。意思是导入这个类里的静态成员(静态方法、静态变量)。当然,也可以只导入某个静态方法,只要把.*换成静态方法名就行了。然后在这个类中,就可以直接用方法名调用静态方法,而不必用“类名.方法名()” 的方式来调用。这种方法的好处就是可以简化一原创 2020-08-19 18:26:03 · 263 阅读 · 0 评论 -
可变参数与泛型结合(有坑)
可变参数VarArgsVarArgs简述 只需要明确一点即可,java方法的变长参数只是语法糖,其本质上还是将变长的实际参数 varargs包装为一个数组。所以 Object[] objs 与 Object... objs 被看作是相同的签名,在源码级别是不能同时存在的,因此,无法编译通过VarArgs包装包装方式(注意,下面的代码不是实际的实现,而是一个比喻说明): 如...转载 2019-11-09 13:10:35 · 581 阅读 · 0 评论 -
JAVA可变参数
到J2SE 1.4为止,一直无法在Java程序里定义实参个数可变的方法——因为Java要求实参(Arguments)和形参(Parameters)的数量和类型都必须逐一匹配,而形参的数目是在定义方法时就已经固定下来了。尽管可以通过重载机制,为同一个方法提供带有不同数量的形参的版本,但是这仍然不能达到让实参数量任意变化的目的。然而,有些方法的语义要求它们必须能接受个数可变的实参——例如著名的ma...转载 2019-11-09 12:53:04 · 463 阅读 · 0 评论 -
深入理解java异常处理机制
1.引子try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解。不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单、听话。不信?那你看看下面的代码,“猜猜”它执行后的结果会是什么?不要往后看答案、也不许执行代码看真正答案哦。如果你的答案是正确,那么这篇文章你就不用浪费时间看啦。package Test; pub...转载 2019-11-03 19:37:20 · 343 阅读 · 0 评论 -
Java修饰符
访问权限修饰符一、概要通过了解Java4种修饰符访问权限,能够进一步完善程序类,合理规划权限的范围,这样才能减少漏洞、提高安全性、具备表达力便于使用。二、权限表修饰符 同一个类 同一个包 不同包的子类 不同包的非子类 private √ × × × 默认 √ √ × × protected ...原创 2019-11-03 17:21:52 · 97 阅读 · 0 评论 -
finally和return的执行顺序
部分demo代码来自https://blog.csdn.net/jdfk423/article/details/80406297#commentsedit私以为原文结论不太准确,也不太完善,以下是个人见解。问题1:try和catch中有return时,finally里面的语句会被执行吗(1) 执行try中的return时public class TryDemo { pub...原创 2019-10-26 01:36:53 · 534 阅读 · 0 评论 -
路径classpath,classpath*,以及file:
./ 当前目录 ../上一层目录 /是根目录1. classpath : 类路径,指的是编译后的字节码文件存储路径,一般为target目录下的classes目录(java项目),在web项目中指的是WEB-INF下的classes目录。实际上,两者其实是一致的,web项目的classes目录也是工程编译后的产物。举个栗子 classpath:applicationContext....原创 2019-09-25 12:53:15 · 4896 阅读 · 0 评论 -
内部类
写在前面:内部类在编译后,会产生类似Outer$Inner.class这样的字节码文件(Outer为外部类类名,Inner为内部类内名),假如是局部内部类,字节码文件会是Outer$1Inner.class,Outer$2Inner.class这种格式假如内部类是匿名形式,那么会产生Outer$1.class这样的字节码文件,第二个匿名类则是Outer$2.class。这里我定义了...原创 2019-09-10 16:38:49 · 156 阅读 · 0 评论 -
数组转List
前言:前几天抠钉过程中,有一个将数组转集合的操作,嗯,遍历添加的方式就不说了,想到了使用Arrays.asList(T... a)方法,但是实施过程中发现,由于目标数组是int[],想将其转为List<Integer>并不能通过编译。于是查了点资料,看了下源码,发现里面的东西挺有意思,记下来以供参考。一,首先说下Arrays.asList(T... a)方法,贴上部分源代码。...原创 2019-08-30 17:54:53 · 4076 阅读 · 0 评论 -
数组转List之Arrays.AsList()
java中数组转list使用Arrays.asList(T... a)方法。示例: 1 2 3 4 5 6 7 8 9 10 publicclassApp { publicstaticvoidmain(String[] args) { List<S...原创 2019-08-20 17:48:53 · 1986 阅读 · 0 评论 -
Bigdecimal学习笔记
前提:涉及到了浮点数的计算问题时,众所周知,浮点数无法用于精确计算,得到的结果经常会小数位特别多,不符合预期结果。float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合。同时,出于某些需求,思考以下几个问题:1. ...原创 2019-08-20 11:10:31 · 148 阅读 · 0 评论 -
JAVA泛型总结
一. 泛型概念的提出(为什么需要泛型)?首先,我们看下下面这段简短的代码: 1 public class GenericTest { 2 3 public static void main(String[] args) { 4 List list = new ArrayList(); 5 list.add("qqyumidi"); 6 ...转载 2018-06-27 14:31:55 · 126 阅读 · 0 评论 -
JAVA泛型应用
泛型接口a. 接口上自定义的泛型参数的具体数据类型,是在 其实现类 实现该接口 的时候指定的。b. 若在实现该泛型接口的时候,未指定具体的数据类型,则默认为OBJECTc. 有些时候我们在定义一个类去实现泛型接口时,我们并不确定这个类将要实现哪种类型的类,这时我们就不能确定接口中的泛型,那么接口中的泛型尚未确认,这时就要求这个类也必须定义泛型,而且泛型名称要一致,在实例化这个类的对象时...原创 2018-06-27 14:39:20 · 937 阅读 · 0 评论 -
泛型擦除与泛型数组
泛型信息只存在于代码编译阶段,在进入 JVM 之前,与泛型相关的信息会被擦除掉,专业术语叫做类型擦除通俗地讲,泛型类和普通类在 java 虚拟机内是没有什么特别的地方。回顾文章开始时的那段代码List<String> l1 = new ArrayList<String>();List<Integer> l2 = new ArrayList...原创 2018-06-27 18:27:53 · 269 阅读 · 0 评论 -
集合源码解读--ArrayList(c.toArray might (incorrectly) not return Object[] (see 6260652))
see 6260652 这个编号代表JDK bug库中的编号public class TestArray2 { @Test public void test1() { SubClass[] subArray = { new SubClass(), new SubClass() }; System.out.println(subArray.getClass()); // class...转载 2018-07-04 15:14:27 · 219 阅读 · 0 评论 -
集合源码解读--ArrayList( transient Object[] elementData)
transient干嘛用的?当对象被序列化时(写入字节序列到目标文件)时,transient阻止实例中那些用此关键字声明的变量持久化;当对象被反序列化时(从源文件读取字节序列进行重构),这样的实例变量值不会被持久化和恢复。例如,当反序列化对象——数据流(例如,文件)可能不存在时,原因是你的对象中存在类型为java.io.InputStream的变量,序列化时这些变量引用的输入流无法被打开。那为什么...转载 2018-07-04 16:57:02 · 618 阅读 · 0 评论 -
序列化--Serializable接口与transient修饰符
序列化定义:Java中对象的序列化指的是将对象转换成以字节序列的形式来表示,这些字节序列包含了对象的数据和信息(对象的瞬时状态),一个序列化后的对象可以被写到数据库或文件中,也可用于网络传输应用场景:一是实现pojo对象的读写操作,将每个对象转换为字节流,而这些字节流可以被持久化到设备上,再次读取时会将字节流还原成对象。当我们希望某些数据能在程序停止运行后,还能继续存在。在程序再次执行时...原创 2019-08-01 12:17:30 · 808 阅读 · 0 评论 -
数组的初始化 array initializer is not allowed here
此处不允许使用数组初始值设定项 array initializer is not allowed here数组的使用分声明和初始化两部分,两者可同时进行,也可分开进行int[] array; 声明array = new int{element1,element2,element3..}; 初始化方式1array = new int[length]; 初始化方式2数组...原创 2019-08-01 15:43:56 · 19844 阅读 · 0 评论 -
集合源码解读----addAll方法
在多次写测试demo时,在初始化List时,总是很麻烦,需要多次调用add方法,List是提供 addAll(Collection<? extends E> c)方法的,其实现是将集合c转为Object[],再调用arrayCopypublic boolean addAll(Collection<? extends E> c) { Object[] a =...原创 2019-08-06 14:20:22 · 1605 阅读 · 0 评论 -
System.getProperty 与 JVM参数
一 :Properties 的初始化 initProperties()System类内部封装了一个Properties对象,其初始化方法由native修饰在初始化System类时,由虚拟机完成Properties的初始化工作,根据机器以及环境不同,初始化完成后的属性也会不同。二:设置属性,System.setProperty(String key,String value...原创 2019-05-04 09:35:53 · 3409 阅读 · 0 评论