java编程思想小记(1)

本文介绍了Java编程的基础概念,特别是面向对象编程(OOP)的基本原理。文章解释了对象的特性,包括状态、行为和标识,并探讨了类的设计、继承、多态及垃圾回收等核心主题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       在学习java方面刚开始有些懵,上网上查找之后知道了几本比较经典的有关基础的书,不管你是不是初学者都可以拿来研读,而且是那种可以反复拿出来回味的经典之作,《JAVA编程思想》就是其中的一本。当然也有人说这本书不适合初学者,其中涉及到了一些基础知识,有C语言尤其是有C++基础的,可能会相对容易一点。

       在拿到书的时候说实话还是有些头大的,800多页的书,说实话心里有些发憷,但是既然选择继续在java这条路上发展下去还是坚定了决心翻开了这本书。

第一章内容

JAVA编程万物皆为对象,这就是java编程思想开门见山的一句话。本章标题为对象导论,主要引入了对象的概念,引入了OOP(Object-oriented Programming,OOP)即面向对象的程序设计,对于有java基础的人来说看起来还是很轻松的,简单来说这章就是介绍背景和补充性的材料.


关于对象

抽象过程:   (1)万物皆为对象;

                    (2)程序是对象的集合,它们通过发送消息来告知彼此要做的;

                    (3)每个对象都有自己的由其他对象所构成的存储;

                    (4)每个对象都拥有其类型;

                    (5)某一特定类型的所有对象都可以接收同样的消息。

简洁的对象描述:对象具有状态、行为和标识。这就是说每个对象都拥有内部数据,它们给出了该对象的状态和方法,并且每一个对象都可以唯一的与其他对象区分开来,即一个对象在内存中都有一个唯一的地址。每一个对象都提供服务,可能描述某个抽象的事物,也可能是为其他对象提供某些操作。

java对于类的内部设定边界:public、private、protected。这三个是访问指定词,决定了类能被谁所使用。public是没有限定的,谁都可以使用,private表示私有的,只有创建者和类型内的方法能够使用。protected与private作用相当,差别在于继承可以访问基类的protected成员。当然java还有默认的访问权限,即没有指定边界,此时限定为包访问权限,包内可以访问,包外就如指定了private一样不能访问。

创建一个完整的类需要敏锐的洞察力,而且一个类可以置于新的类中成为其成员变量,这被称为组合,如果组合是动态发生的就常常被称为聚合,组合经常被视为“has-a”(拥有)关系。在创建了一个类之后,可能会遇到与之相似的类,我们不想再创建一个新的类,其中包含了上一个与之相似的类中的所有的东西,这就需要用到继承了。以一个类为基础,创建副本然后通过修改和添加副本来得到新的类,这样就好多了,这其中就体现了代码的复用性,这会使得类看起来不是那么臃肿。在类的继承中源类(基类、父类、超类)发生变动,被修改的“副本”(子类、导出类、继承类)也会发生变化。

在继承中就伴随了多态。多个子类继承了同一个父类,创建子类的实现然后调用方法(可能是被重写过的)。

在java中所有的类都继承自单一的基类 即Object类。Object是所有类的超类,这就是单根继承。单根继承结构保证所有对象都具备某些功能,单根继承结构使垃圾回收器的实现变得容易的多,而垃圾回收器正是Java相对C++的重要改进之一。

有关对象的创建,为了追求最大的执行速度,对象的存储空间和生命周期可以在编写程序时确定,这可以通过将对象置于堆栈(它们有时被称为自动变量(automatic variable)或限域变量(scoped variable))或静态存储区域来实现,这就是第一种方式。第二种方式就是在被称为堆(heap)的内存池中动态的创建对象。动态的方式有这样一个一般性的逻辑假设:对象趋向于变得复杂,所以查找和释放存储空间的开销不会对对象的创建造成重大的冲击。动态方式所带来的更大的灵活性正是解决一般化编程的要点所在。Java完全采用了动态内存分配的方式(基本类型是特例)。

有关对象的生命周期,Java提供了被称为“垃圾回收器”的机制,它可以自动的发现对象何时不再被使用,然后直接销毁它。垃圾回收器很有用,它减少了所必须考虑的议题和必须编写的代码,也提供了更高的保障,可以避免暗藏的内存泄漏问题。Java的垃圾回收器被设计用来处理内存释放问题,垃圾回收器“知道”对象何时不再被使用,并自动释放对象所占用的内存。有关垃圾回收器具体的运行,其中涉及到了JVM即java虚拟机的问题。

分数阶傅里叶变换(Fractional Fourier Transform, FRFT)是对传统傅里叶变换的拓展,它通过非整数阶的变换方式,能够更有效地处理非线性信号以及涉及时频局部化的问题。在信号处理领域,FRFT尤其适用于分析非平稳信号,例如在雷达、声纳和通信系统中,对线性调频(Linear Frequency Modulation, LFM)信号的分析具有显著优势。LFM信号是一种频率随时间线性变化的信号,因其具有宽频带和良好的时频分辨率,被广泛应用于雷达和通信系统。FRFT能够更精准地捕捉LFM信号的时间和频率信息,相比普通傅里叶变换,其性能更为出色。 MATLAB是一种强大的数值计算和科学计算工具,拥有丰富的函数库和用户友好的界面。在MATLAB中实现FRFT,通常需要编写自定义函数或利用信号处理工具箱中的相关函数。例如,一个名为“frft”的文件可能是用于执行分数阶傅里叶变换的MATLAB脚本或函数,并展示其在信号处理中的应用。FRFT的正确性验证通常通过对比变换前后信号的特性来完成,比如评估信号的重构质量、信噪比等。具体而言,可以通过计算原始信号与经过FRFT处理后的信号之间的相似度,或者对比LFM信号的关键参数(如初始频率、扫频率和持续时间)是否在变换后得到准确恢复。 在MATLAB代码实现中,通常包含以下步骤:首先,生成LFM信号模型,设定其初始频率、扫频率、持续时间和采样率等参数;其次,利用自定义的frft函数对LFM信号进行分数阶傅里叶变换;接着,使用MATLAB的可视化工具(如plot或imagesc)展示原始信号的时域和频域表示,以及FRFT后的结果,以便直观对比;最后,通过计算均方误差、峰值信噪比等指标来评估FRFT的性能。深入理解FRFT的数学原理并结合MATLAB编程技巧,可以实现对LFM信号的有效分析和处理。这个代码示例不仅展示了理论知识在
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值