0

0

菜鸟初学Java的备忘录(二)

黄舟

黄舟

发布时间:2016-12-20 13:46:54

|

1469人浏览过

|

来源于php中文网

原创


java的入门比我想象中的还要简单的多,目前为止我已经对java的基本语法结构有所了解.但我知道,深入的研究任何一门语言,都需要时间和实践的积累.

applet是java编写的可以在浏览器端运行的代码,它与应用程序的明显区别在于其执行方式的不同,应用程序如c程序是从main()主程序开始运行的,而applet则比较复杂.具体如何复杂我不太清楚,但我会慢慢清楚的。关于applet的一个重要性质是,我可以将html中的值作为参数传递给applet(通过getparameter()来获取参数值).这样,为了产生不同的效果,我们不需要重新编译java程序,而只需修改html的参数值即可.由于html的代码也可以动态生成的,因此我可以对网页的动态效果进行随心所欲的控制.

在applet的生命周期中有3个比较主要的方法:init,start,stop
init():负责applet的初始化,在整个applet的生命周期中,只执行一次该方法.和delphi中的oncreate()事件是一样的道理
start():系统在调用完init()后,将自动调用start(),并且每次当前窗口被重新激活时,都会调用该方法,和delphi中的onshow()事件是差不多的。
stop():用户离开applet所在页面后调用该方法。它使你在用户不注重applet的时候,停止一些资源的工作以免影响系统运行效率.并且我们不需要人为地去掉该方法.该方法同delphi中的onclose()事件差不多。

下面是一个applet版的helloworld
文件名:helloworld.java

import java.applet.applet;
import java.awt.graphics;

public class helloworld extends applet
{
string title;
public void init(){
title="hello world"; 


public void paint(graphics g)
{
g.drawstring(title,50,20);
}

}

我们可以看到,程序中是没有主函数的,那它如何运行呢.既然applet是在浏览器环境下运行的,那我们就需要在html文件中来调用它.需要使用的相关标签就是标签,我们首先建立html文件test.htm,源代码如下.


here comes my first applet:








将该文件和helloworld.java放在同一个目录中,然后编译helloworld.java之后,直接点击test.htm打开,就可以看到applet程序被启动了.或者使用appletviewer命令appletviewer test.htm也可以不需要浏览器直接运行该applet.

下面一个程序可以更好的帮助我们理解java applet在整个生命周期是如何调用上面我们介绍的几个方法的.

文件名:startstop.java
import java.awt.*;
import java.applet.*;

public class startstop extends applet
{
stringbuffer message;
public void init()
{
message=new stringbuffer("init done...");
}

public void start()
{
message.append("started...");
}

public void stop()
{
message.append("stopped...");
}

public void paint(graphics g)
{
g.drawstring(message.tostring(),150,50);
}

}

运行方法同上.(该程序可参考机械工业的)

同c语言不一样,使用java实现gui要轻松的多。由于是纯面向对象的语言,java的awt提供了各种界面元素供我们调用,如同delphi里面的组件一样。下面是java中的gui对象和delphi中的相应组件的对照表

java delphi

button tbutton
canvas tcanvas
checkbox tcheckbox
checkboxgroup tradiogroup
choice tcombobox
label tlabel
textfield tedit
textarea tmemo

然而,jdk并不是可视化的rad(rapid application development)开发工具,对于对象的使用不能如delphi那样只需要拖拉,移位就可以,而需要我们写调用代码.这就产生了一个麻烦,我怎么样才能够让元素按我的要求在界面中摆放呢?在元素不多时可以让java自动布局(layout),但是元素很多时,或者需要根据应用程序的要求来摆放元素时,就需要使用面板了(panel).面板在delphi里也有相应的组件(tpanel),但主要是用来对界面分割,进行粗略的布局的,精确的定位还需要开发人员手动调节.而java则只能用panel来定位,不能不说是个缺陷.也许是我还没学到吧。

入门之后,就该深入到对象的概念了。
假设在java中创建了一个叫做date的自定义数据类型如下
public class date{
int day;
int month;
int year;
}
那么对于以下三条声名变量的语句,java在为其分配内存的时候有什么不同吗?
(1) int i;
(2) date mybirth;
(3) date mybirth=new date();

很显然是有的,分配情况如下:
(1)java自动为整数i分配整形变量的内存,一般是两个字节
(2)java声明了一个date类的实例变量mybirth,并为其分配了存储空间,但这个存储空间里面存储的只是一个引用,或者说是一个地址,目前的地址里面什么都没有,那么我们就还不能使用这个实例变量,不能引用它的成员。
(3)java创建了一个date类的实例变量mybirth,并为其成员变量分配了足够的存储空间,最后返回对这个存储空间的一个引用,也就是返回这个存储空间的首地址,以后就通过mybirth,即这个首地址来访问这个实例变量里面的各个成员,如mybirth.day,mybirth.month,mybirth.year。
当我们声明一个基本数据类型的变量(如boolean, byte, short, char, int,long,flat,double)时,系统会自动为变量分配内存。但是假如声明了string或者用户自定义的变量时,系统不会立即为其分配内存.为什么会这样呢?
这是因为,string和用户自定义的变量都属于类的范畴.一个被声明为类的变量,已经不再是一个数据了,而变成对数据的一个引用,就是说mybirth可以看作是一个指向类的一个实例的指针,里面存放的是地址.这样的话就好理解了。
深入一点,既然类的实例变量值是指针,这个指针指向一个类的实例,那么我们显然可以定义多个名称不同的类的实例变量,而将它们全都指向一个实例.比如
university u=new university();//定义了一个类university的实例变量u,并为其分配对象的存储空间
university u2=u;//又定义了一个实例变量u2,将u的值赋给u2
那么显然u2和u除了名称不同外,其实是一回事,因为它们指向相同一个地址.

我觉得弄清楚这一点还是很重要的。这些数据结构的东西,是一个程序员需要知道的所以然. 

