admin 管理员组

文章数量: 887021


2023年12月25日发(作者:刚刚删除的文件怎么恢复)

期末复习资料

一、单选题

1、关于可以独立运行的Java应用程序,下列说法哪个是正确的( )?

A.无须main方法

C.可以有多个或0个main方法

2、Java创建一个对象使用的关键字是( )。

A.class B.interface C.new D.create

B.必须有两个main方法

D.必须有一个main方法

3、执行如下代码:int[]x=new int[5];,以下哪项说明是正确的?( )

A.x[4]为0 B.x[4]未定义 C.x[5]为0 D.x[0]为空

4、用关键字abstract定义的类( )。

A.可以被实例化

C.不能被继承

B.不能派生子类

D.只能被继承

5、假设对象x具有属性a,则访问该属性的方法是( )。

A.a.x B.a.x() C.x.a D.x.a()

6、下面是一个无修饰符的类:class Car{...},则类Car( )。

A.可被其他程序包中的类使用

B.仅能被本程序包中的类使用

C.不能被任何类使用

D.不能被其他类继承

7、构造方法在什么时候被调用( )?

A.类定义时

B.使用对象的属性时

C.使用对象的方法时

D.对象被创建时

8、下列选项不允许作为类及类成员访问控制符的是( )。

A.public B.private C.static D.protected

9、表达式(short)(8/9.2*5)的值类型为( )。

A.short B.int C.double D.float

10、类B和类C都不是抽象类,并且类B是类C的父类。下面声明对象x1的语句不正确的是( )。

A.B x1=new B()

C.C x1=new C()

B.B x1=new C()

D.C x1=new B()

11、下列关于Java内部类的叙述错误的是( )。

A.内嵌类型可以与外层类型同名

C.内部类中可以声明成员变量和成员方法

B.内部类可以声明为抽象类

D.内部类可以继承父类或实现接口

12、表达式:(a>b)?(c>d)?a:c:d,(其中a=5,b=9,c=1,d=9)的值为( )。

A.5 B.8 C.1 D.9

13、下列哪一个方法不是Applet生命周期相关的4个方法之一( )。

A.init() B.start() C.wait() D.stop()

14、下面的Java变量中,不属于复合类型的数据类型是( )。

A.类 B.字符型 C.数组型 D.接口

15、构造方法何时被调用( )。

A. 类定义时

C.创建对象时

B. 调用对象方法时

D.使用对象变量时

16、Java程序的执行过程中用到一套JDK工具,其中是指( )。

A.Java文档生成器 B.Java解释器 C.Java编译器 D.Java类分解器

17、定义一个名为“Car”的类,并且该类可被一个工程中的所有类访问,那么该类的正确声明应该为( )。

A.private class Car extends Object

C.class Car extends Object

B.public class Car

D.private class Car18、当方法遇到异常又不知如何处理时,下列哪种说法是正确的( )。

A.捕获异常 B.抛出异常 C.声明异常 D.嵌套异常19、Java中的哪个类提供了随机访问文件的功能( )。

A.RandomAccessFile类

C.RandomFile类

20、下列哪个Java标识符是合法的( )。

A.new B.class C.int D.const1

B.File类

D.AccessFile类21、Java程序源文件和经编译后的文件扩展名分别是( )。

A..class和.java B..java和.class C..class和.class D..java和.java

22、Java中为了区别重载多态中同名的不同方法,要求( )。

A.返回值类型相同

C.参数名称不同

23、下列语句中,( )是不能通过编译的语句。

A.double d=545.0; B.char a1="c";

B.采用不同的参数列表

D.以上三项都不对

C.int i=321; D.float f1=45.0f;24、Java中流的传递方式属于( )。

A.并行的 B.串行的 C.并行和串行

25、Java程序设计语言中,JDBC指的是( )。

A.Java程序与数据库连接的一种机制

B.Java程序与浏览器交互的一种机制

C.Java类库名称

D.Java类编译程序

26、Java程序设计语言中,关键字super的作用是( )。

A.用来访问父类被隐藏的成员变量

B.用来调用父类中被重载的方法

C.用来调用父类的构造方法

D.以上都是

27、下列java标识符的书写,错误的是( )。

A._sys B.$change C.user_name

28、Java中类实现的接口以及修饰不可以是( )。

A.public B.abstract C.final

29、下列特性中,不属于面向对象编程的三大特征的是( )。

A.封装 B.指针操作 C.多态

30、执行如下语句序列,k的值是( )。int j=4,k=20; for(int i=1;i!=j;i++)k=k-i;

