在程序中实现对java源文件编译的3种方法
Java程序设计习题附答案(一)
Java程序设计习题附答案(一)java程序设计题库第一部分是引言1、下列关于java语言的特点,描述错误的是(c)a、 Java是一种跨平台编程语言。
java支持分布式计算。
java是一种面向过程的编程语言。
java支持多线程2、java语言具有许多优点和特点,下列选项中,哪个反映了java程序并行机制的特点?(b)a、安全性b、多线性c、跨平台d、可移植3、javajdk中调试器的命令是(c)。
a、javacb、javac、jdbd、avah4.在jar文件中运行类文件需要在Java命令之后添加的参数是(a)。
a、-cpb-gc-dd-verbose5、下面哪项在java中是不合法的标识符?(c)a、$userb、pointc、you&med、 _uuline6、下面关于java语言说法正确的是(abcd)。
a、 Java语言是一种面向对象、解释和执行的网络编程语言。
b、 Java语言是可移植的、独立于平台的编程语言。
c、 Java语言可以自动收集内存垃圾。
d、java语言编写的程序虽然是“一次编译,到处运行”,但必须要有java的运行环境。
7、在java程序设计中,程序员创建()文件,然后编译器把它们转化为()文件。
(b)a、源代码,htmlb,源代码,字节码C,字节码,源代码D,HTML,字节码8,Java JVM指的是(b)。
a、由java操作的家用设备(通常是一个漂亮的小烤箱)b、java字节代码的解释程序c、java源代码的编译器d、运行Java所需的硬件设备9、在java中,关于classpath环境变量的说法不正确的是(a)。
a、一旦设置了类路径,就不能对其进行修改,但可以将目录添加到环境变量中。
b、编译器使用它来搜索各自的类文件。
c、类路径是一个目录列表。
d、解释器使用它来搜索相应的类文件。
10.一个可以独立运行的Java应用程序(d)。
a、可以有一个或多个main方法。
java三种异常处理方法
java三种异常处理方法Java是一种流行的编程语言,但是在编写程序时常常会遇到各种异常。
为了使程序更加健壮和稳定,我们需要使用异常处理机制。
Java中有三种异常处理方法:1. try-catch语句try-catch语句是最常用的异常处理方法。
它的基本语法如下: ```try {// 可能会抛出异常的代码} catch (Exception e) {// 异常处理代码}```在try块中,我们编写可能会抛出异常的代码。
如果这些代码抛出了异常,那么程序就会跳转到catch块中。
catch块中的代码会处理异常,可以输出异常信息,也可以进行其他操作。
2. throws关键字throws关键字可以将异常抛给调用该方法的上一级方法处理。
它的语法如下:```public void method() throws Exception {// 可能会抛出异常的代码}```在方法声明中使用throws关键字,表明该方法可能会抛出某种异常。
如果抛出了异常,异常将会被抛给该方法的调用者处理。
3. finally关键字finally关键字用于编写一段无论是否发生异常都会被执行的代码块。
它的语法如下:```try {// 可能会抛出异常的代码} catch (Exception e) {// 异常处理代码} finally {// 无论是否发生异常都会执行的代码}```在try-catch语句中使用finally块,可以确保无论是否发生异常,finally块中的代码都会被执行。
通常,finally块中会释放资源或者进行一些清理操作。
以上是Java中三种常见的异常处理方法。
在编写程序时,我们应该根据具体情况选择合适的方法处理异常,以保证程序的健壮性和稳定性。
Java_笔试选择题6
Java选择题1. 下面的不是Java的特点的是()A. 动态性B. 面向对象C. 编辑型D. 多线型2. Java源文件以为扩展名的是()A. .classB. .javaC. .javD. .cla3. Java源文件经编译产生的文件称为()A. .obj文件B. .exe文件C. .java文件D. 字节码文件4. 字节码文件是与平台无关的什么文件()A. ASCII码B. 二进制码C. BCD码D. Unicode码5. 下面的那一项不是Java application和applet的不同点()B. A. 执行方式不同B. applet中不再需要main()方法C. applet由若干各类构成D. Java applet由Web browser执行6. Java注释方式不包括()C. A. //… B. /* … */ C. /** … **/D. /** … */ C7. 下面不是合法Java标识符的是()D. A. ab B. $_3 C.3ab D. ab3 C8. 下面均为Java关键字的一组是()"A. boolean,byte,long,true " "B. byte, long,true,goto" "C. goto ,Boolean,byte,true" "D. bool, long,true,auto" A9. Java语言使用的字符集是()A. ASCIIB. EBCDICC. UnicodeD. BCD C10. Java的int型变量占内存的字节是()A. 1B. 4C. 2D.与机器有关B11. 下列是合法的实型常量的是()"A. 12.4,12,12.4f,12.4F" "B. 12.0f,2e4f,12.0,6e-4" "C. 6e,12.1,24f,25d" "D. 13.6, 6e0.3,456.7d,e2" B 12. 下列说法正确的是()A. 不需定义类,就能创建对象B. 属性可以是简单变量,也可以是一个对象C. 属性必须是简单变量D. 对象中必有属性和方法 B13. "若有定义int a=2,b=4;boolean x;则执行语句x=a>b;System.out.println(x);的结果为()"B. A. 1 B. 0C. trueD. false D14. "若有定义int x=3,y;则执行语句y=(x++)+(x++)+(x++);后y=()"C. A.9 B.12C. 15D. 18 B15. "若有定义int x=3,y;则执行语句y=(++x)+(++x)+(++x);后y=()"D. A. 12 B. 18 C. 9 D. 15 D16. Java源程序编译后生成的字节码文件扩展名为()E. A. .exe B. .obj C. .java D. .class D17. 用户设置环境变量的合法格式为()A. set path to c:\jdk1.2\binB. set classpath to c:\jdk1.2\binC. set classpath=c:\jdk1.2\binD. set classpath c:\jdk1.2\bin C18. 下面不是Java移位算符的是()B. A. >>> B. <<<C. >>D. << B19. 若有a=001001,执行a>>>3;后a=()A. 0001001B. 1001010C. 1111001D. 1000001 B20. 执行15.2%5的结果()A. 非法B. 3C. 0D. 0.2 D21. 下面哪个是有效的Java标识符()A. max_numB. max-numC. 3DogNightD. (train) A22. 编译一个定义了5个类和18个方法的Java源代码文件,编译该源代码文件时会产生几个字节码文件()A. 1B. 23C. 18D. 5 D23. 下面哪个不是Java的关键字()A. doubleB. IntegerC. floatD. default B24. 下面关键字中那一个是不可用来控制对类成员的访问()A. publicB. privateC. protectedD. default D25. 下面那组是关键字()"A. abstract,object,double" "B. class,object,this" "C. class,double,this" "D. Boolean,double,this" C 26. 使用八进制、十进制和十六进制分别表示字符3正确的一组是()A. Octal …\033‟(八进制) Decimal …33‟(十进制) Hexadecimal …\u0033‟(十六进制)B. Octal …\063‟ Decimal…51‟ Hexadecimal …\0033‟ C.…063‟…3‟…\u0033‟D. …\63‟…51‟…\0033‟ C27. 把“1”放置在名叫ref的整数的高位处(该整数为ox00000001)可用代码()A. ref>>31B. ref>>=31C. ref<<31D. ref<<=31 D28. 算符&&适用于数据类型()B. A. int B. longC. doubleD. boolean D29. "设有定义int a=b,则计算表达式a+=a-=a*a 后,a为()C. " A. -60 B. 0 C. 2D. -24 A30. 若a是int型变量,计算表达式a=25/3%3 后,a为()A. 1B. 2C. 3D. 4 B31. 下面的四个选项中,均是八进制或十六进制数的选项是()"A. -10,ox8f,011" "B. oabc,-017,oxc" "C. 0010,-ox10,oxf1" "D. oa12,ox12,oxa " C32. 下列算符中优先级别最高的是()A. &B. &&C. !=D. ?: C33. JavaAPI的类被组织成几个包()A. 6B. 7C. 10D. 8 D34. Java中,byte型数组在内存中的存储形式是()A.ASCII码B. 补码C. 原码D. 反码B35. 关于main()方法说法正确的是()A. 一个类中可以没有main()B. 所有对象都必须放在main()方法中C. main()必须放在公共类中D. main()方法头的定义可以根据情况任意修改A36. "若有以下定义int k=7,x=12 ,则能使值为3的表达式()" A.x%=(k%=5)B. (x%=k)-(k%5) C. x%=k-k%5 D.x%=(k-k%5) B37. Switch(exp)语句中的exp不应是()A.字符型变量B.整型变量C.整型常量D.逻辑型常量D38. "若想连接字符字面值""Zang"",""Zoom""和""Moon"",可使用哪种形式()B." "A.""bang"",""Zoom"",""Moon"" " B. bang Zoom Moon "C. ""bang""""Zoom""""Moon"" " "D.""bang""+""Zoom""+""Moon"" " D39. 构造方法被调用是当()A. 类定义时B.使用对象的属性时C.使用对象的方法时D. 对象被创建时 D40. 把字符变量c设置为一个空格字符的方法是()"A. c=""﹍""" B. c=0 C. c=…\u0020‟ D. c='\u0000' C41. 将有三个boolean值的数组初始化为true的是()A.boolean []b=new boolean[3] "B.boolean []b={true,true,true} " "C. boolean [3]b={true,true,true}" "D.boolean []b=new boolean[3]; b={true,true,true}" B42. 表达式5&2 之值应为()A. 0B. 2C. 5D. 7 A43. 下面表达式10|2 之值应为()A. 0B. 2C. 10D. 14 C44. 下面语句System.out.println(4|7)的输出是()A. 4B. 5C. 6D. 7 D45. 在下面的语句序列中,temp的最终值为()A. 0B. 1C. 2D. 3 B46. "分析下面这行代码if(5&7>0&&5|2) Systen.out.println(""true""),选择唯一正确的说法()" A. 这行代码不能编译 B. 代码编译,无任何输出C. 代码编译,输出true D. 代码编译,输出false A 47. "关于下面的代码行int []arr={1,2,3}; for(int i=0;i<2;i++)arr[i]=0 ,那一个表达式的值为true()"A.arr[0]==0B. arr[0]==01C. arr[1]==1D. arr[2]==0 A48. 分析下面的代码行float f=3.2; int I=f; ,不正确地的答案是() A.代码不能编译B.代码编译,i被设置为3 C.第二行若改为int i=(byte)f 则可编译D. 第一行若改为float f=3.2f 则可编译B49. 下面的那一个不是Java合法标识符() A.Girl_$ B.$23 C.www12 D. 3xy D50. 下面的那个是Java的关键字() A.sizeof B.abstract C.NULL D. Boolean B51. 下面的那一项能正确生成5个空字符串() A.String a[]=new String [5] B.String 5[a] C.String [5]a D.String a[5] A52. Java程序是由什么组成的() A.类B.对象C.函数D. 包 A53. 执行一个applet,可以使用() A.java.exe B.appletviewer.exe C.Javac.exe D.javadocument.exe B54. 下列算符中优先级最低的是() A.++ B.% C.? D.& C55. 下列算符中优先级最高的是() A.+ B.instanceof C.&& D. ^ B56. 下面这行代码String [][]s=new String[10][]; 的正确陈述是() A.该行代码非法B.s 是一10行10列的数组C.s 是一包含10个一维数组的二维数组"D.s中每个元素设为"""" " C57. 下面赋值非法的是() A.long test=012 B.short s=10 C.int other=(int)true D.double d=1234.05 C58. 下面那个代表八进制数字() A.ox12 B.320 C.o32 D. 12 C59. 下列算符中,只有那一个被String对象重载() A.- B.+= C.>> D.& B60. 下列标签名中非法的是() A.here B._there C.this D. that C61. 下列表达式中合法的是() A.(true&true) B.(int myInt=0>3) C.float myFloat=40.0 D.boolean b=(boolean)99 A62. 下面不是面向对象技术特点的是() A.模块化B.封装C.继承性D. 多态性D63. Java中,一各类可以有几个父类() A.任意B.1 C.2 D. 4 B64. 使用那个关键字来定义一个接口() A.implements B.class C.extends D.interface D65. 接口中的方法被默认是什么的() A.private B.public C.protected D.package D66. 接口体中不应包含() A.常量定义B.常量赋值C.方法实现D.方法声明C67. 常量定义的修饰符为() A.final B.finally C.const D.define A68. 下列不是重载方法的特征的是() A.参数个数不同B.名相同而类型不同C.参数类型不同D.名相同且类型相同 B69. 在成员变量与局部变量重名时,若想在方法内使用成员变量,要使用关键字() A.super B.import C.this D. return C70. 若有定义如下class dog { float x; static int y;…},则下列说法中正确的是() A.x称为类变量,y为实例变量"B.x,y均为类变量" "C.x,y均为实例变量" "D. x为实例变量,y为类变量" D71. 下列不是构造方法特征的是() A.名字与类相同B.是无参考的C.是viod型D.是一种特殊方法B72. 下列说法正确的是() A.实例方法能对类变量和实例变量操作B.实例方法只能对类变量操作C.实例方法只能实例变量操作 D.类方法能对类变量和实例变量操作 A73. 下列说法错误的是() A.一个类中的实例方法可以调用其他实例方法B.静态方法可以调用实例方法C.实例方法可以调用静态方法 D.静态方法可以调用静态方法 B74. 如想限制类本身对静态成员的访问,应该() A.用final B.用private C.不使用任何关键字D.不能限制B75. 下列不对的是() A.一个实例方法可以同时为protected和Abstract B.static变量也可为final的C.static 方法可以是protected D.static方法可以是的 D76. 默认情况下,所有类能访问所有成员,除了() A.用final关键字定义的B. 用abstract定义的C.在另一个包中定义的 D.在同一个包中定义的 C77. package awt;的结果是() A.编译结果出错B.说明文件的类包含在Java 的awt包中C.说明文件的类在自定义的awt包中 D.导入自定义的awt包中的类 C78. "若有定义class A{int x,y; static float f(int a){…} float g(int x1,int x2){…}} 及A anew A();则下列用法中非法的是()" "A.A.g(3,2)" B.A.f(3) C.a1.f(4) "D.a1.g(2,5) " A79. 下列不是类的属性修饰符的是() A.public B.abstract C.private D.final C80. 类中不加任何访问权限限定的成员属于() A.default B.public C.private D.protected A81. 关于super,下面说法中错误的是() A.用来访问父类被隐藏的的成员变量B.用于调用父类中被重写的方法 C.用于定义父类 D.用于调用父类的构造函数 C82. 接口中的方法默认的访问控制方式是() A.public B.private C.protected D.default A83. 在Java编程中,什么是最基本的单元() A.对象B.类C.包D. 接口 A84. 你编译代码class MySstring extends String{} 会出现的情况是() A.成功编译B.不能编译,因为没有main方法C.不能编译,因为String是abstract类型的D.不能编译,因为String是final类型的D85. 若有下面的类定义class Bridge {Road road;} class Road{String name;} 它表示() A.“是什么”关系B.“有什么”关系C.二者都是D.二者皆不是B86. 要想使定义该类所在的包之外的类不能访问这个类,使用关键字() A.不用 B.private C.finalD.protected A87. 定义一个名为key的类,使之不能被继承,应选() A.class key{} B.native class key{} C.class key{ final;}D. final class key{} D88. 一个对象创建包括的操作中,没有下面的() A.释放内存B.对象声明C.分配内存D.调用构造方法 A89. 下面定义形式中,那一个是非法的() "A.class A{int a,b;…}" "B.class A{int i,j; i=j=10…}" C.class A{int i; float f;…} D. class A{int i=12; float f1=1.2f;…} B90. this关键字的含义是表示一个() A.指针B.当前对象C.一个类D. 一个方法B91. "若有定义如下class A{int x,x1; int f(){int a;…} int g(){int y;…}} ,则不正确的赋值为()" A.在f()中a=x B.在f()中x=a C.在f()中x=x1 D.在g()中y=a D92. 下列定义形式错误的是() A.float a[] B.float a[5] C.int a[]=new int[5] D. float []c B93. 若有定义int a[]=new int[2][3]则第1个下标的可用范围是() A.1到2 B.0到2 C.1 D. 0到1 D94. 数据下标越界,则发生异常,提示为() A.Runtime Exception B.IOException C.ArrayIndex OutOfBoond Exception D.class Cast Exception A95. 若有定义char a[]=new char[5];则a.length的值为() A.0 B.10 C.4 D. 5 D96. "若有定义String tom=""我们是学生"";则tom.length()的值是()" A.5 B.10 C.6 D. 11 A97. "若有定义String tom=""boy"";String hill=""boy"";则表达式(tom==hill)的值为()" A.1 B.true C.false D.0 B98. 调用trim方法,可以去掉字符串的那部分空格() A.前部B.后部C.全部D.前后D99. "若有定义Sting tom=""I am a good cat "";则tom.indexOf(""a"")的值为()" A.2 B.3 C.4 D. 5 A100. "若有定义Sting tom=""I am a good cat "";则tom.indexOf(""good"",2)的值为()" A.4 B.5 C.6 D. 7 D 101. "若有定义Sting to=""I am a good cat "";则to.indexOf(""a"",7)的值为()" A.7 B.13 C.14 D. 8 B102. "若有定义Sting jerry=""I love Tom"",s1;则s1=jerry.substring(2)的值为()" A.l B.love C.love Tom D. Tom C103. "若有定义Sting jerry=""I love Tom"",s1;则s1=jerry.substring(2,5)的值为()" A.lov B.love C.love Tom D. Tom A104. 调用方法时,若要进行参数的引用传递,参数类型可为() A.整型B.实型C.字符型D. 类D105. 在Java中下列关于继承的论述中,错误的是() A.继承具有传递性B.继承关系也称为“即是”(is a)关系 C.支持多继承 D.继承提高了系统的可重用性 C106. 在Java中,关于封装性的说法中,错误的是() A.是一种信息隐蔽技术B.使对象之间不可相互作用C.是受保护的内部实现 D.与类有关,封装的基本单位是对象 B107. 一个消息包含的内容,不应有() A.消息接收者B.接受对象应采用的方法 C.指示接受者做何处理D.方法的参数 C108. "若有定义:class A{ static float f(int a){…}} (设有A类对象a1),则下列说法中非法的是()" A.A.f(3) B.a1.f(4) C.a1.g(5) D. A.g(3) D109. 若声明一个类不能被继承,即不能有子类,用关键字() A.final B.finally C.abstract D. super A110. 显示低层次图片的代码应放在下列那个方法中() A.update() B.paint() C.init() D.repaint() B111. AWT提供给paint()方法的是那个类的实例() A.Thread B.Applet C.Graphics ponent C112. 借助于BorderLayout,为往容器中添加一个组件,应写代码() "p.add(BorderLayout.CENTER,cont)" "p.add(cont,BorderLayout.CENTER)" "p.add(BorderLayout.CENTER,comp)" "p.add(comp,BorderLayout.CENTER) " C113. 为在容器底端放一个按钮,不管用户如何改变尺寸,下列布局管理器那一个最简单() A.BorderLayout B.GridLayout C.FlowLayout D.GridbagLayout A114. "代码的new List (10,true);的含义是()" A.创建含10列的新列表B.创建含10行的新列表,且允许多重选择C.创建不多于10个选项的新列表 D. 创建含10行的新列表,每次选一项 B115. Graphics类有一坐标系统,其原点在() A.图形空间中心B.图形空间左下方C.图形空间左上方D.用户配置的坐标系统 A116. "main()方法中有代码:Frame f=new Frame(""My Frame""); f.sd Size(100,100); 为在屏幕上显示该对象,应加下面哪个的代码()" A.f.appear() B.f.setForeground() C.f.set Visible() D.f.enable C117. 一个Java Applet的生命周期内涉及多个方法,但下面的哪个不是() A.init() B.finalize() C.stop D.destroy() B118. Applet对象自动调用init()方法完成初始化工作,init()可被调用几次() A.3 B.2 C.1 D. 任意 A119. init()方法所做的初始化其任务中不应包括() A.设置初始状态B.装载图像C.设置参数D.跳转页面D 120. 调用repaint()方法,会出现什么情况() A.清除以前pain()方法所画的内容B.保留原来pain()所画的内容C.清除pain()以前所画的内容,再一次调用pain()方法 D.在pain()以前所画内容基础上,再一次调用pain()画新的内容C121. 结束applet的生命周期的方法中,不包括() A.stop() B.destroy() C.关闭浏览器D.close D122. 关于applet,下面说法正确的的是() A.能加载库函数B.可以读写本地计算机系统上的文件C.不能运行本地计算机上的任何程序 D. 不能和任何主机建立网络通信 C123. paint()需要一个参数,它是() A.一个位置值B.一个Graphics对象C.一个字符串D.一个高度值C 124. HTML语言的applet标签属性中,哪个不是必选的() B.CODE C.WIDTH D.HEIGHT A 125. JVM会一直运行,直到() A.main()结束B.仅剩下用户线程C.仅剩下守护线程D. (1)或(3)任一条件 C126. "为获得参数lastname ,可在applet中用代码()" "A.String s=getName(""lastname"")" "B.Strings=Parametre(""lastname"")" "C.String s=getParametre(""lastname"")" "D.String s=get(""lastname"") " C 127. 从下面的main ()的调用Java lyrics a kiss is but a kiss 中访问单词“kiss”的是() A.args[0] B.args[5] C.args[4] D. args[3] B128. 下面定义main()方法有效的是() A.public static void main(String args[]){} B.public main(String[]) C.public void main() D. public void main(args[]){} A129. main()需要一个参数,它是() A.一个整型量B.一个String对象C.一个实型量D.一个任意类的对象B 130. "从下面的main()方法Java lyrics a kiss is but a kiss 的调用中访问单词""but""的是()" A.args[3] B.args[2] C.args[0] D.args[1] A131. 在文本框中设置文本的方法是() A.setEchochar() B.getText() C.setText() D.Textfield() C132. 获取文本框的文本的方法是() A.setEchochar() B.setText() C.Textfield() D. getText() D133. 用于文本区中设置文本同时清除文本区中原有文本的方法是() A.setText(String s) B.getText() C.TextArea(String s) "D. TextArea(int x,int y)" A134. 对于文本区事件源,要获得监视器的方法是() A.addTextListener() B.TextV alueChanged() C.append(String s) D.insert(String s int x) A135. 下列监听器接口,那个不能添加到TextArea对象中() A.TextListener B.ActionListener C.MouseListener ponentListener B136. 下列那一项的实现不可以添加为TextField对象的监听器() A.ActionListener B.FocusListener C.MouseMotionListener D.WindowsListener D137. 下列说法不正确的是() A.java.awt包的类Panel是用来创建面板的B.container类是Panel类的子类C.Panel类的实例是一个容器D.容器也是一个组件B138. 那个类负责创建画布对象() A.Applet B.Container ponent D.Canvas D139. 在ScrollPane(int a)方法中,a指定滚动条的初始状态,下面除那个之外均是a可取值() A.ScrollPane.SCROLLBARS_ALWAYS B.ScrollPane.SCROLLBARS_AS_NEEDED C.ScrollPane.SCROLLBARS_NEVER D.ScrollPane.SCROLLBARS_NEEDED D140. 能从左到右,从上到下地排列组件,并且当从一行移到下一行时能使每行居中的布局管理器是() A.BorderLayout B.FlowLayout C.GridLayout D.CardLayout B141. 当把组件放置在BorderLayout的哪个区域时,该组件可以自动调整其水平方向而非垂直方向的尺寸() A.North or South B.East or West C.Center "D.North,South or Center" A142. 下列布局管理器中,哪一个会在前个组件相同行上放置组件,直到该组件超出容器的宽度,然后从新行开始,并把添加的组建居中放置() A.BorderLayout B.CardLayout C.FlowLayout D.GridbagLayout C 143. 应把组件放在BorderLayout的哪个区域时,它会自动垂直调整大小,但不水平调整() A.North or South B.East or West C.Center "D. North,South or Center" D144. 当为组件调用repaint()时,AWT包调用组件方法() A.update B.paint C.draw D. show A145. 用Java中的哪个方法来隐藏用户界面的组件() A.disable B.setVisible C.remove D.delete B146. 如想改变某组件的尺寸,可用方法() A.dimension B.resize C.area D.setSize D147. setForeground()和()setBackground()定义在哪个类中 A.Graphics B.Container ponent D.Applet C148. 若要用空标题构造选择框,应选择方法() "A.Checkbox(String s,boolean b,CheckboxGroup g)" Checkbox() "C.Checkbox(String s,boolean b)" D.Checkbox(String s) B149. 当我们在一个容器中添加了多个选择框,且使用CheckboxGroup将它们归为某一组,则在这一组中,一个时刻可以有几个选择框被选中() A.1 B.2 C.4 D. 任意 A150. "Checkbox类的方法有getstatc(),getlable()等,它们是什么的()" A.private B.public C.protected D. default B151. 选择控件(Choice)每次选择可择其中的项是() A. 1 B. 2 C. 3 D. 所有 A152. 创建了一个选择控件对象后,可得选项顺序加入到控件中的方法是() A. Choice() B. remove(int) C. getSelectItem() D. add(string) D153. 当选择了选择控件(Choice)中某个选项后,会产生事件() A. ActionEvent B. ItemEvent C. TextEvent D. 不会产生事件 B154. 使选择控件(Choice)获得监视的方法是() A. addActionListener() B. addItemListener() C. addComponentListener() D. addT extListener() B155. 选择控件(Choice)事件的接口方法是() A. actionPerformed(ActionEvent e) B. itemStateChanged(ItemEvent e) C. adjustmentV alueChanged(AdjustmentEvent e) D. textV alueChanged(TextEvent e) A156. 如果要判断是哪个选择控件(Choice)产生的事件源,可使用的方法() A. getItem(int) B. getSource C. getItemSelectable() D. getItemIndex() C157. 滚动列表(List)每次选择选项,可以选择个数是() A. 1 B. 多个 C. 所有D. 根据列表对象初始化参数确定 D158. 获得滚动列表(List)当前选项的索引,可以使用方法() A. getSelectedItem() B. getSelectedIndex() C. add(Sting) D. 不能获得索引,只能得到选项字符串B 159. 滚动列表(List)k可以产生几种事件() A. 1 B. 2 C. 3 D. 4 B160. 双击滚动列表上的选项,可产生事件是() A. ItemEvent B. ActionEvent C. FocusEvent D. KeyEvent B 161. 设置组件的背景色可用方法() A. void setBackgroundColor(Color c) B. void setForegroundColor(Color c) C. void setBackground(Color c) D. void setForeground(Color c) C162. 创建一个字体类对象,字体的式样为斜体,可使用的参数是() A. Font.PLAIN B. Font.BOLD C. Font.ITALIC D. Font.BOLD和Font.ITALIC C163. 使用方法可设置组件的位置和大小的是() "A. void setLocation(int x,int y)" "B. void setSize(int Width,int Height)" "C. void setBounds(int x,int y,int width,int height)" D. 没有这样的方法C164. 用类可以创建一个Java的窗口的是() A. Canvas B. Applet C. Window D. Frame D165. 基于Frame创建了一个窗口,该窗口() A. 立即显示 B. 不能立即显示C. 用方法SetVisible(true)显示 D. 用方法super()显示 C166. 向窗口中加菜单,具体做法是() A. 创建一个菜单条(Menubar)对象作为一个菜单B. 创建一个菜单(Menu)对象作为一个菜单C. 先创建一个菜单条(Menubar)对象,再创建一个菜单(Menu)对象,将菜单对象加入菜单条对象 D. 创建窗口时直接用方法super()设置菜单 C167. 往一个菜单中加一个菜单项,做法是() A. 将菜单项直接加到菜单条中B. 将菜单项加到一个菜单中C. 创建一个菜单时将菜单项作为参数D. 上述三种方法任一种都可以B168. 设置一个菜单项不可选择,可使用方法() A. setVisible(false) B. setEnabled(false) C. setItem(String s) D. 只要有菜单项就可选择B169. 选择一个菜单项,可产生的事件是() A. ItemEvent B. ActionEvent C. TextEvent D. ContainerEvent B。
java class文件反编译
java class文件反编译Java Class文件反编译:解密Java字节码导语:Java是一种面向对象的高级编程语言,而Java Class文件则是Java程序编译后生成的字节码文件。
但是,有时候我们需要对Java Class文件进行反编译,以便了解其源代码实现,或者进行代码审计等工作。
本文将介绍Java Class文件的反编译过程和相关工具,帮助读者更深入地理解和掌握Java程序的内部结构。
一、什么是Java Class文件?Java Class文件是Java程序编译后生成的二进制文件,它包含了Java程序的字节码指令、常量池、字段、方法等信息。
Java虚拟机(JVM)可以读取和执行Java Class文件,将其转换为可运行的机器码。
二、为什么需要反编译Java Class文件?1. 学习和理解源代码:有时候我们只有Java Class文件,但没有源代码。
通过反编译Java Class文件,可以还原出源代码,以便学习和理解程序的实现原理。
2. 代码审计和安全分析:反编译Java Class文件可以帮助我们分析程序的安全性,检查是否存在漏洞或潜在的安全风险。
3. 调试和修复问题:有时候我们需要对Java程序进行调试和修复问题,但没有源代码。
通过反编译Java Class文件,我们可以了解程序的内部结构和运行逻辑,更方便地进行调试和修复工作。
三、Java Class文件的反编译工具1. JD-GUI:JD-GUI是一款免费的Java Class文件反编译工具,可以将Java Class文件转换成可阅读的源代码。
它提供了友好的用户界面和强大的反编译功能,可以帮助我们快速还原出Java程序的源代码。
2. CFR:CFR是另一款流行的Java Class文件反编译工具,与JD-GUI相比,它提供了更高级的反编译功能。
CFR可以将Java Class 文件转换为高度优化的源代码,使得我们能够更好地理解程序的实现逻辑。
java与scala混合编译
java与scala混合编译Java和Scala是两种常用的编程语言,它们都运行在Java虚拟机(JVM)上,并且可以相互调用和混合编译。
本文将介绍Java和Scala混合编译的相关概念、优势和使用方法。
一、Java和Scala的特点Java是一种面向对象的编程语言,它具有简单、可移植、安全和强大的特点。
Java广泛应用于企业级应用开发、Android应用开发等领域。
Scala是一种多范式编程语言,它结合了面向对象编程和函数式编程的特点。
Scala具有简洁、灵活、高效和可扩展的特点,适用于大规模数据处理、并发编程等场景。
二、Java和Scala的混合编译1. 概念Java和Scala混合编译是指在同一个项目中同时使用Java和Scala 编写代码,并将它们一起编译成可执行的程序。
混合编译可以充分发挥Java和Scala各自的优势,提高开发效率和代码质量。
2. 优势(1)兼容性:Java和Scala可以无缝地相互调用,Java代码可以直接调用Scala代码,Scala代码也可以调用Java代码。
这使得项目迁移、代码重用等工作更加方便。
(2)灵活性:Java和Scala可以根据具体需求选择使用,Java适用于简单的业务逻辑,Scala适用于复杂的算法和数据处理。
混合编译可以充分发挥两者的优势,提高代码的可读性和可维护性。
(3)性能优化:Scala具有更高的抽象能力和表达能力,能够编写出更加优雅和高效的代码。
在性能敏感的场景下,可以使用Scala 编写核心代码,提升程序的性能。
3. 使用方法(1)建立项目:使用IDE或命令行工具创建一个Java项目,然后将Scala源文件添加到项目中。
(2)配置构建工具:如果使用Maven或Gradle等构建工具,需要配置相应的插件和依赖项,以支持Scala的编译和打包。
(3)编写代码:根据项目需求,使用Java和Scala分别编写代码。
Java代码和Scala代码可以在同一个包下,相互调用。
java代码动态编译
Java代码动态编译1. 简介在Java开发中,编写好的代码需要经过编译才能运行。
通常情况下,我们会使用Java的编译器将代码转换成字节码,然后再由Java虚拟机(JVM)执行。
但有时候,我们可能需要在程序运行过程中动态地编译代码,即实现Java代码动态编译。
本文将详细介绍Java代码动态编译的概念、用途和实现方式。
2. 动态编译的概念动态编译是指在程序运行过程中,将一段字符串类型的Java代码转换成可执行的字节码,并且执行该字节码。
相比于传统的静态编译,动态编译允许我们在不修改源代码的情况下,根据特定的需求生成代码并执行。
3. 动态编译的用途动态编译在某些场景下非常有用。
下面列举了几种常见的用途:3.1 插件开发动态编译可以用于插件化开发。
我们可以允许用户在程序运行时加载、卸载和更新插件,而无需重启整个应用程序。
插件以字符串的形式传入,通过动态编译生成可执行的字节码,然后被加载和执行。
3.2 动态织入动态编译还可以用于AOP(面向切面编程)。
在AOP中,我们可以在运行时根据特定规则将切面代码织入到目标代码中,实现类似于日志记录、性能监控等功能。
3.3 脚本语言支持通过动态编译,Java程序可以支持解释脚本语言,比如JavaScript、Groovy等。
这样做的好处是,程序允许用户通过脚本语言编写部分逻辑,动态地加载和执行。
3.4 运行时代码生成有时候我们需要根据特定的需求生成代码,然后立即执行。
动态编译可以满足这一需求。
通过字符串拼接生成代码,然后动态编译执行,可以减少反射等运行时开销。
4. 动态编译的实现方式在Java中,动态编译的实现方式有多种,下面介绍两种常见的方式:4.1 使用Java Compiler APIJava Compiler API允许我们在程序运行时动态地将Java代码编译为字节码。
它提供了一个接口javax.tools.JavaCompiler,通过该接口我们可以获取到Java编译器,并使用它编译代码。
eclipse java web项目反编译
文章标题:深入探讨eclipse中Java Web项目反编译的方法与重要性在当今数字化时代,软件开发已经成为不可或缺的一部分。
Java作为一种流行的编程语言,在企业级应用开发中被广泛应用。
而在Java开发过程中,反编译在项目维护和安全性检查中扮演着至关重要的角色。
本文将从深度和广度两个方面对eclipse中Java Web项目反编译的方法与重要性进行全面评估,并提供有价值的观点和理解。
一、eclipse中Java Web项目的反编译方法1. 导入反编译工具:在eclipse中,可以通过导入各种反编译工具来实现对Java Web项目的反编译。
常用的工具包括JD-GUI、Procyon 等,它们能够将.class文件转换为易于阅读的源代码,帮助开发者更好地理解和维护项目。
2. 设置反编译快捷键:在eclipse的设置中,可以为反编译工具设置快捷键,便于开发者在需要时快速进行反编译操作。
这样可以提高效率,减少开发过程中出现的问题。
3. 调试和修复:通过反编译工具,开发者可以方便地进行调试和修复工作,及时解决项目中的bug和错误。
这也是保障项目质量的关键步骤。
二、eclipse中Java Web项目反编译的重要性1. 代码安全性检查:反编译工具可以帮助开发者检查项目代码的安全性,避免出现潜在的漏洞和安全隐患。
通过查看反编译后的源代码,可以及时发现并修复可能存在的安全问题。
2. 项目维护与升级:在项目维护和升级过程中,使用反编译工具可以更好地理解现有的代码结构和逻辑,有助于进行代码重构和优化。
这对于提升项目的可维护性和可扩展性非常重要。
3. 知识学习和技术共享:通过反编译工具,开发者还可以学习他人的优秀代码和技术经验,提高自身的编程能力和水平。
也可以共享自己的代码给他人学习,促进技术交流和共同进步。
个人观点与理解对我个人而言,eclipse中Java Web项目反编译不仅是一项必需的技能,更是一种重要的态度和责任。
执行java的方法
执行java的方法执行Java的方法是指在Java程序中调用和执行特定功能的代码块。
Java是一种面向对象的编程语言,具有强大的功能和灵活的语法,可以通过定义和调用方法来实现代码的复用和功能的模块化。
本文将介绍执行Java方法的相关知识,包括方法的定义、调用和参数传递等内容。
一、方法的定义和声明在Java中,方法是一段可重复使用的代码块,用于实现特定的功能。
方法由方法名、参数列表、返回值类型和方法体组成。
方法的定义通常放在类的内部,可以被其他方法或类调用和使用。
1. 方法名:方法名是一个标识符,用于唯一标识一个方法。
方法名应该能够准确描述方法的功能,通常采用驼峰命名法,首字母小写。
2. 参数列表:参数列表是方法的输入,用于向方法传递数据。
参数列表由多个参数组成,每个参数由参数类型和参数名组成,多个参数之间用逗号分隔。
3. 返回值类型:返回值类型指定了方法返回的数据类型。
如果方法不返回任何值,则返回值类型应为void;如果方法返回某个数据类型的值,则返回值类型应为该数据类型。
4. 方法体:方法体是方法的具体实现,包含了一系列的Java语句。
方法体中的语句会按照顺序执行,从而完成特定的功能。
二、方法的调用和执行在Java程序中,可以通过方法名和参数列表来调用和执行方法。
方法的调用可以在同一个类中进行,也可以在不同的类中进行。
1. 同一个类中调用方法:在同一个类中调用方法时,可以直接使用方法名和参数列表来调用方法。
例如,假设有一个名为add的方法,用于将两个数字相加并返回结果,可以通过add(2, 3)来调用该方法。
2. 不同类中调用方法:在不同的类中调用方法时,需要创建该方法所在类的对象,并使用对象名来调用方法。
例如,假设有一个名为Calculator的类,其中有一个名为add的方法,可以通过创建Calculator对象并调用add方法来执行该方法。
三、方法的参数传递在Java中,方法的参数可以分为值传递和引用传递两种方式。
最新《JAVA语言程序设计》期末考试试题及答案(题库超级大全-应考必备)Java考试题必从中出
JAVA语言程序设计考试试题及部分答案一、单选题:(每题1分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项的标记写在题干后的括号内。
1.下列语句序列执行后,k 的值是( B )。
int m=3, n=6, k=0;while( (m++) < ( -- n) ) ++k;A) 0 B) 1 C) 2 D) 32.设i、j 为int型变量名,a 为int型数组名,以下选项中,正确的赋值语句是( B )。
A) i = i + 2 B) a[0] = 7;C) i++ - --j; D) a(0) = 66;3.Java语言的类间的继承关系是( B )。
A) 多重的B) 单重的C) 线程的D) 不能继承4.设有定义int i = 6 ;,则执行以下语句后,i 的值为( C )。
i += i - 1;A) 10 B) 121 C) 11 D) 1005.下列选项中,用于在定义子类时声明父类名的关键字是( C )。
A)interface B) package C) extends D) class6.若已定义byte[ ] x= {11,22,33,-66} ;其中0≤k≤3,则对x数组元素错误的引用是( C )。
A) x[5-3] B) x[k] C) x[k+5] D) x[0]7.下列语句序列执行后,ch1 的值是( B )。
char ch1='A',ch2='W';if(ch1 + 2 < ch2 ) ++ch1;A) 'A' B) 'B' C) 'C' D) B8.下列语句序列执行后,i 的值是( D )。
int i=8, j=16;if( i-1 > j ) i--; else j--;A) 15 B) 16 C) 7 D) 89.下列语句序列执行后,k 的值是( C )。
java一次编译到处运行的理解
java一次编译到处运行的理解
Java语言的“一次编译、到处运行”是指一份Java源代码可以在多个不同的平台上
运行,无需再次编译。
这是Java语言的重要特点之一,具有极大的灵活性和跨平台性。
这个特性是通过Java虚拟机(Java Virtual Machine,简称JVM)实现的。
JVM是Java语言的核心,它可以在不同的硬件和操作系统平台上运行Java代码。
JVM 工作过程中,先将Java源代码编译成字节码文件(.class 文件),然后通过解释器逐行
解释字节码文件指令并在计算机上执行。
这个过程可以理解为将 Java 代码翻译成通用的
机器语言,这使得 Java 代码可以在各种系统架构之间保持一致,实现一次编译到处运
行。
由于Java语言中的代码可以在没有任何特定硬件平台的情况下运行,Java程序开发
者可以在任何系统上开发并测试Java应用程序。
这使得Java程序的开发和部署非常方便。
另外,JVM也负责垃圾收集(Garbage Collection)和优化编译等任务,可以提高代码的执行效率和运行速度。
总之,一次编译到处运行是Java语言的核心特性之一,它使得Java开发者能够利用
这一平台开发运行效果不受限制的应用程序,从而更好地满足客户需求。
JAVA语言程序设计期末考试题及答案
《JAVA语言程序设计》期末考试试题及答案1(应考必备题库)一、单选择题1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( )。
A. javaB. .classC. htmlD. .exe2、设x = 1 , y = 2 , z = 3,则表达式y+=z--/++x 的值是( )。
A. 3B. 3. 5C. 4D. 53、不允许作为类及类成员的访问控制符的是( )。
A. publicB. privateC. staticD. protected4、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为( )。
A. static void method( )B. public void method( )C. final void method( )D. abstract void method( )5 给定java 代码如下,编译运行后,输出结果是()(选择一项)。
public class test {static int i;public int aMethod() {i++;return i;}public static void main (String args[]) {Test test=new Test() ;test.aMethod () ;System.out.println (test.aMethod()) ;} }a) 0 b) 1 c) 2 d) 3二、填空题1、开发与运行Java程序需要经过的三个主要步骤为编辑源程序、编译生成字节码和解释运行字节码。
2、在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode码占用2字节内存空间,这样,无论是中文字符还是英文字符,都是占用2字节内存空间。
3、设x = 2 ,则表达式( x + + )/3 的值是0 。
简述java程序编写、编译以及运行过程中的注意事项
简述java程序编写、编译以及运行过程中的注意事项java程序编写、编译以及运行过程中的注意事项一、Java程序编写注意事项1、结构清晰:在编写java程序时,应该将程序结构分解成明确的步骤,每个步骤都要有明确的功能。
这样在编写时就可以针对各个部分进行编写,不会出现代码乱堆的情况出现。
2、命名规范:为了方便阅读和理解,在编写java程序时,应当遵守java的命名规范。
例如,类名应使用大驼峰命名法,变量名应使用小驼峰命名法,常量名应全部大写并使用下划线进行分隔。
3、代码简洁:在编写java程序时,应尽量避免代码的冗余,使得程序更加简单易懂。
例如可以使用for循环来代替while循环,字符串可以使用StringBuilder 来拼接,而不是用+号来拼接,可以使用switch语句来代替if else等等。
4、格式要统一:在编写java程序时,应该将程序中的所有代码统一起来,保证代码的格式统一,这样可以使得程序更加易读,也方便程序的调试。
5、注释正确:在编写java程序时,应该将程序中的重要功能部分加上注释,使得程序的功能更加清晰,也方便以后的维护工作。
二、Java程序编译注意事项1、JDK版本正确:在编译java程序时,应确保使用的JDK版本正确,如果使用的是低版本的JDK,那么可能会出现各种版本不兼容的问题,从而导致编译失败。
2、包名正确:在编译java程序时,应确保java文件的包名正确,这样才能保证编译的正确性。
3、类名正确:在编译java程序时,应确保java文件的类名正确,这样才能保证编译的正确性。
4、语法正确:在编译java程序时,应确保java文件的语法正确,这样才能保证编译的正确性。
三、Java程序运行注意事项1、环境变量正确:在运行java程序时,应确保环境变量正确,这样才能保证程序的正常运行。
2、JVM参数正确:在运行java程序时,应确保JVM 参数正确,这样才能保证程序的正常运行。
如何编译github java源代码
编译GitHub上的Java源代码是一项重要的技能,它有助于开发人员理解开源项目的工作原理,并进行定制化开发。
下面,我们将介绍如何使用常见的工具和技术来编译GitHub上的Java源代码。
一、下载源代码1. 在GitHub上搜索并找到你感兴趣的Java开源项目。
2. 点击项目页面上的“Clone or download”按钮,复制项目的Git 仓库URL。
3. 在本地的命令行界面中,使用git clone命令将项目克隆到本地。
二、配置开发环境1. 确保你的开发环境中已经安装了Java Development Kit(JDK),并配置了JAVA_HOME环境变量。
2. 如果项目使用了Maven或Gradle等构建工具,你需要在本地安装相应的工具,并配置好对应的环境变量。
三、使用Maven编译Java源代码1. 打开命令行界面,进入到项目的根目录。
2. 执行mvn clean install命令,Maven将会下载依赖、编译源代码并打包项目。
四、使用Gradle编译Java源代码1. 打开命令行界面,进入到项目的根目录。
2. 执行gradle build命令,Gradle将会下载依赖、编译源代码并打包项目。
五、使用Ant编译Java源代码1. 确保你已经安装了Ant,并配置了ANT_HOME环境变量。
2. 在项目根目录的命令行界面中,执行ant命令,Ant将会根据build.xml文件编译源代码。
六、使用集成开发环境(IDE)编译Java源代码1. 打开你喜欢的IDE,比如IntelliJ IDEA、Eclipse等。
2. 导入项目,IDE将会自动下载依赖并编译源代码。
七、其他注意事项1. 在编译过程中可能会遇到依赖缺失、版本不兼容等问题,需要仔细阅读项目的文档和日志,进行相应的调整。
2. 如果项目包含单元测试,你可能需要在编译之前执行测试,并确保所有测试用例通过。
3. 如果你对源代码进行了修改,可以使用相同的步骤来编译并测试你的修改。
2021年初级java程序员笔试题及答案
2021年初级java程序员笔试题及答案2021年初级java程序员笔试题及答案程序员需要理解一个模块的需求,很多程序员写程序往往只关注一个功能需求,他们把性能指标全部归结到硬件,操作系统和开发环境上,而忽视了本身代码的性能考虑,性能需求指标中。
下面是我整理的关于初级java程序员笔试题及答案,希望大家认真阅读!一、选择题以下对Java语言描述不正确的是(C )A Java语言是一个完全面对对象的语言B Java是结构独立、与平台无关的语言C Java是一种编译性语言D Java是一种解释性语言以下说法正确的是(C )A Java程序文件名必须是和程序文件中定义的类型一致B Java程序文件名可以和程序文件中定义的类名不一致C Java源程序文件的扩展名必须是.javaD以上A、C说法正确,B说法不正确以下有关运行Java应用程序(Application)正确的说法是(B )A Java应用程序是由Java编译器解释执行的B Java应用程序经编译后生成的字节代码可由Java虚拟机解释执行C Java应用程序经编译后可直接在操作系统下运行D Java应用程序经编译后可直接在浏览器中运行4、以下有关标识符说法中正确的是(C )A、任何字符的组合都可以形成一个标识符B、Java的关键字也可以作为标识符使用C、标识符是以字母、下划线或$开头,后跟字母、数字、下划线或$的字符组合D、标识符是不分大小写5、以下说法正确的是(D )A、基本字符数据类型有字符和字符串两种B、字符类型占两个字节,可保存两个字符C、字符类型占两个字节,可保存一个字符D、以上说法都是错误的6、以下有关类型转变的说法错误的是(D )A、低精度类型向高精度类型转换时,不会丢失数据精度B、系统会自动进行(整型或浮点型)低精度类型数据向高精度类型数据的转换C、高精度类型数据向低精度类型数据的转换、整型和浮点型数据之间的转换,必须强制进行,有可能会引起数据丢失D、高精度类型数据向低精度类型转换时,也不会丢失数据精度,因为转换是系统进行的7、以下正确的关系表达式(D )A、xyB、x+yzC、=xD、x+y!=z8、以下正确的逻辑表达式( A)A、(x+y7)(x-y1)B、!(x+y)C、(x+y7)||(z=a)D、(x+y+z)(z=0)9、以下有关条件运算符(?:)说法正确的是( D)A、条件运算符是一个三元运算符,其格式是:表达式1?表达式2:表达式3B、格式中的"表达式1'是关系或者逻辑表达式,其值是boolean值C、若"表达式1'成立,该条件表达式取"表达式2'的值,否则取"表达式3'的值D、以上说法都正确10、在if(表达式)语句中,"表达式'的值必须是(C )A、任意整数值B、字符串C、布尔逻辑值D、非零值11、在switch(表达式)语句中,"表达式'的值必须是(D )A、整数值B、字符值C、布尔逻辑值D、整数或字符值12、下列关于for循环和while循环的说法中,正确的是(A )A、while循环能实现的操作,for循环也能实现B、while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果C、两种循环任何时候都可以替换D、两种循环结构中必须都有循环体,循环体不能为空13、下面表达式中,用来访问数组中的第一个值的是(C )A、intArray[1]B、intArray.1C、intArray[0]D、intArray.014下面的表达式中正确的是(C )String s='你好';if(s=='你好') System.out.println(true);String s='你好';if(s!='你好') System.out.println(false);String s='你好';if(s.equals('你好')) System.out.println(true);String s='你好';if(equals(s,'你好')) System.out.println(true);15String str;System.out.println(str.length());以上语句的处理结果是(A )A、编译报错B、运行结果是nullC、运行结果为0D、随机值16、执行String [ ] s=new String[10];代码后,下面结论正确的是( D)A、s[10]为''B、s[10]为nullC、s[0]未定义D、s.length为1017、构造器(B )被调用。
JAVA语言程序设计期末考试试题及答案
《JA V A语言程序设计》期末考试试题及答案1(应考必备题库)一、单选择题1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( B )。
A. javaB. .classC. htmlD. .exe2、设x = 1 , y = 2 , z = 3,则表达式y+=z--/++x 的值是( A )。
A. 3B. 3. 5C. 4D. 53、不允许作为类及类成员的访问控制符的是( C )。
A. publicB. privateC. staticD. protected4、为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程序设计基础(复习提纲及练习题
复习....参考考试题型:1.单项选择题(本大题共15小题,每小题1分,共15分)2. 判断题(10小题,每小题1分,共10分)3.填空题(本大题共10空,每个空2分,共20分)4.阅读程序,写出程序运行后的输出结果(本大题共3小题,每小题6分,共18分)5. 编程题(本大题共3小题,共37分),其中第1题:9分(位操作),第2题14(分排序或字符串处理),第3题14分(类与对象)。
涉及数组、排序、字符串处理、类和对象(实例)、位操作(手写推算步骤及最终结果,要求看样题)等。
考试涉及的相关知识点:1.java程序类型:(1)java application(需主类)、java程序、源程序、类、接口、字节码文件、包、JDK JVM javac.exe java.exe跨平台java开发步骤一二维数组等(2)java applet:java小程序(可以没有主类,是图形界面),主要用于网页(3)java script:网页或网站的“脚本”程序2.标识符和关键字:class、interface final abstract static void byte short int long float double boolean String return 异常常用的关键字(try catch finally throw throws)3.表达式:=比较运算符:> >= < <= != ==逻辑运算符:&& || !位运算符:& |~ ^ >> >>> <<instanceof ++ -- 前后关系?:算合语句s+=5 s-=5 s*=5 s/=5 int a=b=10;4.程序控制结构:顺序、选择、循环(1)单路选择结构if(){ }(2)多路选择结构if( ) {.. else ..}(3)else if 结构(4)switch (break);while(){ … }do{ …. } while( ); break continuefor( ; ; ){ … }5.面向对象的程序设计:类:class 成员变量方法成员修饰符(访问、特征)static变量成员或方法实例变量成员或方法UML图对象:Object 创造对象new方法:void 方法、非void 方法、static 方法(类方法)、非static 方法(实例方法)方法参数传递:实参形参传值传引用(数组对象接口)多态:重载重写this 、super构造方法(在类的继承中可能用到的关键字super)包:关键字import 、package继承(组合:主类main() 与继承):继承创新改造子类不能降低父类的访问级别Super、this 、上转型对象Abstract、final接口:interface(1)实现:implements 也是一种继承(包括一般类与抽象类,多实现)(2)继承:extends (与类相比的“多继承”)(3)静态块(静态初始化器) static { …}、构造块{…}、构造方法以及在类的继承和实例生成中的相互关系和执行顺序。
二级Java语言程序设计模拟试题及答案解析(2)
二级Java语言程序设计模拟试题及答案解析(2)(1/40)单项选择题第1题数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及()A.数据的存储结构B.计算方法C.数据映像D.逻辑存储下一题(2/40)单项选择题第2题软件需求分析一般应确定的是用户对软件的()。
A.功能需求B.非功能需求C.性能需求D.功能需求和非功能需求上一题下一题(3/40)单项选择题第3题下列哪个选项不是FilterInputStream的子类()A.CheckedInputStreamB.BufferedInputStreamC.PushbackInputStreamD.FileInputStream上一题下一题(4/40)单项选择题第4题面向对象程序设计有许多特性,下列不是面向对象程序设计特性的是()。
A.多态性B.静态性C.封装性D.继承上一题下一题(5/40)单项选择题第5题下列数据类型转换,必须进行强制类型转换的是()A.byte→intB.short→longC.float→doubleD.int→char上一题下一题(6/40)单项选择题第6题Java虚拟机(JVM)运行Java代码时,不会进行的操作是()。
A.加载代码B.校验代码C.编译代码D.执行代码上一题下一题(7/40)单项选择题第7题关于异常,下列说法中正确的是()。
A.一旦程序运行,异常将被创建B.为了保证程序的运行速度,要尽量避免减少异常控制C.异常是一种对象D.以上说法都不对上一题下一题(8/40)单项选择题第8题下列数据结构中,按先进后出原则组织数据的是A.线性链表B.栈C.循环链表D.顺序表上一题下一题(9/40)单项选择题第9题下列说法中错误的是()。
A.CDC是Configuration的一部分,主要支持嵌入式设备开发B.CLDC是Configuration的一部分,主要支持嵌入式设备开发C.CDC是针对32bit的CPU,内存为2MBD.CDLC针对16bit或32bit的CPU,内存为128KB或256KB 上一题下一题(10/40)单项选择题第10题下列叙述中,正确的是( )。
java中的CompileAPI入门及使用
java中的CompileAPI⼊门及使⽤介绍java5之前我们可以通过java提供的tools.jar来操作java编译器,java6提供了新的API,让我们可以更⽅便的调⽤。
包名为javax.tools。
使⽤通过⽂件编译String filePath = "D:\\Client.java";//获取java编译器JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler();//编译int result = javaCompiler.run(null, null, null, filePath);System.out.println(result);结果为0表⽰编译成功,在相同⽬录下⽣成了Client.class⽂件。
编译参数依次为1. java编译器提供参数,如果为null,以System.in代替2. 得到Java编译器的输出信息,如果为null,以System.out代替3. 接收编译器的错误信息,如果为null,以System.err代替4. ⼀个或多个Java源程式⽂件通过⾮⽂件格式编译java还提供了编译其他形式的源⽂件的功能,如内存字符串⽂本,数据库读取的⽂本。
public class JavaFileManagerMain {public static void main(String[] args) {//⽂件路径String fullQuanlifiedFileName = "D:\\Client.java";//获取编译器JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();//获取⽂件管理器参数依次为错误监听器,区域对象,编码StandardJavaFileManager fileManager =compiler.getStandardFileManager(null, null, null);//通过⽂件全路径获取要编译的⽂件对象Iterable<? extends JavaFileObject> files =fileManager.getJavaFileObjectsFromStrings(Arrays.asList(fullQuanlifiedFileName));//创建编译任务参数为错误输出流,⽂件管理器,错误处理器,编译器选项,参与编译的class,带编译的java⽂件pilationTask task = compiler.getTask(null, fileManager, null, null, null, files);//执⾏任务Boolean result = task.call();if (result) {System.out.println("Succeeded");}}}接下来实现从内存中读取待编译对象public class StringObject extends SimpleJavaFileObject {private String content = null;protected StringObject(String className, String contents) throws URISyntaxException {super(new URI(className), Kind.SOURCE);this.content = contents;}@Overridepublic CharSequence getCharContent(boolean ignoreEncodingErrors) {return content;}}public class StringClassCompilerMain {public static void main(String[] args) {JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler();StandardJavaFileManager standardJavaFileManager = javaCompiler.getStandardFileManager(null, null, null);JavaFileObject testFile = generateTest();Iterable<? extends JavaFileObject> classes = Arrays.asList(testFile);pilationTask task = javaCompiler.getTask(null, standardJavaFileManager, null, null, null, classes);if (task.call()) {System.out.println("success");} else {System.out.println("failure!");}}//通过字符串创建⼀个待编译对象private static JavaFileObject generateTest() {String contents = "package com.imooc.sourcecode.java.javacompile.test3;" +"class Test {\n" +" public static void main(String[] args) {\n" +" System.out.println(\"success\");\n" +" }\n" +"}\n";StringObject so = null;try {so = new StringObject("com.imooc.sourcecode.java.javacompile.test3.Test", contents);} catch (URISyntaxException e) {e.printStackTrace();}return so;}}结果编译成功。
单独编译反编译后的java文件
主题:单独编译反编译后的java文件内容:1. 了解编译和反编译在开始讨论单独编译反编译后的java文件之前,我们需要先了解编译和反编译的概念。
编译是将程序源代码翻译成计算机可以执行的机器代码的过程,而反编译则是将机器代码翻译回原始的源代码的过程。
在java中,编译器将源代码转换成字节码文件,而反编译器则可以将字节码文件还原成java源代码。
2. 单独编译java文件在java中,我们可以使用javac命令来编译java源文件。
为了单独编译一个java文件,我们可以在命令行中输入以下命令:```javac YourFileName.java```这将会生成一个名为YourFileName.class的字节码文件,该文件包含了编译后的可执行代码。
在需要单独编译的情况下,我们可以使用这个命令来生成相应的字节码文件。
3. 反编译java文件当我们需要查看一个java程序的源代码时,可以使用反编译工具对其进行反编译。
在java中,我们可以使用javap命令来反编译一个字节码文件,例如:```javap -c YourFileName.class```这将会输出YourFileName.class文件的反编译结果,包括类的成员变量、方法以及字节码指令等信息。
通过反编译,我们可以了解程序的具体实现细节,对于理解和调试程序非常有帮助。
4. 注意事项在单独编译和反编译java文件时,需要注意一些事项。
确保你的java 源文件没有语法错误,否则编译器将无法生成正确的字节码文件。
反编译后的源代码可能会和原始的源代码有所不同,这是因为编译器在生成字节码文件时进行了优化。
另外,反编译后得到的源代码可能会丢失一些信息,比如注释和变量名等。
在进行反编译时,应该注意到这一点并不要过分依赖反编译结果。
5. 结语通过本文的介绍,我们了解了单独编译和反编译java文件的基本方法和注意事项。
了解这些内容可以帮助我们更好地理解java程序的编译和执行过程,加深对java语言的理解和掌握。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
private static String filePath = "c:\\mytest\\src\\HelloWorld.java";
private static String binDir = "c:\\mytest\\bin";
public static void main(String[] args) {
public void run() {
processStream(proc.getInputStream());
processStream(proc.getErrorStream());
方法1:通过调用本机的javac命令来编译。
在java程序中调用javac命令可以通过调用Runtime类的exec或是ProcessBuilder类的start方法来完成,这两个类的功能基本相同,用法也比较相似,这里的例子我们就用ProcessBuilder来演示。如果是JDK1.5之前的版本请使用Runtime类完成相同的功能。
public class JavacCompile {
private static String filePath = "c:\\mytest\\src\\HelloWorld.java";
private static String binDir = "c:\\mytest\\bin";
ProcessBuilder pb = new ProcessBuilder("javac","-encoding", "UTF-8","-d", binDir, filePath);
try {
// 开始调用javac命令编译
} catch (Exception ex) {
Logger.getLogger(JavacCompile.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
private static void processStream(InputStream stderr) {
...
}
}
public class JavacCompile {
private static String filePath = "c:\\mytest\\src\\HelloWorld.java";
一般情况下对java源文件的编译均是在代码完成后使用javac编译的,不管是使用 IDE还是直接使用命令行。这里要说的情况是比较特别的,就是在代码内动态的编译一些代码。比如你想通过在某个目录下通过放置一些源代码的方式来实现对程序功能的动态扩展,那么你的程序就需要具有一种对源代码的编译、加载、运行的能力,可能就需要本文介绍的3种方法。
final Process proc = pb.start();
// 处理进程的输出,避免挂死
new Thread(new Runnable() {
public void run() {
public class HelloWorld {
public void sayHello(String in)
{
System.out.println("动态编译成功");
System.out.println("使用编译方式:" + in);
} catch (Exception ex) {
Logger.getLogger(JavacCompile.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
// 将编译参数通过数组传递到编译方法中,该函数的方法和javac的参数完成一致
File binOutDir = new File(binDir);
if (!binOutDir.exists())
{
binOutDir.mkdirs();
}
// 设置javac的编译参数,使用-encoding指定编码方式,-d并指定编译生成class文件目录
// 等待编译完成
proc.waitFor();
// 加载编译好的类,并调用相应的方法
new LoaderClassByDir(binDir).execSayHello("javac");
}
}
public class HelloWorld {
public void sayHello(String in)
{
System.out.println("动态编译成功");
System.out.println("使用编译方式:" + in);
if (!binOutDir.exists())
{
binOutDir.mkdirs();
}
// 将编译参数通过数组传递到编译方法中,该函数的方法和javac的参数完成一致
processStream(proc.getInputStream());
processStream(proc.getErrorStream());
}
}).start();
} catch (Exception ex) {
Logger.getLogger(JavacCompile.class.getName()).log(Level.SEVERE, null, ex);
}
private static String binDir = "c:\\mytest\\bin";
public static void main(String[] args) {
File binOutDir = new File(binDir);
if (!binOutDir.exists())
public static void main(String[] args) {
File binOutDir = new File(binDir);
if (!binOutDir.exists())
{
binOutDir.mkdirs();
开始之前先来点准备工作,将下面的类放到 c:\mytest\src\ 目录下,这个类我们不会在IDE中编译,而是由我们程序完成其编译。保存时使用UTF-8格式。可以直接在附件中下载这个类。
Java代码 [img]/attachments/images/302-icon_copy.gif[/img]
try {
// 开始调用javac命令编译
final Process proc = pb.start();
// 处理进程的输出,避免挂死
new Thread(new Runnable() {
pile(new String[]{"-encoding", "UTF-8","-d", binDir, filePath});
try {
// 加载编译好的类,并调用相应的方法
new LoaderClassByDir(binDir).execSayHello("sun tools");
}
}).start();
// 等待编译完成
proc.waitFor();
// 加载编译好的类,并调用相应的方法
new LoaderClassByDir(binDir).execSayHello("javac");
private static String binDir = "c:\\mytest\\bin";
public static void main(String[] args) {
File binOutDir = new File(binDir);
{
binOutDir.mkdirs();
}
// 设置javac的编译参数,使用-encoding指定编码方式,-d并指定编译生成class文件目录
ProcessBuilder pb = new ProcessBuilder("javac","-encoding", "UTF-8","-d", binDir, filePath);
方法2:使用Sun的tools.jar包时的com.sun.tools.javac.Main类完成对代码的不是标准的Java库,在使用时必须要设置这个jar的路径,使用IDE时需要显示的引入到编译路径中,不然会找不到。我们使用此类改写上面的编译类如下:
Java代码 [img]/attachments/images/302-icon_copy.gif[/img]
public class JavacCompile {
private static String filePath = "c:\\mytest\\src\\HelloWorld.java";
}
}
准备工作完成,下面就看一下我们程序的代码,这里只列出主要代码
Java代码 [img]/attachments/images/302-icon_copy.gif[/img]
public class JavacCompile {
private static void processStream(InputStream stderr) {
...
}