java语言读后感_Think in Java 读后感(1)

今天呢 利用闲余时间读了Java编程思维里的前三章,基本上是介绍Java中的各种基础知识,自己接触开发这一块也接近一年了。再会回过头看基础知识的时候,也有些收获。

1 对象的finalize()方法

和java的内存回收机制有关系,当一个对象被回收的时候,会调用这个对象的finalize()方法,但是我们一般不用重写这个方法,除非你有特殊需求的时候。经过查资料得知,比如在JNI或者与C++交互的时候,由于C语言和C++的特点,垃圾回收机制不能正确的回收通过C或者C++new出来的内存空间,这个时候,就需要手动去回收了。个人觉得,这个方法可以用来在这个对象被销毁的时候,做一些数据的存留或者扫尾工作。另外,学习到一个和System.gc()作用的相同的方法,System.runFinalize();这个方法的作用和System.gc()的作用是一样的,通知内存回收机制注意回收这块内存,但是只能是通知作用,具体什么时候回收跟java内存回收机制的算法有关。

2 static关键字。

这个平时就用的比较多了,static 相信每个接触过java的都对这个关键字很熟悉,毕竟你保存常量,单例模式,各种各种,都会用到static关键字。

下面是static的一些定义:

static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念

被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。

用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的对象时,不生成static变量的副本,而是类的所有实例共享同一个static变量。

static变量前可以有private修饰,表示这个变量可以在类的静态代码块中,或者类的其他静态成员方法中使用(当然也可以在非静态成员方法中使用--废话),但是不能在其他类中通过类名来直接引用,这一点很重要。实际上你需要搞明白,private是访问权限限定,static表示不要实例化就可以使用,这样就容易理解多了。

static前面加上其它访问权限关键字的效果也以此类推.。static修饰的成员变量和成员方法习惯上称为静态变量和静态方法,可以直接通过类名来访问

静态方法在调用的时候,不用加载类的实例就可以直接用。这就是为什么常用的main()方法是static关键字来修饰的了。

下面记下之前面试时候被问到单例模式的懒汉和饿汉模式:

1 懒汉模式(类加载时不初始化)

package Singleton;

public class LazySingleton {

//懒汉式单例模式

//比较懒,在类加载时,不创建实例,因此类加载速度快,但运行时获取对象的速度慢

private static LazySingleton intance = null;//静态私用成员,没有初始化

private LazySingleton()

{

//私有构造函数

}

public static synchronized LazySingleton getInstance() //静态,同步,公开访问点

{

if(intance == null)

{

intance = new LazySingleton();

}

return intance;

}

}

2 饿汉式单例模式(在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快)

package Singleton;

public class EagerSingleton {

//饿汉单例模式

//在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快

private static EagerSingleton instance = new EagerSingleton();//静态私有成员,已初始化

private EagerSingleton()

{

//私有构造函数

}

public static EagerSingleton getInstance() //静态,不用同步(类加载时已初始化,不会有多线程的问题)

{

return instance;

}

}

以上就是今天看书所得,明天继续看,加油咯~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值