A.10 B.24 C.12

31、Java源代码保存在扩展名为( )的文件中。

A..exe B..java C..class

32、调用ing(6,10)返回的子字符串是( )。

A."GHIJ" B."FGHI" C."HIJ"

33、关于while和do…while语句的说法,错误的是( )。

A.都是Java的循环语句

B.while语句至少迭代一次

C.do…while语句至少迭代一次

D.两者都可以迭代多次

34、int[]a;和int[]b=new int[0];关于这两个语句的说法错误的是( )。

D.以上都不对D.1_file

D.void

D.继承D.1D..javac

D."GHI"

A.a为空数组

B.b不是空数组

C.a是分配了0个元素的数组

D.b是分配了0个元素的数组

35、下列关于Java中方法的说明,错误的是( )。

A.方法调用必须指定方法名和实际参数

B.写在return后面的语句不会被执行

C.Java应用程序从main()方法开始执行

D.main()方法不能被其他方法调用,包括Java虚拟机

36、关于构造方法和方法的说法,错误的是( )。

A.构造方法可以创建类的对象

B.构造方法和方法都有返回值类型

C.构造方法使用new操作符调用

D.方法使用句点操作符调用

37、下列类中,属于包中的类的是( )。

A.Arrays类 B.Math类 C.Date类

38、下列关于方法修饰符的叙述,错误的是( )。

A.final修饰的方法在类中可以被重载

C.native修饰的方法表示方法体是以另一种程序设计语言实现的

B.private修饰的方法指该方法只能从其自身的类中访问

D.protected修饰的方法指该方法只能从其自身的类及其扩展中访问

39、下列哪一项不属于中的布局管理器类( )。

A.FlowLayout B.TableLayout C.BorderLayout

40、包定义了3种一般类型的集合,下列哪一个不是( )。

A.List B.Map C.Set

41、JApplet类的直接父类是( )。

A.Component类 B.Container类 C.Applet类

42、下列协议中哪一个不属于网络层协议( )。

A.DNS B.IP C.ICMP

43、下列属于文本数据流的是( )。

A.源代码程序 B.音频 C.图像

D.Calendar类

D.GridLayout

D.HashD.Panel类

D.IGMPD.视频

44、关于I/O类的说明,错误的是( )。

A.I/O类主要有4种

B.InputStream和Reader类用于输入

C.OutputStream和Writer类用于输出

D.Reader和Writer类用于处理二进制文件45、下列不属于JDBC提供的驱动程序的是( )。

A.本地库Java实现驱动程序

B.网络协议驱动程序

C.数据库协议驱动程序

D.硬盘协议驱动程序

46、下面哪种类是用简单数组来实现的( )。

A.HashSet B.LinkedHashSet C.TreeSet D.TreeMap

47、下列关于Applet小程序的叙述正确的是( )。

A.Applet可以独立运行

B.Applet小程序也必须有main()方法

C.Panel类是Applet类的子类

D.JApplet类是Applet类的子类

48、关于接口的说明,错误的是( )。

A.接口可以包含嵌套类和接口

B.接口可以作为一种数据类型来声明变量和参数

C.接口可以扩展一个类

D.接口无构造函数

49、下列哪一个特性不是进程和线程所共有的( )。

A.结构性 B.共享性 C.动态性 D.独立性50、下列不可以正确表示Java标识符的是( )。

A.$max

二、填空题

1、在子类中使用关键字 做前缀可调用被子类覆盖的父类中的方法。

2、创建包需要使用的关键字是 。

3、按照异常处理的不同可分为捕获异常、声明异常和 三种。

4、静态内嵌类型用于定义 的嵌套结构,实例内嵌类型用于定义 的嵌套结构。

B.abc C._min D.public

5、Java语言的各种数据类型之间提供两种转换,自动转换和 。

6、Java语言通过接口支持

继承,使类继承具有更灵活的扩展性。

7、

是类的实例。

8、方法的多态包括方法的重载和覆盖,其中方法重载是

时多态。

9、Applet类的直接父类是

10、Java图形用户界面的组件和事件由 和 包共同提供。

11、Java语言是从 语言发展而来的。

12、Java中的Object类包含在 包中。

13、运算符instanceof的运算结果为 类型。14、 是指一组有顺序、有起点和终点的字节集合,是对数据传输的总称或抽象。

15、IP协议和UDP协议均是

的协议。

16、Java的

机制是分隔方法声明与方法实现细节的最好机制。

17、

