文档库 最新最全的文档下载
当前位置:文档库 › Java语言的Hello World程序详细分析

Java语言的Hello World程序详细分析

Java语言的Hello World程序详细分析
Java语言的Hello World程序详细分析

Java语言的Hello World程序详细分析

HelloWorld.java

public class HelloWorld {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

System.out.println("Hello World");

}

}

这是每个Java程序员都知道的。虽然简单,但是从一个简单的问题可以引入更深的思考。在这篇文章中,我们将讨论这个简单的程序。

HelloWorld.java

public class HelloWorld {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

System.out.println("Hello World");

}

}

1、为什么一切都开始于一个类?

Java程序是由类组成,一个类包含方法和属性。这是由于它的面向对象的特征:一切皆对象,每个对象都是一个类的实例。面向对象编程有很多优势,比如更好的模块化,扩展性强等

2、为什么总有一个“main”方法?

“main”方法是程序的入口,它是静态的。“static”是指该方法是类的一部分,而不是对象的一部分。

这是为什么?我们为什么不把一个非静态方法作为程序的入口?

如果方法不是静态的,那么需要创建一个对象后才能使用方法。因为必须用对象去调用方法。对于程序的入口,这是不现实的。所以,程序的入口方法是静态的。

参数“String[] args”表示一个字符串数组可以被传入到该程序,用来初始化程序。

3、HelloWorld的字节码

执行这个程序,Java文件首先编译为java字节码储存在.class文件里。

字节码是什么样子的呢?

首先,字节码本身是无法读取。如果我们用一个十六进制编辑器打开,它看起来像下面这样:

我们能看到很多操作码(比如 CA、4C 等)在字节码上,它们每个都有一个相应的助记码(比如,aload_0 在下面的例子中)。操作码是不可读的,但我们可以用javap命令查看.class文件的助记符形式。

“javap -C”打印出每个方法的反汇编代码。反汇编代码的意思是包括Java字节码的说明。

javap -classpath . -c HelloWorld

Compiled from "HelloWorld.java"

public class HelloWorld extends https://www.wendangku.net/doc/dd14003419.html,ng.Object{

public HelloWorld();

Code:

0: aload_0

1: invokespecial #1; //Method java/lang/Object."":()V

4: return

public static void main(https://www.wendangku.net/doc/dd14003419.html,ng.String[]);

Code:

0: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;

3: ldc #3; //String Hello World

5: invokevirtual #4; //Method java/io/PrintStream.println:(Ljava/lang/String;)V

8: return

}

上面的代码中包含两个方法:一个是默认构造函数,这是由编译器推断出,另一个是main方法。

每个方法下面,都有一系列指令,比如aload_0,invokespecial #1,等

下面的每个方法,也有说明,如aload_0,invokespecial#1,等指令可以在java指令清单里查到。例如,aload_0指令是加载一个从栈中引用的本地变量0,getstatic 指令获取一个类的静态字段值。注意“#2” 指令在getstatic指令后指向运行常量池。常量池是一个JVM 运行时数据区,查看。我们可以用“javap -verbose”命令来查看常量池。

此外,每个指令开始于一个数字,如0,1,4等。在.class文件中,每个方法都有一个对应的字节码数组。这些数字对应的每一个操作码和它的参数都存储在数组中的索引中。每个操作码为1个字节,指令可以有0个或多个参数。这就是为什么数字是不连续的。

现在,我们可以用“javap -verbose” 查看.class文件进一步研究。

javap -classpath . -verbose HelloWorld

Compiled from "HelloWorld.java"

public class HelloWorld extends https://www.wendangku.net/doc/dd14003419.html,ng.Object

SourceFile: "HelloWorld.java"

minor version: 0

major version: 50

Constant pool:

const #1 = Method #6.#15; // java/lang/Object."":()V

const #2 = Field #16.#17; // java/lang/System.out:Ljava/io/PrintStream;

const #3 = String #18; // Hello World

const #4 = Method #19.#20; // java/io/PrintStream.println:(Ljava/lang/String;)V

const #5 = class #21; // HelloWorld

const #6 = class #22; // java/lang/Object

const #7 = Asciz ;

const #8 = Asciz ()V;

const #9 = Asciz Code;

const #10 = Asciz LineNumberTable;

const #11 = Asciz main;

const #12 = Asciz ([Ljava/lang/String;)V;

const #13 = Asciz SourceFile;

const #14 = Asciz HelloWorld.java;

const #15 = NameAndType #7:#8;// "":()V

const #16 = class #23; // java/lang/System

const #17 = NameAndType #24:#25;// out:Ljava/io/PrintStream;

const #18 = Asciz Hello World;

const #19 = class #26; // java/io/PrintStream

const #20 = NameAndType #27:#28;// println:(Ljava/lang/String;)V

const #21 = Asciz HelloWorld;

