第一章Java语言概述2.“java编译器将源文件编译为的字节码文件是机器码”这句话正确吗?答:不正确3.java应用程序的主类必须含有怎样的方法?答:含有main方法4。“java应用程序必须有一个类是public类”这句话正确吗?答;不正确,只能有一个public类5。“javaApplet程序的主类必须是public类”这句话正确吗?答:正确,因为javaApplet主类必须是Applet类的子类并且是public的类6。请叙述java源程序的命名规则。答:与public的类同名。7。源文件生成的字节码文件在运行时都加载到内存中吗?答:非也,动态随需要运行才加载。8.面向对象的程序设计语言有那些基本特征?答:封装;继承;多态性。9.在Java程序中有多个类文件时,用Java命令应该运行那个类?答:具有main方法的类第二章基本数据类型和数组4。下列哪些语句是错的?Intx=120;Byteb=120;b=x;答:B=x;错应为b=(byte)x5。下列哪些语句是错的?答:y=d;错,应y=(float)d6。下列两个语句是等价的吗?Charx=97;Charx=‘a’;答:是等价的。7。下列system.out.printf语句输出结果是什么?Inta=97;Byteb1=(byte)128;Byteb2=(byte)(-129);System.out.printf(“%c,%d,%d”,a,b1,b2);如果输出语句改为:System.out.printf(“%d,%d,%d”,a,b1,b2);输出什么?答:输出a,-128,127修改后输出97,-128,1278.数组是基本数据类型吗?怎样获取数组的长度?答:不是基本数据类型,是复合数据类型。可以通过:数组名.length的方法获得数组长度9。假设有两个int类型数组:Int[]a=newint[10];Int[]b=newint[8];b=a;A[0]=100;B[0]的值一定是100吗?答;一定,因为a数组与b数组引用相同。10。下列两个语句的作用等价吗?Int[]a={1,2,3,4,5,6,7,8};Int[]a=newint[8];答:不等价,前者有初值,后者指分配空间。初值数组元素为011.有语句:int[]a={1,2,3},b={4,5};a=b;求a[0]=?b[1]=?为什么?答:a[0]=4;b[1]=5因为有相同的引用,同指向b[].12.Java语言使用_________编码,每个字符占___________字节________byte位Unicode216第三章运算符、表达式与语句1。下列语句输出的结果是什么?Inta=100,x,y;X=++a;Y=a--System.out.printf(“%d,%d,%d”,x,y,a);答:101,101,1002。下列语句那些有错误?Intx=0;X=5.0/2;Floaty=12.5F;y=5.0/2;答:x=5.0/2;错。3。下列语句那些有错?Bytex=32;Charc=‘a’;Intn=c-x;c=c-x;答:c=c-x;错应为int类型。4下列语句正确的是A.表达式“12+5634”的值是trueB.表达式“12+56||34”是非法表达式C.表达式“x+y=12”是非法表达式D.表达式“12+5634”的值是13答:(A,C)5。对于整数m,m1的结果一定是2m吗?答:不一定,高位有损失时,不是2m6.对于两个int整形变量Intm=120,n=240;那么m^m=?;m^n^n=?答:m^m=0;m^n^n=1207.下列System.out.printf语句输出的结果是什么?Intx=10,y=10,z=10;If(x9){y=100;Z=200;}Elsey=-100;z=-200;System.out.printf(“%d,%d,%d”,x,y,z);输出:10,100,-2008.下列for语句输出结果是什么?For(inti=1;i=4;i++){Switch(i){Case1:System.out.printf(“%c”,’a’);Case2:System.out.printf(“%c”,’b’);Break;Case3:System.out.printf(“%c”,’c’);Case4:System.out.printf(“%c”,’d’);Break;}}输出:a,b,b,c,d,d9.下列System.out.printf语句输出的结果是什么?Chara[]={‘a’,’b’,’c’,’d’,’e’};For(i=0;i=a.length/2;i++){charc=a[i];a[i]=a[a.length-(i+1)];a[a.length-(i+1)]=c;}System.out.printf(“%c%c%c%c%c”a[0],a[1],a[2],a[3],a[4]);输出:e,d,c,b,a10.下列System.out.printf语句输出的结果是什么?inta[]={3,4,1,2,-6};for(inti=0;ia.lemgth;i++){for(intj=i+1;ja.length;j++){if(a[j]a[i]){Intn=a[j];a[j]=a[i];a[i]=n;}}}System.out.printf(“%d,%d,%d,%d,%d”,a[0],a[1],a[2],a[3],a[4]);输出:-6,1,2,3,411.publicclassTick{publicstaticvoidmain(Stringargs[]){inta[]={3,4,1,2,-6};for(inti=0;ia.length;i++){for(intj=i+1;ja.length;j++){if(a[j]a[i]){intn=a[j];a[j]=a[i];a[i]=n;}}}System.out.printf(%d,%d,%d,%d,%d,a[0],a[1],a[2],a[3],a[4]);}}第四章类与对象1.在声明类时,类名应遵循哪些习惯?答:首字母大写,望名知意2.类体内容有哪两种重要成员?答:成员变量,和成员方法。3。实例方法可以操作类变量吗?类方法可以操作实例变量吗?答:实例方法可以操作类变量。而类方法不可以操作实例变量。4.当类的字节码加载到内存时,类变量就一定分配了内存空间吗?答:实例成员变量不分配内存,而类变量一定分配内存。5.类的实例变量在什么时候分配内存?答:声明之后,在用new关键字创建实例的时候才分配内存。6.一个类的类变量被该类创建的所有对象共享吗?答:共享7.不同对象的实例变量分配的内存地址一定不同吗?答:当出现引用赋值语句时两个实例变量的内存地址相同。8.什么叫方法的重载?构造方法可以重载吗?答:方法的重载是指一个类中可以有多个方法具有相同的名字,但这些方法的参数不同,或者参数的个数不同,或者参数的类型不同。构造方法可以重载。9.请阐述为什么类方法不能调用实例方法?答:对于类方法在该类加到内存时就分配了相应的入口地址,所以即使该类未创建对象,也可以通过类名调用类方法。而这时在类对象创建之前,实例方法还没有入口地址。还不知道一个方法从何处开始执行,当然不能调用。10.请阐述,为什么类方法中不能操作实例成员变量?答:对于类方法在该类加到内存时就分配了相应的入口地址,所以即使该类未创建对象,也可以通过类名调用类方法。而这时在类创建之前,实例成员变量还没有分配内存空间。没内存空间当然无法操作。11.实例方法可以用类名直接调用吗?答:不能,因为实例方法,用new创佳对象后才分配入口地址,而类名,一经声明就分配类名地址。而这时对象创建之前实例方法还没有入口地址。实例方法表现实例的功能,或改变实例变量。用类调用改变那个实例的实例变量,表现那个实例的功能,不明确。12.关键字this可以出现在构造方法中吗?可以出现在实例方法中吗?可以出现在类方法中吗?答:可以出现在构造方法中,代表该类构造方法所创造出的对象。可以出现在实例方法中,代表使用该方法的当前对象。This不能出现在类方法中,因为类方法是通过类名调用的。13.源文件声明编写的类一定在同一个包中吗?答:不一定,当不在同一包中时,可用import语句将其所在的包引入该源文件中。14.“importjava.awt.*”与“importjava.awt.Button”有什么不同?答:前者引入了awt包中的所有类,后者只引入了Button一个类。15.程序中使用了“importjava.util.*;”程序运行时,是要加载java.util包中的全部类到内存吗?答:不,只加载本程序用到的类到内存中,因为java程序是动态加载,字节码类文件。16.有哪几种访问权限修饰符?说出一种的作用。答:访问权限修饰符有public,private,protected.Private作用是只允许本类的对象访问。17.怎样反编译一个类?答:使用SDK提供的反编译器javap.exe文件可以实现将字节码文件反编译为源码文件。可查看源码中public方法和public成员变量的名字。如加入参数-private则可列出其全部的成员方法和成员变量。如:Javap–privatejava.awt.Button则可以列出Button类中全部的方法和成员变量。18.下面程序中那个语句是错的?classA{privatefloatweight;//weight被修饰为private的float型变量。publicfloatf(floata,floatb)//方法f是public方法。{returna;}}publicclassB{voidg(){Aa=newA();a.weight=23f;a.f(3,4);}}答:a.weight=23f;错1.编写一个类,该类创建的对象可以计算等差数列的和。解:classDengCha{intstart,d;DengCha(){}DengCha(intstart,intd){this.start=start;this.d=d;}voidsetStart(ints){start=s;}voidsetD(intd){this.d=d;}intgetSum(intn){intsum=0,i=1;while(i=n){sum=sum+start;start=start+d;i++;}returnsum;}}publicclassZuoYe04_1{publicstaticvoidmain(Stringargs[]){DengChashulie=newDengCha(2,3);System.out.println(shulie.getSum(100));shulie.setStart(10);shulie.setD(5);System.out.println(shulie.getSum(9));DengChaarithmetical=newDengCha();ScannerReader=newScanner(System.in);System.out.println(请输入等差数列开始值);arithmetical.start=Reader.nextInt();System.out.println(请输入等差数列的差值);arithmetical.d=Reader.nextInt();System.out.println(请输入等差数列求和的个数);intn=Reader.nextInt();System.out.println(n+个数的和是+arithmetical.getSum(n));}}3.编写一个类,该类封装了一元二次方程的属性和功能,即该类有刻画方程系数的3个成员变量和求根的方法。要求:该类所有对象共享常数项。classSquareEquation{doublea,b;staticdoublec;doubleroot1,root2;booleanbo