是可以嵌入Web页面的最小应用。

18、类中的一个成员被private修饰,则该成员能被

成员访问。

19、Java的字节码保存在扩展名为 的文件中。

20、 是定义标准Java类和接口的所有类库的集合。

21、构造函数使用 操作符来调用,方法使用 操作符来调用。

22、类的实例方法调用中的 参数,就是该方法被绑定到的对象。

23、 就是一个不含参数的构造函数。

24、声明为

的数组是通用数组。

25、在面向对象程序设计中,

指的是对象具有不同类的不同形式的对象的能力。

26、

接口表示了那些实例可以用compareTo()方法类做比较的类。

27、

类不能被实例化,因为它的某些方法没有可运行的代码体。

28、

是一组相互交错的接口和类,这些接口和类支撑列表、集和迭代器的创建和使用。

29、ArrayList类和HashSet类是用

来实现的。

30、Java的

是一个对象,它提供了对文件或其他资源的访问。

31、要成为可串行化的,类必须实现

接口。

32、

是一个对象,控制容器中的组件在容器中如何安排。

33、 把源代码程序翻译成机器语言程序, 是在需要时才分别翻译并运行源代码的每个句子。

34、 是一种软件系统,它可以翻译和运行Java字节码。

35、LinkedHashSet类和LinkedHashMap类是用 的结构来实现的。

36、 对象作为Java集合框架的一个成员,支撑Collection接口的所有方法。

37、二进制文件是按 位字节来访问的,文本文件是按 位字符来访问的。

38、在Java中,大多数的图形定义在

包和

包中。

39、

用于在窗口中显示文本。

40、构造函数可以用

关键字来调用其他的构造函数。

41、Java支持的UDP数据报通信需要

两个类配合。

42、

提供对文件的操作,其中通过流进行文件读写操作。

填空题答案

1.super 2.package 3.抛出异常 4.类型、对象 5.强制转换

6.多重 7.对象 8.编译 9.Panel类

10.、 11.C++ 12. 13.boolean 14.流

15.无连接 16.接口 17.Applet 18.当前类

19..class 20.Java API 21.new、句点 22.隐式 23.默认构造函数

24.Object[] 25.多态性 26.Comparable 27.抽象 28.Java集合框架

29.简单数组 30.数据流 31.izable 32.布局管理器

33.编译器、解释器 34.Java虚拟机 35.链式加索引 36.ArrayList 37.8、16

38.、 39. 40.this、 super

41.DatagramPacket、DatagramSocket 42.File类

三、简答题

1、简述Java程序的可移植性。(第一章,Java的特点)

与平台无关的特性使Java程序可以方便地被移植到网络上的不同机器。同时,Java的类库中也实现了与不同平台的接口,使这些类库可以移植。另外,Java编译器是由Java语言实现的,Java运行时系统由标准C实现,这使得Java系统本身也具有移植性。Java的这种可移植性也许是Java最诱人的特点。用Java开发成的系统其移植工作几乎为0,一般情况下只需对配置文件、批处理文件做相应的修改即可实现平滑移植。

2、抽象类和抽象方法有什么特点?(第三章,类的抽象性)

一个抽象类里面可以没有抽象方法,但含有抽象方法的类必定是抽象类;抽象类不能被实例化为对象,而只能作为其他类的超类,并且必须被继承;若某子类继承自一个抽象类,而该子类不是抽象类,则子类需

要覆盖的方式来实例化超类中的所有抽象方法。抽象方法可再与public、protected复合使用,但不能与final、private和static复合使用;抽象方法只有方法声明,不能有方法体。

3、什么是异常?为什么要进行异常处理?(第五章,异常处理)

异常,是指由于程序运行时发生错误,从而导致程序错误结束。

在进行程序设计时,错误的产生是不可避免的,没有异常处理代码的程序,在运行时发生错误则可能非正常结束,引起严重问题。因此,Java给程序员提供了处理运行时错误的功能,称为异常处理。

4、String类和StringBuffer类的主要区别是什么?(第四章,String字符串类)

String类:用于比较两个字符串,查找和抽取串中的字符或子串,字符串与其他类型的转换等,String类对象的内容一旦被初始化就不能再改变。StringBuffer类:用于内容可以改变的字符串,可以将其他各种类型的数据增加、插入到字符串中,也可以翻转字符串中原来的内容。

5、为什么用一个静态方法去调用一个非静态方法是不合法的?(第三章,静态成员和静态方法)