const #22 = Asciz java/lang/Object;

const #23 = Asciz java/lang/System;

const #24 = Asciz out;

const #25 = Asciz Ljava/io/PrintStream;;

const #26 = Asciz java/io/PrintStream;

const #27 = Asciz println;

const #28 = Asciz (Ljava/lang/String;)V;

{

public HelloWorld();

Code:

Stack=1, Locals=1, Args_size=1

0: aload_0

1: invokespecial #1; //Method java/lang/Object."":()V

4: return

LineNumberTable:

line 2: 0

public static void main(https://www.wendangku.net/doc/dd14003419.html,ng.String[]);

Code:

Stack=2, Locals=1, Args_size=1

0: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;

3: ldc #3; //String Hello World

5: invokevirtual #4; //Method java/io/PrintStream.println:(Ljava/lang/String;)V

8: return

LineNumberTable:

line 9: 0

line 10: 8

}

JVM定义:运行常量池提供一个类似于传统的编程语言的符号表函数,尽管它包含了比典型的符号表范围更广的数据

“invokespecial #1″指令指向#1常量在常量池中.常量是”Method #6.#15;“从数字上看,我们就可以按递归方式来得到最终的常量。

LineNumberTable提供用来调试java源代码对应字节码的行数信息例如,在main方法里Java源代码第9行对应字节码0,第10行对应字节码8。

如果你想知道更多关于字节码,您可以创建和编译一个更复杂的类来看一看。HelloWorld确实是个很简单的例子。

4、它是如何在JVM中执行?

现在的问题是如何JVM加载类并调用main方法?

在main方法执行之前,JVM需要分三步走加载、连接以及初始化该类。1)加载二进制的类和接口到jvm中。2)连接合并二进制数据到正在运行状态的jvm。连接有三步构成,验证、准备、解析。验证确保了类/接口在结构上正确的;准备工作包括所需要的类/接口分配内存;解析符号引用。最后3)初始化变量并初始化值

这个装载工作是由Java类加载器完成的。当JVM启动时,3个类加载器被使用:

1.引导类加载器:加载位于/ jre / lib目录的核心Java库。这是jvm核心的一部分,并且是原生的代码。

2.扩展类加载器:加载代码的扩展目录(例如,/jar/ lib / ext目录)。

3.系统类加载器:在CLASSPA TH中找到负载代码。

所以HelloWorld类是由系统类加载器加载。当执行的主要方法,它会触发加载,链接和其他相关的类的初始化,如果它们存在。

最后,main()的帧被加载到jvm堆栈,程序计数器(PC)被相应地设置。程序计数器然后指示println()帧的加载到JVM堆栈。当main()方法完成后,它会从堆栈中弹出执行完成。

04747java语言程序设计(一)20120年01月试卷