 以上就是菜鸟初学Java的备忘录(二)的内容,更多相关内容请关注PHP中文网(www.php.cn)! 

Mootion
Mootion

Mootion是一个革命性的3D动画创作平台,利用AI技术来简化和加速3D动画的制作过程。

下载

相关文章

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
C++ 高级模板编程与元编程
C++ 高级模板编程与元编程

本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。

10

2026.01.23

php远程文件教程合集
php远程文件教程合集

本专题整合了php远程文件相关教程,阅读专题下面的文章了解更多详细内容。

29

2026.01.22

PHP后端开发相关内容汇总
PHP后端开发相关内容汇总

本专题整合了PHP后端开发相关内容,阅读专题下面的文章了解更多详细内容。

21

2026.01.22

php会话教程合集
php会话教程合集

本专题整合了php会话教程相关合集,阅读专题下面的文章了解更多详细内容。

21

2026.01.22

宝塔PHP8.4相关教程汇总
宝塔PHP8.4相关教程汇总

本专题整合了宝塔PHP8.4相关教程,阅读专题下面的文章了解更多详细内容。

13

2026.01.22

PHP特殊符号教程合集
PHP特殊符号教程合集

本专题整合了PHP特殊符号相关处理方法,阅读专题下面的文章了解更多详细内容。

11

2026.01.22

PHP探针相关教程合集
PHP探针相关教程合集

本专题整合了PHP探针相关教程,阅读专题下面的文章了解更多详细内容。

8

2026.01.22

菜鸟裹裹入口以及教程汇总
菜鸟裹裹入口以及教程汇总

本专题整合了菜鸟裹裹入口地址及教程分享,阅读专题下面的文章了解更多详细内容。

55

2026.01.22

Golang 性能分析与pprof调优实战
Golang 性能分析与pprof调优实战

本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

9

2026.01.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 2.8万人学习

C# 教程
C# 教程

共94课时 | 7.4万人学习

Java 教程
Java 教程

共578课时 | 49.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号