静态方法没有绑定到任何特定的对象上,它没有隐式参数。因此,在静态方法中,没有隐式对象供非静态方法可绑定。

6、什么是JDK?(第一章,Java的JDK)

缩写词JDK表示的是“Java Development Kit”。它描述的是从Sun Microsystems公司网站下载的用来开发Java应用程序的文件集。它包括了Java编译器和Java API。

7、对象的相等性与指向对象的引用的相等性之间有何不同?(第三章,类和对象)

如果两个对象具有相同的数值,那么这两个对象应该是相等的。如果两个引用指向的是同一对象,那么这两个引用是相等的。条件(p==q)可用于测试引用p和q的相等性,但不能测试它们所引用的对象的相等性。你可以声明一个方法equals()来测试对象的相等性。

8、空数组和长度为0的数组有何不同?并举例说明。(第四章,中数组类)

空数组就是还没有分配存储空间的数组。长度为0的数组就是分配了0个元素的数组。在下面两个声明中:

int [] a; //null

int [] b = new int[0]; //not null

a[]是一个空数组,b[]是一个长度为0的数组。空数组a[]没有长度,已分配存储空间的数组b[]的长度为0。

四、读程序题 (程序题考查的知识是Java程序设计的综合编程能力)

1、读下面程序,写出程序的运行结果

public class T1

{

public static void main(String[] args)

{

T1 a=new T1();

(8);

(1.2f);

}

void method(float i)

{

n("float:"+i);

}

void method(long i)

{

n("long:"+i);

}

}

答案

long:8

float:1.2

2、定义类A和类B如下:

class A

{

int a=1;

double d=2.0;

void show()

{

n("Class A:a="+a+"td="+d);

}

}

class B extends A

{

float a=3.0f;

String d="Java program";

void show()

{

();

n("Class B:a="+a+"td="+d);

}

}

若在应用程序的main()方法中有以下语句:

A a=new A(); ();

则输出结果如何?

答案

class A:a=1 d=2.0

3、下面程序段的运行结果是什么?

public class test

{

static String s1 = new String("Test");

static String s2 = new String("Test");

public static void main(String[] args)

{

if(s1==s2)

n("Same");

if((s2))

n("Equals");

}

}

答案

Equals

4、分析下面程序的运行结果。

public class Father {

void speak()

{

n("I am father!");

}

void speak(String s)

{

n("I like"+" "+s+".");

}

public static void main(String args[])

{

Father x=new Father();

();

("father");

}

}

答案

I am father!

I like father.

5、分析下面程序的运行结果。

public class Test {

static void throwProcess()

{

try

{

throw new NullPointerException("空指针异常");

}

catch(NullPointerException e)

{

n("n在 throwProcess 方法中捕获一个"+sage());

throw e;

}

}

public static void main(String args[])

{

try

{

throwProcess();

}

catch(NullPointerException e)

{

}

}

答案

在 throwProcess 方法中捕获一个空指针异常

再次捕获:interException: 空指针异常

6、读下面程序,写出程序的运行结果

public class test1

{

public static void main(String[] args)

{

}

n("再次捕获:"+e);

}

答案

}

String s1="ABC";

String s2="ABC";

n("s2==s1:"+(s2==s1));

String s3=new String("ABC");

n("s3==s2:"+(s3==s2));

String s4=new String("ABC");

n("s4==s3:"+(s4==s3));

s2==s1:true

s3==s2:false

s4==s3:false

7、读下面程序,写出程序的运行结果

public class test1

{

public static void main(String[] args)

{

String str="This is the Mississippi River.";

n(str);

int i=f('s');

n("The first index of 's' is "+i);

i=f('s',i+1);

n("The next index of 's' is "+i);

}

}

答案

This is the Mississippi River.

The first index of 's' is 3

The next index of 's' is 6

8、读下面程序,写出程序的运行结果

public class test1

{

public static void main(String[] args)

{

Object[] a=new Object[3];

a[0]=new ();

a[1]="ABCDE";

}

答案

print(a);

}

public static void print(Object[] a)

{

for (int i=0;i<;i++)

n(i+"."+a[i]);

n();

}

Oct 18 13:45:52 CST 2011 (此处显示运行程序的即时日期和时间)

9、下面算法的功能是判断指定字符串是否为标识符(此判断不含判断关键字功能),请对算法中横线部分进行补充。

public static boolean isidentifier(String str)

{

if(str!=null&&()>0)

{

char ch=(0);

if( )

{

for(int i=1;i<();i++)

{

ch=(i);

if( )

return false;

}

return true;

}

}

return false;

}