全国2012年1月高等教育自学考试 Java语言程序设计(一)试题 课程代码:04747 一、单项选择题(本大题共10小题,每小题1分,共l0分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.下面供选字符序列中,不属于 ...Java语言关键字的是( ) A.inner B.throw C.false D.throws 2.表达式“-1>>>1”的十进制值是( ) A.-2 B.231-1 C.-(231-1) D.232-1 3.Java语言中,在类定义时用final关键字修饰,是指这个类( ) A.子类必须实现父类未实现的方法 B.没有具体实现代码 C.必须要有实例 D.不能被继承 4.表达式"java程序设计".1ength()的值是( ) A. 0 B.12 C. 8 D.13 5.以下关于BorderLayout布局的叙述中,不正确 ...的是( ) A.把容器内的空间划分成5个区域 B.加入组件应该指明要放入的区域 C.是框架窗口的默认布局 D.一个位置可直接放多个组件 6.利用文件对话框打开或保存文件,在打开文件对话框之前,可用FileFilter类设置筛选条件,其所用的两个方法是( ) A.accept()和getSelectedFile() B.accept()和getDescription() C.accept()和setDescription() D.setDescription()和getDescription() 7.设已经有Graphics2D对象g2d,RoundRectangle2D对象rRect,绘制对象rRect的代码是( ) A.g2d.draw(rRect) B.g2d.drawRoundRect(rRect) C.rRect.draw() D.rRect.drawRoundRect() 8.以下关于线程互斥和同步的叙述中,正确的是( ) A.临界段是线程互斥使用资源的程序段 B.临界段能使线程使用其它线程的资源 浙04747# Java语言程序设计(一)试卷第1页(共12页)

java程序设计基础(含参考答案)

“Java程序设计基础”课程习题 一、填空 1.Java程序分两类___Applet___和application,Java Application 类型的程序,程序从 ___main方法___开始执行。 2.定义一个Java类时,通过关键字__extends____指明该类的父类。一个类可以有___1___ 个父类。 3.用public修饰的类称为_公有类或公用类__。用public修饰的类成员称为公有成员。被 说明为public的内容可以被__所有其他类___ 使用。如果public类文件与使用它的类文件不在同一目录中,需要通过__import____语句引入。 4.用___private___ 修饰的类成员称为私有成员。私有成员只能在__本类__ 中使用。 5.如果子类定义的成员变量与父类的成员变量同名,称为___方法覆盖___ ,要表明使用 子类的成员变量,可以在成员变量前加上关键字__super___ 。 6.____Object__ 类是Java类库中所有类的父类。 7.Java字符使用__16位的字符集,该字符集成为__Unicode____ 。 8.当子类中定义的方法与父类方法同名时,称子类方法___覆盖___ 父类方法,子类默认 使用自己的方法。使用父类的同名方法,必须用关键字__super__ 说明。 9.Java源程序文件名的后缀是___.java___,Java字节码文件名的后缀是_.class_____。 10.Java类名的第一个字母通常要求___大写___。 11.Java程序由____类__组成,每个程序有一个主类,Java程序文件名应与____主__类的 名称相同。 12.Java__Application_类型的程序需要main()方法,程序从__main____开始执行。 13.布尔型数据类型的关键字是_boolean__ ,占用位数是___1位___ ,有__true__ 和_false_ 两种值。整型数可以采用_十_ 、__八_ 和__十六_三种进制表示。 14.八进制整数以数字__0_开头。十六进制整数以_0x或0X_ 开头。 15.int整型数占用__32位内存。long整型数占用__64 位内存。 16.127L表示__长整型____ 常量。 17.根据占用内存长度将浮点常量分为_double_____ 和__float____ 两种。 18.单精度浮点常量占用__32_ 位内存,双精度浮点常量占用__64 位内存。 19.在Java语言中,字符串“ABC\tD\b\n”中包括__7个字符。 20.数学关系44&&x<9____ 。数学关系x>3且x<=10对应 的Java表达式是_x>3&&x<=10。数学关系x>3或x<-10对应的Java表达式是_x>3||x<-10_。 21.逻辑表达式true&&false&&true的结果是_false_ 。 22.__new__ 运算符的作用是根据对象的类型分配内存空间。当对象拥有内存空间时,会 自动调用类中的构造方法为对象_初始化_。 23.省略访问修饰符的类只能被同_一包_中的类使用,称之具有包访问特性。 24.用public修饰的类称为_公共类_。用public修饰的类成员称为公共成员。被说明为public 的内容可以被_所有类_ 使用。如果public类文件与使用它的类文件不在同一目录中,需要通过_import_语句引入。 25.用_private_ 修饰的类成员称为私有成员。私有成员只能在_本类使用。 26.在类中可以定义多个具有相同名称、但参数不同的方法,这种做法称为__方法重载_ 。 27.如果子类定义的成员变量与父类的成员变量同名,要表明使用子类的成员变量,可以在 成员变量前加上关键字__this__。

Java语言程序设计课后习题答案

Java语言程序设计(郑莉) 第二章习题答案 1.什么是对象、类,它们之间的联系 答:1)对象是包含现实世界物体特征的抽象实体,它反映系统为之保存信息和与它交互的能力。对象是一些属性及服务的封装体,在程序设计领域,可以用“对象=数据+作用于这些数据上的操作”来表示。现实生活中对象是指客观世界的实体;在程序中对象是指一组变量和相关方法的集合。 2)类是既有相同操作功能和相同的数据格式的对象的集合与抽象!3)两者的关系:对象是类的具体实例.。 2.什么是面向对象的程序设计方法它有那些基本特征 答:面向对象程序设计从所处理的数据入手,以数据为中心而不是以服务为中心来描述系统。它把编程问题视为一个数据集合,数据相对于功能而言,具有更强的稳定性。 它的特征:抽象,封装,继承,多态。 3(无用) 4.请解释类属性、实例属性及其区别。 答:实例属性,由一个个的实例用来存储所有实例都需要的属性信息,不同实例的属性值可能会不同。 5.请解释类方法、实例属性及其区别。 答:实例方法表示特定对象的行为,在声明时前面不加static修饰符,在使用时需要发送给一个类实例。 类方法也称为静态方法,在方法声明时前面需加static修饰符,类方法表示具体实例中类对象的共有行为。 区别:实例方法可以直接访问实例变量,调用实例方法,实例方法可以直接访问类变量,调用类方法;类方法可以直接调用类变量和类方法,类方法不能直接调用实例变量和实例方法; 6.类的访问控制符有哪几种具体含义及其区别。 答:类的访问控制符只有public(公共类)及无修饰符(默认类)两种。 区别:当使用public修饰符时表示所有其他的类都可以使用此类;当没有修饰符时,则只有与此类处于同一包中的其他类可以使用类。 7类成员的访问控制符有哪几种他们对类成员分别有哪些访问限制的作用 答:类成员的访问控制符有 public,private,protecte及无修饰符. public(公有的):用public修饰的成分表示公有的,也就是它可以被其他任何对象访问(前提是对累成员所在的类访问有访问权限). Private(保护的):类中限定为private的成员只能被这个类本身 访问,在类外不可见。 proteced(保护的)用该关键字修饰的成分是受保护的,只可以被同一类及其子类的实例对象访问。 无修饰符(默认的):public,private,protected这个三个限定符不是必须写的。如果不写,则表明是“friendly”,相应的成分可以被所在保重的各类访问。 8简述构造方法的特点答:构造方法主要有以下特点: (1)构造方法的方法名与类名相同; (2)构造方法没有返回类型(修饰符void也不能有);(3)构造方法通常被声明为公有的(public); (4)构造方法可以有任意多个参数; (5)构造方法的主要作用是完成对象的初始化工作; (6)构造方法不能在程序中显式的调用; (7)在生成一个对象时,系统会自动调用该类的构造方法为新生成的对象初始化。 9如果在类声明中声明了构造方法,系统是否还提供默认的构造方法 答: 用户在进行类声明时,如果没有声明任何构造方法,系统会赋给此类一个默认(无参)的构造方法。但是,只要用户声明了构造方法,即使没有声明无参的构造方法,系统也不会再赋默认的构造方法。 10:声明Patient类表示在门诊室中的病人。此类对象应包括name(astring)\sex(achar)、age(an integer)、weight(a float0、allergies(a boolean). 声明存取及修改方法。在一个单独的累中,声明测试方法,并生成两个patient的例子: Atient april=new Patient(); (“zhangli”) (‘f’);; (330; ; (true); 那么:”+()); ”+()); ”+()); (“weught: ”+());\ ”+()); 声明并测试toString()方法显示一个病人的aga、sex、name及allergies属性。 答: public class Patient { private String name; private char sex; private int age; private float weight; private boolean allergies; public void setname(String a) { name=a; } public void setsex(char b) { sex=b; }

Java语言程序设计基础篇前三章课后习题要点

第1章计算机、程序和Java概述 1.1(显示三条消息)编写程序,显示Welcome to Java、Welcome to Computer Science和Programming is fun。 程序: 显示: 1.2(显示五条消息)编写程序,显示Welcome to Java五次 程序: 显示: 1.3(显示图案)编写一个程序,显示下面的图案:

程序: 显示: 1.4(打印表格)编写程序,显示以下表格: 程序: 显示:

1.5(计算表达式)编写程序,显示(9.5x4.5- 2.5x3)/(45.5- 3.5)的结果 程序: 显示: 1.6(数列求和)编写程序,显示1+2+3+4+5+6+7+8+9的结果 程序: 显示: 1.7(近似求π)可以使用以下公式计算π: Π=4x(1-1/3+1/5-1/7+1/9-1/11+1/13+...) 编写程序,显示4x(1-1/3+1/5-1/7+1/9-1/11+1/13...)的结果。在程序中用1.0代替1 程序: 显示:

第2章基本程序设计 2.1(将摄氏温度转换为华氏温度)编写程序,从控制台读入double型的摄氏温度,然后将其转换华氏温度,并显示结果。转换公式如下所示: Fahrenheit-=(9/5)*celsius+32 (华氏度=(9/5)*摄氏度+32) 程序: 显示: 2.2(计算圆柱体的体积)编写程序,读入圆柱体的半径和高,并使用下列公式计算圆柱体的体积 面积=半径x半径xπ 体积=面积x高 程序: 显示:

2.3(将英尺转换为米)编写程序,读入英尺数,将其转换为米数并显示结果。一英尺等于0.305米。 程序: 显示: 2.4(将磅转换为千克)编写程序,将磅数转换为千克数。程序提示用户输入磅数,然后转换成千克并显示结果。1磅等于0.454千克。 程序: 显示: 2.5(财务应用程序:计算小费)编写一个程序,读入一笔费用与酬金率,就算酬金和总钱数。例如,如果用户读入10作为费用,15%作为酬金率,计算结果显示酬金为$1.5,总费用为$11.5. 程序:

《Java语言程序设计基础教程》习题解答

《Java语言程序设计基础教程》练习思考题参考答案

第1章Java程序设计概述 1.9 练习思考题 1、Java运行平台包括三个版本,请选择正确的三项:() A. J2EE B. J2ME C. J2SE D. J2E 解答:A,B,C 2、Java JDK中反编译工具是:() A. javac B. java C. jdb D. javap 解答:D 3、public static void main方法的参数描述是:() A. String args[] B. String[] args C. Strings args[] D. String args 解答:A,B 4、在Java中,关于CLASSPATH环境变量的说法不正确的是:() A. CLASSPATH一旦设置之后不可修改,但可以将目录添加到该环境变量中。 B. 编译器用它来搜索各自的类文件。 C. CLASSPATH是一个目录列表。 D. 解释器用它来搜索各自的类文件。 解答:A 5、编译Java Application源文件将产生相应的字节码文件,扩展名为() A. .java B. .class C. .html D. .exe 解答:B 6、开发与运行Java程序需要经过的三个主要步骤为____________、____________和____________。 7、如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyApplet,则类MyApplet必须是______类的子类并且存储该源程序文件的文件名为______。 8、如果一个Java Applet程序文件中定义有3个类,则使用Sun公司的JDK编译器编译该源程序文件将产生______个文件名与类名相同而扩展名为______的字节码文件。 9、开发与运行Java程序需要经过哪些主要步骤和过程? 10、Java程序是由什么组成的?一个程序中必须要有public类吗?Java源文件的命名规则是怎么样的? 11、编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,很高兴学习Java”和“We are students”。

java语言程序设计课后习题答案

习题2 3.使用“= =”对相同内容的字符串进行比较,看会产生什么样的结果。 答:首先创建一个字符串变量有两种方式:String str = new String("abc"); String str = "abc"; 使用“= =”会因为创建的形式不同而产生不同的结果: String str1 = "abc"; String str2 = "abc"; =str2); ; public class Exercise51{ public static void main(String[] args) throws IOException{ "请输入一个整数:"); InputStreamReader isStream=new InputStreamReader; BufferedReader bfReader=new BufferedReader(isStream); String input=(); int length=()-1; int n=new Integer(input).intValue(); while(length>=0){ int divisor=(int) (10,length); length=length-1; int output=n/divisor; n=n%divisor; ","); } } } 法二:(建议使用) public class Exercise5{ public static void main(String[] args){ int n=1678; int unit; int decimal; int hundred; int thousand; thousand=n/1000%10; hundred=n/100%10; decimal=n/10%10; unit=n%10; "1678包含的数字分别是: "+thousand+','+hundred+','+decimal+', '+unit); } } ;

