java
菊地尤里
这个作者很懒,什么都没留下…
展开
-
类名直接调用与对象引用的区别
在工厂类里面工厂方法为什么是静态的,要靠类名来调用?如:public class Factory{public static getInstance(){ return XXX();}}客户端调用:Factory.getInstance();而public class Factory{public XXX getInstance(){ return XXX();}}客户转载 2017-12-06 17:23:32 · 3071 阅读 · 0 评论 -
JAVA 两个对象不同为什么他们的hashcode有可能相同
hashCode是所有java对象的固有方法,如果不重载的话,返回的实际上是该对象在jvm的堆上的内存地址,而不同对象的内存地址肯定不同,所以这个hashCode也就肯定不同了。如果重载了的话,由于采用的算法的问题,有可能导致两个不同对象的hashCode相同。而且,还需要注意一下两点:1)hashCode和equals两个方法是有语义关联的,它们需要满足:A.equals(B)==...原创 2018-04-04 11:01:59 · 26724 阅读 · 21 评论 -
反射
反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码))一、反射的概述JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。要想解剖一个类,必须先要获取到该类的字节码文件对象。而解...转载 2018-05-25 14:16:22 · 149 阅读 · 0 评论 -
方法隐藏和方法覆盖的区别和用法
讲隐藏和覆盖之前先看两个概念:静态类型和动态类型。任何一个引用变量都有两个类型:一个叫静态类型,也就是定义该引用变量的类型;另一个叫动态类型,也就是该引用实际指向的对象类型。比如对于两个类A和类B,有:A a=new B();那么,引用a的静态类型就是A,动态类型就是B。java中引用的静态类型在编译的时候就可以确认,但是编译器无法得知这个引用的动态类型;只有当程序运行时,通过RTTI就可以检查出...转载 2018-05-21 21:04:11 · 2807 阅读 · 2 评论 -
分清楚重载,重写,覆写
重载-Override函数的方法参数个数或类型不一致,称为方法的重载。从含义上说,只要求参数的个数或参数的类型不一致就说两个函数是重载函数,而至于返回值是否一样,没关系。同时,重载可以发生在同一个类中也可以发生在继承关系中。class A{}class B extends A{ public void fun(String data1) { Sy...转载 2018-05-21 21:37:57 · 542 阅读 · 0 评论 -
编码和字符集
一、编码历史与区别 一直对字符的各种编码方式懵懵懂懂,什么ANSI UNICODE UTF-8 GB2312 GBK DBCS UCS……是不是看的很晕,假如您细细的阅读本文你一定可以清晰的理解他们。Let's go! 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为"字节"。 再后来,他们...转载 2018-05-23 20:43:35 · 366 阅读 · 0 评论 -
try(){}catch{}中代码异常,资源关闭
1.try(){}catch(){}()中的代码一般放的是对资源的申请,如果{}中的代码出项了异常,()中的资源就会被关闭举个栗子:private static void customBufferStreamCopy(File source, File target) { try (InputStream fis = new FileInputStream(source);...原创 2019-03-26 18:19:05 · 346 阅读 · 0 评论