答案

ch>='A'&&ch<='Z'||ch>='a'&&ch<='z'||ch=='_'||ch=='$'

!(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z'||ch=='_'||ch=='$'||ch>='0'&&ch<='9')

10、下面算法的功能是判断k是否为素数,请对算法中横线部分进行补充。

static boolean isPrime(int k)

{

}

答案

if(k==2)

return true;

if( )

return false;

int j=(int)(k);

if(j%2==0)

j--;

while( )

j-=2;

return j<2;

k<2||k>2&&k%2==0

j>2&&k%j!=0

五、编程题 (程序题考查的知识是Java程序设计的综合编程能力)

1、求两个正整数的最大公约数。

public class A

{

public static void main(String args[])

{

int a=6,b=12,k=0;

do

{

k=a%b;

a=b;

b=k;

}while(k!=0);

n(a);

}

}

2、将一个字符串数组按字典序重新排列。

class Sort

{

public static void main(String args[])

{

String a[]={"boy","apple","Applet","girl","Hat"};

for(int i=0;i<-1;i++)

{

for(int j=i+1;j<;j++)

{

if(a[j].compareTo(a[i])<0)

{

String temp=a[i];

a[i]=a[j];

a[j]=temp;

}

}

}

for(int i=0;i<;i++)

{

(" "+a[i]);

}

}

}

3、将一个字符串中的小写字母变成大写字母,并将大写字母变成小写字母。

public class exchange

{

public static void main(String args[])

{

String s=new String("abcABC");

n(s);

char a[]=Array();

for(int i=0;i<;i++)

{

if(rCase(a[i]))

{a[i]=rCase(a[i]);

}

else if(rCase(a[i]))

{a[i]=rCase(a[i]);

}

}

s=new String(a);

n(s);

}

}

4、编写一个程序,用直接选择排序对数组a[]={2,1,10,5,3,7,9,6}进行从小到大的排序,并输出。

public class ArraySort

{

public static void main(String args[])

{

}

}

int array[]={2,1,10,5,3,7,9,6};

int i,j,k,t;

int m=;

for(i=0;i

{

k=i;

for(j=i+1;j

if(array[j]

if(i!=k)

{

t=array[k];array[k]=array[i];array[i]=t;

}

}

for(i=0;i

n("array["+i+"]="+array[i]);

5、编写一个Java程序,生成一个随机整数,测试该数是否为正,如果是,报告它是正数。

import ;

public class test1

{

public static void main(String[] args)

{

Random random =new Random();

int n =t();

n("n="+n);

if(n>0) n("n>0");

}

}

6、编写一个Java程序,该程序用数值5814来初始化一个整数变量n,然后用商运算和余数运算来抽取和如下显示n的每个数字。

n=5814

The digits of n are 5,8,1,and 4

public class test1

{

public static void main(String[] args)

{

int n=5814;

n("n="+n);

("The digits of n are ");

(n/1000);

n%=1000;

(","+n/100);

n%=100;

(","+n/10);

n%=10;

n(",and "+n);

}

}

7、编写一个Java程序,把两个词的人名改写为第一个字母大写,其余字母小写。例如,输入:noRtH CARolIna,将生成输出:North Carolina。

import .*;

public class StaticTest

{

public static void main(String[] args)throws IOException

{

}

}

InputStreamReader reader=new InputStreamReader();

BufferedReader in=new BufferedReader(reader);

("Enter a two-word name:");

String name=ne();

n("You entered: " + name);

int i=f(' ');

int j=dexOf(' ');

String s0=ing(0,1).toUpperCase();

String s1=ing(1,i).toLowerCase();

String s2=ing(j,j+2).toUpperCase();

String s3=ing(j+2).toLowerCase();

n(s0+s1+s2+s3);

8、编写一个Java程序,要求打印出一个9*9乘法表。

public class StaticTest

{

public static void main(String[] args)

{

final int size=9;

for(int x=1;x<=size;x++)

{

for(int y=1;y<=size;y++)

{

int z=x*y;

((z<10?" ":" ")+z);

}

n();

}

}

}

六、分析论述题 (考查本门课程综合理解)

1、通过对本门课程的学习,从复杂性、语言性质、结构、安全性、适应性、线程特点等方面谈谈你对Java程序设计语言的理解。

1)简单。因Java语言的语法与C语言特别是C++语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C++ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别是,Java语言不使用指针,并提供了自动的垃圾回收机制,使得程序员不必为内存管理而担忧。

2)面向对象。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。

3)分布式。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、 ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

4)健壮。Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。

5)安全。Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。

