
java基础
ThunderWay
北京工业大学计算机研究生就读
展开
-
hashcode与equals
1. hashcode()的作用是获取哈希码返回一个int的整数,哈希码的作用是确定对象在哈希表中的位置。当对象加入hashset时,HashSet会先计算对象的hashcode,判断该位置上有无相同的hashcode,如果有会再调用equals方法检查hashcode相同的对象是否为同一个对象;如果该位置上没有相同的hashcode,则说明该对象没有重复,可以加入hashset。2. 如果两个对象hashcode相等,两个对象不一定相等;如果两个对象相等,hashcode一定相等,且equals方法返原创 2020-10-08 19:15:34 · 132 阅读 · 0 评论 -
关于final关键字的总结
final关键字主要用在3个地方:变量,类,方法变量:final修饰是成员变量,如果是基本数据类型,在赋初值后不能改变;如果是引用数据类型,在初始化之后不能指向另一个对象。类:当用final修饰一个类的时候,说明这个类是不能被继承,且类里的所有方法被隐式的指定为final方法。方法:final修饰方法,任何类继承该类不能修改这个方法。所有的private方法都隐式的被指定为final...原创 2020-10-08 16:44:38 · 184 阅读 · 0 评论 -
深拷贝vs浅拷贝
1. 浅拷贝:对基本的数据类型进行值传递,对引用数据类型只是增加了一个指向同一个堆里对象的指针,这是浅拷贝。2. 深拷贝:对基本的数据类型进行值传递,对引用数据类型,创建一个新的对象,并复制其内容,这是深拷贝。...原创 2020-10-08 16:30:24 · 88 阅读 · 0 评论 -
java中抽象类和接口的区别
首先,含有抽象方法的类叫做抽象类,用关键字abstract修饰,抽象类中的方法只定义,没有实现,如果子类要继承抽象类,必须实现抽象类中的方法,否则子类还是抽象类,抽象类前是public或者protected,不能是private,否则子类无法继承,抽象类无法创建对象。其次,接口是特殊的抽象类,里面的方法全部是抽象方法,前面是public abstract,不能是private或者是protec...原创 2019-10-13 21:41:42 · 112 阅读 · 0 评论 -
java中序列化如果有些字段不想进行序列化怎么办
对于不想被序列化的变量,用transient关键字修饰。transient关键字的作用就是:阻止用这个关键字修饰的不想被序列化的变量序列化;transient只能修饰变量,不能修饰类和方法。原创 2020-10-08 16:09:08 · 1270 阅读 · 0 评论 -
成员变量和局部变量的区别
1. 从语法形式上:成员变量属于类,局部变量属于方法或者方法的参数;成员变量可以被public,protected,private和static修饰,局部变量不可以;但是二者均可以被final关键字修饰。2.从变量在内存的存储方式上:如果成员变量是static修饰,那么这个成员变量属于类,如果没有static修饰,那么这个成员变量属于实例;对象存于堆内存,如果局部变量为基本数据类型,那么存储在栈内存,如果为引用数据类型,那存放的是指向堆内存对象的引用或者指向常量池中的地址。3. 从变量在内存中的生存原创 2020-10-08 11:58:21 · 641 阅读 · 0 评论 -
在一个静态方法里调用一个非静态成员为什么是非法的
因为静态方法可以不通过对象进行调用,可以直接类名.静态方法,所以静态方法里不可以直接调用或访问费静态成员变量。原创 2020-10-08 10:57:20 · 364 阅读 · 0 评论 -
String、StringBuilder、StringBuffer的区别?为什么说String是不可变的
1. String类中使用final关键字修饰字符数组,private final char[] value,所以String类是不可变的。2. StringBuffer和StringBuilder都是继承AbstractStringBuilder父类,从线程安全性上来说StringBuffer的方法有同步锁,是线程安全的,StringBuilder不是线程安全的。3. 从性能上来说StringBuilder比StringBuffer更快点。总结:少量数据用String,单线程下大量数据用Str原创 2020-10-08 10:54:41 · 204 阅读 · 0 评论