java语言程序设计基础篇8.9答案

在一个正n边形中,所以边的长度都相同,且所有角的度数都相同(即这个多边形是等边等角的)。 设计一个名为RegularPolygon的类,该类包括: 一个名为int型的私有数据域定义多边形的边数,默认值3。一个名为side的double型私有数据域存储边的长度,默认值1。 一个名为x的double型私有数据域,它定义多边形中点的x坐标,默认值0。一个名为y 的double型私有数据域,它定义多边形中点的y坐标,默认值0。一个创建带默认值的正多边形的无参构造方法。 一个能创建带指定边数和边长度、中心在(0,0)的正多边形的构造方法。一个能创建带指定边数和边长度、中心在(x,y)的正多边形的构造方法。所有数据域的访问器和修改器。一个返回多边形周长的方法getPerimeter()。 一个返回多边形面积的方法getArea().计算多边形面积的公式是:面积=(n*s*s)/(4*tan(p/n)) 画出该类的UML图。实现这个类。编写一个测试程序,分别使用无参构造方法、RegularPolygon(6,4)和RegularPolygon(10,4,5.6,7.8)创建三个RegularPolygon对象。显示每个对象的周长和面积。 代码: class Regularpolygon{ private int n=3;//边长 private double side=1;//边长 private double x=0; private double y=0;//x,y为多边形中点的x,y坐标 Regularpolygon(){ } Regularpolygon(int newN,int newS){ n=newN; side=newS; x=0; y=0; } Regularpolygon(int newN,int newS,double newX,double newY){ n=newN; side=newS; x=newX; y=newY; } public void setN(int newN){ n=newN; } public void setSide(double newS){ side=newS; }

《Java语言程序设计基础教程》

第1章 Java程序设计概述 1.9 练习思考题 1、Java运行平台包括三个版本,请选择正确的三项:() A. J2EE B. J2ME C. J2SE D. J2E 解答:A,B,C 2、Java JDK中反编译工具是:() A. javac B. java C. jdb D. javap 解答:D 3、public static void main方法的参数描述是:() A. String args[] B. String[] args C. Strings args[] D. String args 解答:A,B 4、在Java中,关于CLASSPATH环境变量的说法不正确的是:() A. CLASSPATH一旦设置之后不可修改,但可以将目录添加到该环境变量中。 B. 编译器用它来搜索各自的类文件。 C. CLASSPATH是一个目录列表。 D. 解释器用它来搜索各自的类文件。 解答:A 5、编译Java Application源文件将产生相应的字节码文件,扩展名为() A. .java B. .class C. .html D. .exe 解答:B 6、开发与运行Java程序需要经过的三个主要步骤为___编辑源程序____、______编译生成字节码______和_____解释运行字节码____。 7、如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyApplet,则类MyApplet必须是_Applet_类的子类并且存储该源程序文件的文件名为_MyApplet.java_。 8、如果一个Java Applet程序文件中定义有3个类,则使用Sun公司的JDK编译器编译该源程序文件将产生_3_个文件名与类名相同而扩展名为_.class_的字节码文件。 9、开发与运行Java程序需要经过哪些主要步骤和过程? 答:1编写Java源文件:使用文本编辑器(edit或记事本),拓展名为.java

自考Java语言程序设计一试题及答案解析

2015年10月高等教育自学考试全国统一命题考试 Java语言程序设计(一) 试卷 (课程代码04747) 本试卷共13页,满分100分.考试时间150分钟。 考生答题注意事项: 1.本卷所有试题必须在答题卡上作答。答在试卷上无效,试卷空白处和背面均可作草稿纸. 2.第一部分为选择题。必须对应试卷上的题号使用2B铅笔将“答题卡”的相应代码涂黑. 3.第二部分为非选择题。必须注明大、小题号.使用0.5毫米黑色字迹签字笔作答. 4.合理安排答题空间.超出答题区域无效。 第一部分选择题 一、单项选择题(本大题共10小题.每小题1分.共10分) 在每小题列出的四个备选项中只有一个是符合题目要求的。请将其选出并将“答题卡”的相应代码涂黑。未涂、错涂或多涂均无分. 1.以下字符组合中,不能作为Java整型常量的是 A.037 B.0x3ADG C.7000 D.0x3abcL 2.以下程序代码的输出结果是 3.设有数组定义,则x.length的值为 A.2 B.3 C.4 D.5 4. 设有字符串String s=〝ABCDEFGABC〞;,则表达式s.indexOf(〝A〞,7)的值是 A.7 B.6 C.3 D.0 5.以下关于Swing与AWT之间关系的叙述中,正确的是 A.Swing是AWT的提高和扩展 B.在写GUl程序时,AWT和Swing不能同时使用 C.AWT和Swing在不同的平台上都有相同的表示 D.AWT中有一些类是从Swing中的一些继承的 6.以下供选择的类中,其子类能用来创建框架窗口的是 A.JWindow B.JFrame C.JDialog D.JAudio 7.某程序定义了一个子类,并要让它实现多线程,以下正确的步骤是 A.继承Thread类,在类内定义run( )方法,声明和创建线程对象,并让该对象调用 start( )方法。 B.继承Thread类,在类内定义run( )方法,声明线程对象,并让该对象调用start( ) 方法。 c.声明实现Runnable接口,在类内实现run( )方法,声明线程对象,创建线程,并

java语言程序设计基础篇第二章程序练习题答案

java语言程序设计基础篇第二章程序练习题答案

2.1(将摄氏温度转化为华氏温度) import java.util.*; public class test { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); System.out.print("Enter a degree in celsius: "); double Celsius = input.nextDouble(); double Fahrenheit; Fahrenheit = (9.0/5) * Celsius + 32; System.out.println(Celsius + " Celsius is" + Fahrenheit + " Fahrenheit"); } } 2.2(计算圆柱体的体积) import java.util.*; public class test {

public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); System.out.print("Enter the radius and length of a cylinder: "); double radius = input.nextDouble(); double length =input.nextDouble(); double area = radius * radius * Math.PI; double volume = area * length; System.out.println("The area is " + area); System.out.println("The volume is " + volume); } } 2.3(将英尺转换为米) import java.util.Scanner; public class test { public static void main(String[] args) {

Java语言程序设计基础篇全习题答案16

Chapter 16 Applets and Multimedia 1. Every applet is an instance of java.awt.Applet. Not every applet is an instance of javax.swing.JApplet. Only the Swing applets are instances of JApplet. 2. See the section "The Applet Class." 3. The components are added to the content pane of the applets. The default layout manager of the content pane of JApplet is BorderLayout. 4. (a) The void should be removed to declare a constructor. (b) The jlblMessage is declared in Line 2 as a data field, but redeclared in Line 5 as a local variable. The local variable is assigned with new JLabel("It is Java"), but the data field is still null. In Line 12, jlblMessage is null, which causes NullPointerException. 5. See the section "The HTML Tag." You use the tag to pass parameters to an applet. getParameter() method is defined in the Applet class. 6. The 7. Revision 1 is wrong because the getParameter method is an instance method and it cannot be invoked before an instance of the applet is created. Revision 2 is wrong because the init method is invoked after the applet instance is created. 8.An application has a main() method and runs as a standalone. An applet does not need a main method and must run from a Web browser. Applications and applets are compiled in the same way. Applets are not allowed to read from, or write to, the file system of the computer. Applets are not allowed to run any programs on the browser's computer. Applets are not allowed to establish connections between the user's computer and another computer except with the server where the applets are stored. 9. No. 10. Yes. You can create an instance of JApplet and place it in a frame and use it. 11. You will see garbage displayed in the cell.

《Java语言程序设计(一)》(课程代码04747)汇编

《Java语言程序设计(一)》(课程代码04747) 第一大题:单项选择题 1、下列字符组合不能作为Java整型常量的是( ) ? A.078 ? B.0x3ACB ? C.5000 ? D.0x3ABC 参考答案:A 2、以下程序代码的输出结果是( ) int x = 10; while (x > 7) { System.out.print("*"); x--;} ? A.** ? B.*** ? C.* ? D.**** 参考答案:B 3、设类U声明,及对象u和v的定义如下: class U{ int x, int y; U(int a, int b){x= a; y = b;} void copy(U a){ x = a.x; y = a.y;} } U u = new U(1, 2), v = new U(2, 3); 在以下供选择的代码中,可能引起系统回收内存的是( ) ? A.u.x=v.y;u.y=v.x

? B.u=v ? C.u.copy ? D.v.copy(u) 参考答案:B 4、设有以下代码: String s l="123"; String s2="123"; String s3=new String("123"); 则表达式s1==s2和s1==s3的值分别是( ) ? A.true,true ? B.false,false ? C.true,false ? D.false,true 参考答案:C 5、以下关于AWT与Swing之间关系的叙述,正确的是( ) ? A.Swing是AWT的提高和扩展 ? B.在写GUI程序时,AWT和Swing不能同时使用? C.AWT和Swing在不同的平台上都有相同的表示? D.AWT中的类是从Swing继承的 参考答案:A 6、在以下Swing组件中,能为它指定布局管理器的是( ) ? A.JScrollBar对象 ? B.JMenuBar对象 ? C.JComboBox对象

Java语言程序设计_及__试题答案

Java语言程序设计及试题答案 一、单选题(共20分,每小题1分) 1、下面哪一个不是java语言的特点( d )。 (A)面向对象(B)安全性高 (C)与平台无关(D)复杂多变 2、下面的哪一个标识符是合法可用的( d )。 (A)2abcd (B)int (C)var# (D)abcd123 3、在基本数据类型中,整型(int)位长为( c )。 (A)8 (B)16 (C)32 (D)64 4、Java中的所有对象都是在运行时动态创建的,创建新对象可用的关键字为( a )。(A)new (B)string (C)byte (D)true 5、继承是指新的类获得已有类的属性和行为,称新类为已有类的( a )。 (A)子类(B)父类(C)对象(D)实体 6、读下面的程序: public _______clock { int hour; int minute; int second; public void settime (int newh, int newm,int news) {hour=newh; minute=newm; second=news; } } 划线位置应选择的关键字为( b )。 (A)new (B)class (C)system (D)out 7、读下面的三个程序段: public class Circle { int radius; } public class Rectangle{ double width=10.128; double height=5.1245; } public (7)ShaperTester { public static void (8)(String args[]){ Circle x; Rectangle y; x=(9)Circle(); y=(9)Rectangle(); System.out.println(x+””+y); }

专科《JAVA语言程序设计》_试卷_答案

专科《JAVA语言程序设计》 一、(共75题,共153分) 1. 在下列选项中,属于Java语言的代码安全检测机制的一项是( )。(2分) A.动态链接 B.访问权限的检查 C.通过接口实现多重继承 D.将所有的Java应用都看做对象,按类进行封装 .标准答案:B 2. 下列选项中,不属于Java语言安全机制的一项足( )。(2分) A.语法检查 B.不允许使用指针 C.代码参数类型合法性检查 D.对内存进行跟踪 .标准答案:D 3. Java语言是一种( )。(2分) A.面向机器的编程语言 B.面向过程的编译型编程语言 C.面向问题的解释型编程语言 D.面向对象的解释型编程语言 .标准答案:D 4. 下列关于long类型的说法中,正确的一项是( )。(2分) A.long类型占存储空间和int类型一样大 B.long类型能表示的数值范围和int类型一样 C.long类型不能自动转换为i︱nt类型 D.常数Long.MIN_VALUE代表整型的最小值 .标准答案:C 5. 下列说法中正确的一个是( )。(2分) A.标识符区分大小写 B.”a”不是一个字符串 C.float f=3.14;是合法的语句 D.float f=(int)3.14;不是合法的语句 .标准答案:A 6. 下列关于int类型和long类型的说法中,正确的一个是( )。(2分) A.int类型可以自动转换为long类型 B.long类型可以自动转换为int类型 C.long类型占的存储空间比int类型的小 D.long类型和int类型数据能表示整数的范围一样 .标准答案:A 7. 下列哪一个是回车字符的正确转义字符?()(2分) A./r B./n C.\t D.\r .标准答案:D 8. 下列的变量定义中,错误的一个是( )。(2分) A.int i; B.int 22_$; C.int i=Integer.MIN_VALUE; D.static short a=10: .标准答案:B 9. Java中所有的简单数据类型都被包装在包( )中。(2分) A.java.sql B.java.awt C.java.1ang D.java.math .标准答案:C 10. 下列语句序列执行后,输出的结果是( )。 (2分) A.l B.0 C.true D.false .标准答案:D 11. 已知定义:;,为了打印输出数组a的最后一个元素,下面正确的代码是( )。(2分) A.System.out.println(a[10]); B.System.out.println(a[9]); C.System.out.println(a[a.1ength]); D.System.Out.println(a(8)); .标准答案:B

《Java语言程序设计(基础篇)》(第10版 梁勇 著)第三十五章练习题答案

《Java语言程序设计(基础篇)》(第10版梁勇著) 第三十五章练习题答案 35.1 import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Button; import https://www.wendangku.net/doc/dd14003419.html,bel; import javafx.scene.control.TextField; import javafx.stage.Stage; import java.sql.*; import javafx.application.Platform; import javafx.collections.FXCollections; import javafx.geometry.HPos; import javafx.geometry.Pos; import https://www.wendangku.net/doc/dd14003419.html,boBox; import javafx.scene.control.PasswordField; import javafx.scene.control.TextArea; import https://www.wendangku.net/doc/dd14003419.html,yout.BorderPane; import https://www.wendangku.net/doc/dd14003419.html,yout.GridPane; import https://www.wendangku.net/doc/dd14003419.html,yout.HBox; public class Exercise35_01 extends Application { private DBConnectionPane dBConnectionPane = new DBConnectionPane(); private Label lblConnectionStatus = new Label("No connection now"); private TextArea taDisplay = new TextArea(); @Override // Override the start method in the Application class public void start(Stage primaryStage) { Button btBatchUpdate = new Button("Batch Update"); Button btNonBatchUpdate = new Button("Non-Batch Update"); HBox hBoxButtons = new HBox(10); hBoxButtons.getChildren().addAll(btBatchUpdate, btNonBatchUpdate); hBoxButtons.setAlignment(Pos.CENTER); BorderPane borderPaneConnect = new BorderPane(); Button btConnectDB = new Button("Connect to Database"); borderPaneConnect.setCenter(lblConnectionStatus); borderPaneConnect.setRight(btConnectDB);

《JAVA语言程序设计》期末考试试题及答案

《JA V A语言程序设计》期末考试试题及答案1(应考必备题库) 一、单选择题 1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( B )。 A. java B. .class C. html D. .exe 2、设x = 1 , y = 2 , z = 3,则表达式y+=z--/++x 的值是( A )。 A. 3 B. 3. 5 C. 4 D. 5 3、不允许作为类及类成员的访问控制符的是( C )。 A. public B. private C. static D. protected 4、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为( A )。 A. static void method( ) B. public void method( ) C. final void method( ) D. abstract void method( ) 二、填空题 1、开发与运行Java程序需要经过的三个主要步骤为编辑源程序、 编译生成字节码和解释运行字节码。 2、在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode码占 用2字节内存空间,这样,无论是中文字符还是英文字符,都是占 用2字节内存空间。 3、设x = 2 ,则表达式( x + + )/3 的值是0 。 4、若x = 5,y = 10,则x < y和x >= y的逻辑值分别为true和false。 5、抽象(abstract) 方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义。最终(final)方法是不能被当前类的子类重新定义的方法。 6、创建一个名为MyPackage 的包的语句是package MyPackage ; , 该语句应该放在程序的位置为:应该在程序第一句。 7、设有数组定义:int MyIntArray[ ] = { 10 , 20 , 30 , 40 , 50 , 60 , 70}; 则执行以下几个语句后的输出结果是120。

Java语言程序设计基础篇全习题答案21

Chapter 21 Generics 1.(a) will compile fine, but (b) has a compilation error on Line 3, because dates is declared as a list of Date objects. You cannot assign a string to the list. 2.casting is needed in (a), but no casting is necessary in (b) with the generic type ArrayList. 3.One important benefit is improving reliability and robustness. Potential errors can be detected by the compiler. 4.No. 5.No. 6.Yes. 7.To declare a generic type for a class, place the generic type after the class name, such as GenericStack. To declare a generic type for a method, place the generic type for the method return type, such as void max(E o1, E o2). 8.Bounded generic type such as specifies that a generic type must be a subclass of AClass. 9.When you use generic type without specifying an actual parameter, it is called a raw type. GenericStack is roughly equivalent to GenericStack, but they are not the same. GenericStack is a generic instantiation, but GenericStack is a raw type. 10.? is unbounded wildcard ? extends T is bounded wildcard ? super T is lower bounded wildcard 11.No. Only ArrayList is loaded. 12.Since all instances of a generic class have the same runtime class, the static variables and methods of a generic class is shared by all its instances. Therefore, it is illegal to refer a generic type parameter for a class in a static method or initializer.

相关文档 最新文档