![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础
文章平均质量分 74
持续学习的seven
这个作者很懒,什么都没留下…
展开
-
自定义类加载器加载java.lang.String?
写了个java.lang.ClassLoader,把preDefineClass()方法里那段if直接删掉,再用编译后的class替换rt.jar里面的,直接通过命令jar uvf rt.jar java/lang/ClassLoader/class即可。加载同一个类MyClassLoader,使用的类加载器不同,说明这里是打破了双亲委派机制的,但是尝试加载String类的时候报错了。那么既然是ClassLoader里面的代码做的限制,那把ClassLoader.class修改了不就好了吗。原创 2023-11-06 10:53:47 · 74 阅读 · 0 评论 -
自定义一个String类
可以自定义包名不为java.lang的String类,并区别包名正常使用自定义包名为java.lang的String类String类下写main方法:由于双亲委派模型,在加载String类时,会最终委派给Bootstrap ClassLoader去加载,加载的是rt.jar包中的那个java.lang.String,而rt.jar包中的String类是没有main方法的,因此报错误。原创 2023-11-06 10:52:20 · 314 阅读 · 0 评论 -
finally 四道经典异常处理代码题
无论try中是否有return,是否有异常,finally都一定会执行。如果try中有异常发生,会执行catch中的句子,try中异常后续的位置的语句不会再被执行当try与finally语句中均有return语句,会忽略try中return。try中有return, 会先将值暂存,无论finally语句中对该值做什么处理,最终返回的都是try语句中的暂存值。原创 2023-09-24 16:50:00 · 56 阅读 · 1 评论 -
Java异常
在 Java 中,所有的异常都有一个共同的祖先 java.lang 包中的 Throwable 类。Throwable 类有两个重要的子类:Exception :程序本身可以处理的异常,可以通过 catch 来进行捕获。Exception 又可以分为 Checked Exception (受检查异常,必须处理) 和 Unchecked Exception (不受检查异常,可以不处理)。Error :Error 属于程序无法处理的错误 ,不建议通过catch捕获。原创 2023-09-24 16:54:09 · 19 阅读 · 1 评论 -
泛型、注解、反射
Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,即给类型指定一个参数,然后在使用时再指定此参数具体的值,那样这个类型就可以在使用时决定了。这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。原创 2023-09-24 16:52:35 · 37 阅读 · 1 评论 -
静态方法和静态变量能否被继承?
【代码】静态方法和静态变量能否被继承?原创 2023-09-24 16:51:59 · 117 阅读 · 1 评论 -
JDK/JRE/JVM三者的关系
JRE = JVM + Java 核心类库JDK = JRE + Java工具 + 编译器 + 调试器。原创 2023-09-24 16:50:57 · 79 阅读 · 1 评论 -
常量(StringTable)池
二进制字节码的组成:类的基本信息(构造方法,接口的定义)、常量池、静态变量、类的方法定义(包含了虚拟机指令)通过反编译来查看类的信息(框内的是真正编译执行的内容,#号的内容需要在常量池中查找)原创 2023-09-24 16:35:00 · 75 阅读 · 1 评论 -
== 和 equals和hashCode
==” 是运算符。原创 2023-09-24 16:43:02 · 22 阅读 · 1 评论 -
深拷贝和浅拷贝
拷贝(kǎo bèi)是一个汉语外来词汇,意思是复制在Java中拷贝对象其实是指复制一个与原对象一样的新对象出来,但是在Java中 赋值 = 是复制对象引用,如果我们想要得到一个对象的副本,使用赋值操作是无法达到目的的。显然,a1==a2返回为true,a1和a2指向的是同一个引用并且对对象a2的属性值进行修改后,a1的属性值也跟着改变,因此这不是拷贝,要实现拷贝,需要用到Object对象的clone()方法,实现对对象中各个属性的复制,但它的可见范围是protected的。原创 2023-09-24 16:39:25 · 25 阅读 · 1 评论 -
数组到底是不是对象?
对象是类的一个实例,有状态和行为Java对象:软件的对象也有行为和状态软件对象的状态称之为属性方法操作对象内部状态的改变,对象的相互调用也是通过方法来完成而java中的数组具有java中其他对象的一些基本特点。比如封装了一些数据,可以访问属性,也可以调用方法。因此,数组是对象。原创 2023-09-24 16:24:54 · 286 阅读 · 1 评论 -
new String(“123“)创建了几个对象?
先看结果图:有可能新创建了一个,也有可能新创建了两个。原创 2023-09-24 16:28:41 · 113 阅读 · 1 评论 -
String为什么不可变
在面向对象及函数编程语言中,不可变对象(英语:Immutable object)是一种对象,在被创造之后,它的状态就不可以被改变。至于状态可以被改变的对象,则被称为可变对象(英语:mutable object)。–来自百度百科。原创 2023-09-24 16:27:25 · 36 阅读 · 1 评论