6)体系结构中立。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件), 然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。

7)可移植。这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的。

8)解释型。Java程序在Java平台上被编译为字节码格式, 然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。

9)是多线程。在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable) 的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。 Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。

10)动态。Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。

2、结合实际编程经验,从TCP客户端和服务器端两方面介绍一下Java网络编程的步骤。

TCP客户端编程步骤:

1、建立网络连接

客户端网络编程的第一步都是建立网络连接。在建立网络连接时需要指定连接到的服务器IP地址和端口号。建立完成后,会形成一条虚拟的连接,后续的操作就可以通过该连接实现数据的交换了。

2、交换数据

连接建立以后,可以通过这个连接交换数据。交换数据一般会按照“请求-响应”模式进行,即有客户端发送一个请求数据到服务器,服务器反馈一个响应数据给客户端,如果客户端不发送请求则服务器就不主动响应。根据逻辑需要,可以进行无限次的数据交换。

3、关闭网络连接

在数据交换完成以后,关闭网络连接,释放程序占用的系统资源。

TCP服务器端的编程步骤:

1、监听端口

服务器端属于被动等待连接,所以服务器端启动以后,只需要监听本地计算机的某个固定端口即可。这个端口就是服务器端开放给客户端的端口,服务器端程序运行的本地计算机的IP地址就是服务器端程序的IP地址。

2、获得连接

当客户端连接到服务器是,服务器端就可以获得一个连接,这个连接包含客户端的信息,例如客户端IP地址等,服务器端和客户端也通过该连接进行数据交换。一般在服务器端编程中,当获得连接时,需要开启专门的线程处理该连接,每个连接都由独立的线程实现。

3、交换数据

服务器端通过获得的连接进行数据交换。服务器的数据交换步骤一般是首先接收客户端发送过来的数据,然后进行逻辑处理,最后把处理结果数据发送个客户端。简单说,就是先接收再发送,和客户端的数据交换顺序有所不同。实质上,服务器端获得的连接和客户端创建的连接是一样的,只是数据交换的步骤不同。

4、关闭连接

当需要停止网络通信是,就需要关闭服务器端,通过关闭服务器端使得服务器监听的端口以及占用的内存等系统资源可以释放出来。

3、分析解释一下MVC架构,并说明MVC如何工作?

MVC (Modal View Controler)本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据你可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。

MVC如何工作

MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。

视图

视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Macromedia Flash和象XHTML,XML/XSL,WML等一些标识语言和Web services.

如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。

模型

模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs和ColdFusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

控制器

控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后用确定用哪个视图来显示模型处理返回的数据。

现在我们总结MVC的处理过程,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。

4、结合Java程序设计语言说明可移植性的概念,并分析Java采用哪些机制来保证其可移植性。

程序的可移植性指的是程序不经修改而在不同硬件或软件平台上运行的特性,可移植性在一定程度上决定了程序的可应用性。可移植性可分两个层次:源代码级可移植性和二进制可移植性。Java不仅是源代码级可移植的,甚至源代码经过编译之后形成的二进制代码——字节码,也同样是可移植的。

Java采用了多种机制来保证可移植性,其中最主要的有两条:

第一,Java既是编译型又是解释型的。Java将源程序编译成字节码——二进制代码,这种字节码通过Java解释器来解释执行。任何一台机器,只要配备了Java解释器,就可以运行Java字节码,而不管这种字节码是在何种平台上生成的。这不仅使开发的Java源代码是可移植的,甚至源代码经过编译之后形成的二进制代码——字节码,也同样是可移植的。Java源程序编译生成的字节码不是直接在操作系统平台上运行,而是在一个称为Java虚拟机(JVM)的平台上运行。利用JVM把Java字节码跟具体的软硬件平台分隔开来,就能保证在任何机器上编译的Java字节码文件都能在该机上运行。

第二,Java采用的是基于国际标准——IEEE标准的数据类型。Java的数据类型在任何机器上都是一致 的,它不支持特定于具体的硬件环境的数据类型,它还规定同一种数据类型在所有各种实现中必须占据相同的空间大小。此外,Java的可移植性还体现在Java的运行环境上。Java编译器是用Java语言本身所编写的,而其他运行时环境则是用ANSIC编写的,整个运行时环境体现了一个定义良好的可移植性接口。最后,Java语言规范遵循POSIX标准,这也是使Java具有良好可移植性的重要原因。


本文标签: 方法 程序 运行 处理 对象