⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 9917.txt

📁 关于编程技术技巧的文章
💻 TXT
📖 第 1 页 / 共 4 页
字号:

事实上,constant和typedef这两条语句包含了#define语句的作用。现在,结构和
联合已经被Java的类所代替。删除这些特性的原因是:由于其希望维持与C语言的
向后兼容性,C ++的语言规范包含了大量冗余。比如,类实际上就已经包括了结构
和联合的作用,因此这两种数据结构完全可以取消。关于#define语句,Java语言规
范的制订者认为:尽管该语句的出发点是为了增强程序的可读性,但实际效果却恰
恰相反,它常常导致难读的代码,故应该予以取消。Java不再支持独立函数,因此任
何函数都必须封装到某个类中。由于人们普遍认为, C++所用的超类是非常不稳定
的,因此Java抛弃了C++中的多继承并代之以接口。Java的接口指的是,在别的类看
来一个类所能实现的方法。它所显示的只是一个类的方法或常量和变量 ,而不是
这个类的全部结构。 

最后,Java还取消了C++中的GOTO语句、操作符重载、自动类型转换及指针数据类
型。 GOTO语句引起的争议已经有很多年了,可一直阴魂不散,这跟某些程序员对该
语句一直情有独钟有关。C++仍然支持数据类型的自动转换,但Java要求编程人员
显式实现数据类型之间的转换。自动数据类型转换使得两个数据类型互不兼容的
变量可以相互赋值,而不需要给出显式说明。这有时会导致一些问题,其中最常见
的是精确度损失。比方说,如果把一个带符号的32位整数赋给一个无符号整数,则
所有的结果均为正数。Java的设计者们认为这很容易引起程序错误,从而决定不支
持这种转换方式。 

某些C和C++程序员也许会觉得遗憾,因为Java不再支持他们非常愿意使用的指针类
型。但我们都知道,指针是调试程序时使人最感头痛的地方之一。Java的设计者们
认为,由于Ja va取消结构类型并且把数组封装到了对象里面,指针已经不再有用武
之地。但有些C和C++高级编程人员可能仍然需要一段时间才能走出指针的阴影。
因为指针的用法尽管很难掌握,可一旦掌握了其使用技巧,就会让人感到它的功能
的确非常强大。作为一种面向分布式计算环境的编程语言,Java放弃对指针的支持
是非常顺理成章的,因为只有这样,才可能产生一种稳可能产生一种稳定、高效而
且安全的代码。 

3. 内存管理和线索 

Java语言带来的好处还在于其自动内存管理和线索控制。在C和C++中,内存必须用
free、 malloc和其它许多内存管理标准库管理。因此,系统要了解何时分配、释
放内存并且跟踪所有的内存使用情况是非常困难的。如果要在C和C++中实现线索
功能,必须使用一个可对线索进行各种控制的类库。而在Java中,尽管线索仍然需
要类的支持,但系统却在语言级包括了线索同步机制。 

Java具有内嵌的内存管理程序。一旦创建了一个对象,Java的运行系统就开始跟踪
这个对象,直到不再需要跟踪该对象的所有引用为止。当某个对象不存在相应的引
用时,Java把这个对象放到一个用于垃圾搜集的栈内。为在性能损失最小的情况下
提供自动垃圾搜集机制,这个垃圾搜集程序将在后台或作为低优先级线索运行。这
样,Java的垃圾搜集软件将在前台线索的执行期间抽空执行,或者在系统显式提出
需要使用那些被已经死亡的类所占用的内存空间时执行。 

从后台内存管理程序可以很明显地看出,多线索的确可以增强Java环境的相对性能。
鉴于多线索的重要性,Java在语言级提供了线索同步机制,使多线索成为一种内嵌
特性。Java 语言支持针对方法的同步修饰符,并通过该修饰符来指明线索的运行
顺序。此外,Java还能控制方法与实例变量的相互作用机制,确保了各方法之间在
修改数据时不会产生冲突。 

Java的内存管理和线索支持还具有使Java语言简单化的作用。正是由于把内存管
理任务嵌入到了Java环境,Java语言才可以取消指针数据类型、malloc和free函
数。这样,程序员就可以把更多的时间化在真正的编程工作上,而不是去跟踪调试
与内存使用相关的程序错误。正是由于其多线索机制,Java才可以为一个可移植
的解释系统提供较高的性能。 

Java语言非常适合于异构网络系统(尤其是Internet)上的高性能、分布式计算环
境。虽然个人机系统未必可以看作是高性能的,但目前的个人机已经具有相当好
的性能。再者, 目前几乎所有操作系统均提供了各种高级特性,如内嵌的联网功
能和真正的多任务、多线索支持等。然而在几年前,这些功能还只有昂贵的UNIX
工作站才能提供。有了这些软硬件基础 ,加上Java的简单易学及面向对象特性,
未来的程序员将可以在联入网络的个人机上开发适合于在各种硬件和软件平台上
发布的高级"内容"。 

