TIJ学习总结(1)- Java基础语法 (2)

   对象之间比较是否相同需要使用 equals() 方法;对象之间如果使用“==”操作符比较,实际比较的是两个对象的引用地址

7. 算术运算中,表达式中出现的最大数据类型决定了表达式最终结果的数据类型(比如:一个float值与一个double值相乘,结果值是double类型);

   char / byte/ short 中任意一个或一个以上进行算术运算(如 ’a’+’b’ ),都会获得一个 int 型的结果;

   从较大范围的类型向较小范围的类型转换时,可能引发某些信息的丢失。

 

 

三:Java中对象的四种引用类型

1. StrongReference -- 强引用

clip_image001

强引用是最普遍的引用,垃圾回收器不会回收强引用的对象;当内存空间不足时,JVM 宁愿抛出 OutOfMemoryError 也不会回收强引用对象以释放部分内存空间;

强引用对象 o 不使用时可以通过如下方式弱化引用:

clip_image002

(现在的JVM垃圾回收机制其实已经足够智能,不必特意在o无用时将其手动置为null)

 

2. SoftReference -- 软引用

clip_image001[4]

如果一个对象只具有软引用,则:

当内存空间足够时,垃圾回收器不会回收该对象;

当内存空间不足时,垃圾回收器就回收该对象;

使用场景:软引用可以用来实现内存敏感的高速缓存:

例如:浏览器中的后退按钮按下时,之前的网页内容是应该重新获取还是从缓存中取出呢?

如果一个网页在浏览结束时就进行内容的回收,则每次按后退按钮时都要重新构建之前的页面内容;如果将浏览过的网页都存储在内存(缓存)中,会造成大量的资源浪费;这时候就可以考虑使用软引用来指向过去浏览过的网页内容。

 

3. WeakReference -- 弱引用

clip_image001[6]

弱引用与软引用区别:只具有弱引用的对象拥有更短的生命周期;当垃圾回收器扫描到只具有弱引用的对象时,无论当前内存空间是否足够,都会回收它;

使用场景:一个对象只是偶尔使用,希望在使用时能随时获取,但也不想影响对该对象的垃圾收集,则可以考虑使用弱引用来指向该对象。

 

4. PhantomReference -- 虚引用

虚引用不会决定对象的生命周期,如果一个对象仅仅持有虚引用,那它就像没有任何引用一样,随时可能被垃圾收集器回收;

虚引用必须和引用队列联合使用,主要用来跟踪对象被垃圾收集器回收的活动过程。

 

5. 对比

StrongReference(强引用) > SoftReference(软引用) > WeakReference(弱引用) > PhantomReference(虚引用)

clip_image001[8]

 

 

四:关于方法的一些细节

1. 重载方法与重写方法

a)重载方法(Overload)

     多用于同一个类中;

重载方法的方法名完全相同参数列表不同

返回值不能参与区分重载方法

b)重写方法(Overwrite)

     多用于继承父类的子类或接口实现类中;

重写方法中,子类的方法名、参数列表、返回值、访问修饰符应该与父类中的完全一致

2. 在没有为类提供构造器的情况下,编译器会自动为该类添加一个默认构造器;但是一旦为类指定了构造器,则编译器就不会再自动添加默认构造器了。

3. 方法的方法名参数列表组合起来作为“方法的特征签名”,唯一的标识出某个方法;

4. static 的域或方法不跟类的对象绑定,可以通过类名或方法名直接调用(不能在 static 方法中调用非静态方法);

    非static 的域或方法必须通过类的对象来调用;

    static 关键字不能用于局部变量。

5. 在方法体的传入参数中:基本数据类型在传递时是值传递(传递原值的拷贝值),对象在传递时是引用传递

6. 方法体内的局部变量存储在方法栈中,类的成员变量存储在堆中。

7. 可变参数列表

语法格式:MethodName(类型… 参数名称)

使用示例:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpyxsd.html