java学习笔记(三)

注意现在开始你已经进入了java世界,现在与你打交道的几乎都是对象,当然还有一部分是原生类型。现在你要记住一个很严肃的问题Class不是对象!。比如Integer这个东西,你要记住这玩意不是一个原生对象int,它更不是一个对象!。你可以理解他就是一个包裹在int外的多功能mobile-suit(如果你不懂得这个单词的意思,那么你可以考虑去看看高达系列卡通,我的提议应该不坏!)。Integer他提供了一系列函数来帮助int这个原生类型在java的对象世界中更好的生存,它是一个Class


题外话:

类似的mobile-suit你还能看到LongFloat等,你能够用到的频率最高的一个函数应该就是parseInt()。这个函数将一个字符串转换成一个对应的原生类型。


一个对象是什么?Class可以说是一个模板,你把它当作一个人的总称。每一个人拥有着类似的结构(这个比喻有些问题!),因为他们都是这个人这个类属之下,但是他们有着不用的细节。一个对象是可以拥有自己的状态,就像每一个人都是不一样的。


静态变量:

你的类属:人

所有的人被问到的时候都会这么说(或许有人不想承认……)

一个实例变量:

姓名:张三

每个人都有自己的名字,这是不同的。


静态函数:

你的类属? 人

实例函数:

你的姓名? 张三


说道了Integer.parseInt()我们就不得不说一下静态函数的问题。这个调用就是一个简单的静态函数的调用。一个静态的函数可以在不实例化具体的Class的时候就可以调用的,我们没有实例化Integer,但是我们能使用它的某些不涉及到对象状态的方法。或许你们都看过一些面试题,那里面充斥了很多关于静态方法和非静态方法的相互调用问题。我想现在你应该明白了为什么一个静态方法调用非静态方法会出错了,因为静态方法可以不产生对象实例就可以使用,而非静态方法必须由具体的实例来调用。


如果你还是没有理解,那么我觉得你有必要去好好读书,我推荐过一些书籍,应该都能很好的解决你的疑惑。


下面就静态方法和非静态方法进一步说一些事情。实际工作中你要决定一个方法是否要写成静态方法其实很简单,静态方法中不包含一个对象的状态信息,或者说你可以理解它就是一个处理必要工作的过程。静态方法一旦要涉及到特殊的私有数据就力不从心了,它不能访问一个实例的私有数据,因为调用的时候没有生成任何的实例。如果你要通过一个方法来改变一个实例的某些状态,那么你要使用非静态方法。


项目中问什么要把工具方法写成静态的?因为实例化一个对象的代价对于虚拟机来说是巨大的。这个是另外一本书里教会我的,如果没有绝对的必要,那么我们不要去实例化一个对象。重建对象的代价大的我们没法估计,所以静态的工具方法是最好的选择。这也是为什么我们在过多的字符串操作的时候要使用StringBuffer,不是因为它长得好看,也不是它使用方便,而是它没有那么多的创建代价。


说到了创建对象,我们可可来说说静态变量的问题。程序中应该更多的使用静态变量来定义那些频繁出现在程序中的字符串,比如一个SQL语句中常用的SELECT我们最好就是定义一个常量,这样能够让你的虚拟机不用为了创建String对象而疲于奔命。一个静态变量的最大好处就是不用频繁的去生成实例,它可以在任何你想要的地方使用,当然定义了很多的这玩意也会带来灾难。你在定义的时候要给他一个明确的变量名(最好是大写的,这样毕竟是java的规范),绝对不要随处定义他们。


本章还需要一些编辑,下一篇我们研究一下现在国内使用最最普及的一个东西——Struts。这东西可以说是老少皆宜的玩意,虽然我本人呢对于它没有什么好感,但是鉴于它在国内的主导地位我们不得不将它列为必修的东西……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值