二、Java开发工具集 

Java不仅提供了一个功能丰富的语言和运行环境,而且还提供了一个Java开发工
具集( Java Developers' Kits,简称JDK)。编程人员和最终用户可以利用这些工
具来开发或调用 Java内容。JDK包括如下工具: 

·Javac:Java语言编译器,输出结果为Java字节码。 

·Java:Java字节码解释器。 

·Javap Disassembler:Java字节码分解程序,本程序返回Java程序的成员变量及
方法等信息。 

·Javaprof:资源分析工具,用于分析Java程序在运行过程都调用了哪些资源,包括
类和方法的调用次数和时间,以及各数据类型的内存使用情况等。 

·Javah:C代码处理工具 ,用于从Java类调用 C++代码。 

·Java Applet Viewer:小应用程序浏览工具,用于测试并运行Java小应用程序。 

·Java Debugger API:Java调试工具API。 

·Prototype Debugger:Java调试工具原型。 

Java开发环境还包括Java类库(包括I/O类库、用户界面类库、网络类库等)和
HotJava WWW浏览器。其中,HotJava浏览器提供了在WWW环境下运行Java代码的一
个运行系统,而且还为WWW开发人员提供了一个Java开发框架。Java解释器是面向
Java程序的一个独立的运行系统,它可以一种稳定、高性能方式运行那些独立于
平台的Java字节码,Java编译器则用于生成这些字节码。 

Java解释器和浏览器所包括的各种类库为Java程序员提供了很好的编程支持。利
用这些工具,开发人员可以开发Applet(小应用程序)、 Application(独立应用程
序)、 Protoc olHandler (WWW增强协议处理程序)及 Content Handler (内容处
理程序)。随着时间的推移,Java工具,无论是其数目还是功能都在不断发展,以后
的Java开发人员将能够以更快的速度开发出质量更高的程序。 

目前,Sun公司已经提供了基于各种硬件平台的Java开发工具版本。 

***********************************************************
***********************************************************

◆服务台◆


***********************************************************
***********************************************************

◆有问必答◆

★本期回答★

●030. mailto: yaozheng@kali.com.cn?subject=030
在下请教两个问题:
1. 在 DELPHI 4.0 中用 reportsmith 报表工具制作报表时存在如下
问题:即不管打印内容的多少,打印结束后,打印机总会走不少空白
纸,这样会造成很多不方便与浪费,请问有没有什么好方法可以控制
打印机在打印内容结束后不进行走纸,也就是说有多少内容就走多少
纸。(对针式打印机而言)
2. 用 reportsmith 报表工具制作出的报表能否转存为一个文本文件
或者是一个 EXCEL 文件,总之只要可以在 EXCEL 中编辑的格式即可! 
谢谢!盼望您的回复!szgstar@public.szptt.net.cn
答:
你为什么不将准备输出为报表的原文件格式化成文本文件输出呢?--allfornow

●033. mailto: yaozheng@kali.com.cn?subject=033
有没有直接显示 gif 文件的image构件,以及 TImagelist ?
E_mail: kexijiang@163.net
答:
A. 
You can use WebBrowser or WebBrowser_V1 component.
B.
如果用DELPHI,用RXLIB组件包,这里有  http://whf.soim.com

●034. mailto: yaozheng@kali.com.cn?subject=034
我想要一个文件列表的控件,和资源管理器一样的,并且能列出文件
来!我一直没找到这样的东西,哪位大虾能否指点一二?
toi@263.net
答:
A.
可以自己写一个。主要调用95的SHGet系列及ShlObj系列的函数,相关
的对外壳的操作。我以前曾经写过一个,不过,总死机。也没找出原
因来。欢迎我们互相交流!  阿蒙   Ameng@Genersoft.com 
B.
use TDriverComboBox,TDirectoryListBox,TFileListBox,
TPanel and TOleContainer component.

●035. mailto: yaozheng@kali.com.cn?subject=035
我想问几个问题,我们单位的c/s前台是powerbuilder,后台是oracle,
但在pb上输入汉字,提取出来的数据却变成乱码,请问为什么,并希望给
出解决方法,先行谢过  mathsprince@yahoo.com
答:
这看你用哪一种语言了,若是VB、Delphi、Borland C++ Builder,我不
信你找不到FileList之类的控件,若是VC,那可要编程支实现了!  CHBL

●036. mailto: yaozheng@kali.com.cn?subject=036
我用C++ Build POP3控件编了个邮件检测软件。我每30秒连到信箱。
在连接过程中如发生错误,就会弹出对话框。以后就不断出错。能不
能在程序中对POP3的返回结果进行处理??sunjm@Trigold.cngb.com
答:
void _fastcall TForm1:NMPOP31OnError(TObject *Sender)
{
    <your process produce>
}
void _fastcall TForm1:NMPOP31OnHostResolved(TObject *Sender)
{
....
}
void _fastcall TForm1:NMPOP31OnInvalidHost(TObject *Sender)
{
....
}

●037. mailto: yaozheng@kali.com.cn?subject=037
请问在 C ++ Builder 中如何实现物理删除数据表记录的功能
(即 Foxpro 中的 Pack())?zhi163@public.guangzhou.gd.cn
答:
Table1->Active=false;
Table1->Exclusive=true;
Table1->Active=true;
DBiPackTable(Table1->DBHandle,Table1->Handle,NULL,szDBASE,true);

●038. mailto: yaozheng@kali.com.cn?subject=038
如何把bitmap 文件(*.bmp)转换成 元文件(*.emf,*.wmf) ,最好是
用vb5,delphi3来实现!如有现成的工具,请告诉小弟,感谢!
E_mail: kexijiang@163.net
答:
You can try the TOleContainer Component.
	
●040. mailto: yaozheng@kali.com.cn?subject=040
我叫李洪辉,是一位电脑编程爱好者,我在使用Delphi 4编程时,
遇到一此问题,希望各位大侠不吝指教: 
1.在使用messagedlg函数,弹出一消息框,消息框上有‘OK’和
‘CANCEL’两个按钮,如何将弹出的消息框上的缺省按钮指定为
‘CANCEL’按钮。  kinlee@21cn.com
答:
A.
Borland C++:
    MessageBox(hwnd,Text,Title,MB_OKCANCEL|MB_DEFBUTTON2);
Borland C++ Builder or OWL:
    Application->MessageBox(Text,Title,MB_OKCANCEL|MB_DEFBUTTON2);
B.
改用messagebox. --allfornow

_____________________________________________________________

★本期问题★

041. mailto: yaozheng@kali.com.cn?subject=041
在vfp中有个函数adir()可把当前目录下的文件信息(名字,大小...)
放到一个数组中,请问在Delphi中如何实现类似功能? myspace@163.net

042. mailto: yaozheng@kali.com.cn?subject=042
我最近在用delphi4.0开发一个屏幕生成器过程中需使用控件的拖动功能,
但运行时只显示为控件设置的拖动图标而无法显示表示控件的大小矩形
框,请教诸位高手指教一二,小弟不胜感激。XSQ. ( emis@163.net )

043. mailto: yaozheng@kali.com.cn?subject=043
怎么实现这样的功能:一个picture上显示一张图,在上面乱画线
再擦去,而原图保持不变,即随擦随回显。  ccchome@21cn.net

044. mailto: yaozheng@kali.com.cn?subject=044
请问我想在自己编的程序中加一个可收发邮件的程序,发的程序找到一些
用winsock编的,但不知怎么加附件,收的没找到。那位高手能告知我怎么
加附件,怎么收邮件,最好是源代码,多谢了!!!  ccchome@21cn.net      

045. mailto: yaozheng@kali.com.cn?subject=045
在delphi下如何实现所见即所得的打印? nshosp@telekbird.com.cn

如果您有什么疑难问题,就请把问题发往 yaozheng@kali.com.cn
主题为“提问”,我会把问题放在杂志上的,希望编程高手们能
不吝赐教,也希望这个栏目能成为大家交流的场所。

***********************************************************
***********************************************************

◆编者的话◆


本刊已加入【CHINA-EZL】中国电子杂志联盟
联盟主页地址 http://china-ezl.yeah.net

如果您觉得这份刊物还不错的话,欢迎把它介绍给您的朋友.
不知道您看了这期刊物有什么想法或者是意见,欢迎向我提出来.
本人感激不尽,我的联系方法如下:

E-mail:yaozheng@kali.com.cn
ICQ#:  43260473
Homepage:http://biancheng.126.com 【163】
          http://person.zj.cninfo.net/~yao 【169】
◆欢迎光临我的主页,一个集编程、软件、鬼故事为主的个人主页         
                                                

◆《编程技术》订、退方法:

请到本刊主页进行订退工作 http://person.zj.cninfo.net/~yao

投稿:向yaozheng@kali.com.cn发封邮件     主题:投稿
提问:向yaozheng@kali.com.cn发封邮件     主题:提问

**************************THE END**************************

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -