java第四章(上)
- 格式:ppt
- 大小:745.50 KB
- 文档页数:35
考试酷java第四章第四章1. 关于内部类,下列说法不正确的是()。
内部类不能有⾃⼰的成员⽅法和成员变量2. 有⼀个类B,下⾯为其构造⽅法的声明,正确的是()。
B(int x) {}3. 为AB类定义⼀个⽆返回值的⽅法f,使得使⽤类名就可以访问该⽅法,该⽅法头的形式为()static void f()4. 在Java语⾔中,哪⼀个包中的类是⾃动导⼊的?()/doc/63169f32b5daa58da0116c175f0e7cd184251802.html ng5. 定义外部类时不能⽤到的关键字是()。
protected6. 下列哪种类成员修饰符修饰的变量只能在本类中被访问?()private7. 定义⼀个公有double型常量PI,哪⼀条语句最好?()public final static double PI=3.14;8. 下⾯关于⽅法的说法,不正确的是()。
如果⼀个类定义了构造⽅法,也可以⽤该类的默认构造⽅法9. 下⾯关于类的说法,不正确的是()。
类就是对象10. 给出下⾯的程序代码:public class X4_1_3 {private float a;public static void m ( ){ }}如何使成员变量a被⽅法m( )访问()将private float a改为static float a11. 给出下⾯程序代码:byte[] a1, a2[];byte a3[][];byte[][] a4;下列数组操作语句中哪⼀个是不正确的?()a2 = a112. 下⾯代码运⾏后的输出结果为()。
public class X6_1_5 {public static void main(String[] args) {AB aa = new AB();AB bb;bb = aa;System.out.println(bb.equals(aa));}}class AB{ int x = 100; }true13. 设有下列数组定义语句:int a[] = {1, 2, 3};则对此语句的叙述错误的是()。
第四章1、关于内部类,下列说法不正确的就是( )。
内部类不能有自己的成员方法与成员变量2、有一个类B,下面为其构造方法的声明,正确的就是( )。
B(int x) {}3、为AB类定义一个无返回值的方法f,使得使用类名就可以访问该方法,该方法头的形式为( )static void f()4、在Java语言中,哪一个包中的类就是自动导入的?( )java、lang5、定义外部类时不能用到的关键字就是( )。
protected6、下列哪种类成员修饰符修饰的变量只能在本类中被访问?( )private7、定义一个公有double型常量PI,哪一条语句最好?( )public final static double PI=3、14;8、下面关于方法的说法,不正确的就是( )。
如果一个类定义了构造方法,也可以用该类的默认构造方法9、下面关于类的说法,不正确的就是( )。
类就就是对象10、给出下面的程序代码:public class X4_1_3 {private float a;public static void m ( ){ }}如何使成员变量a被方法m( )访问( )将private float a改为static float a11、给出下面程序代码:byte[] a1, a2[];byte a3[][];byte[][] a4;下列数组操作语句中哪一个就是不正确的?( )a2 = a112、下面代码运行后的输出结果为( )。
public class X6_1_5 {public static void main(String[] args) {AB aa = new AB();AB bb;bb = aa;System、out、println(bb、equals(aa));}}class AB{ int x = 100; }true13、设有下列数组定义语句:int a[] = {1, 2, 3};则对此语句的叙述错误的就是( )。
知识点预览函数的概念函数的语法函数的参数(形参实参)函数的返回值类型(voidreturn)函数的嵌套调用函数的递归调用函数的概念1. 什么是函数(方法过程)a) 代码冗余------->程序维护性差b) 函数、方法、过程等效函数的语法1. 形式a) 返回值类型函数名(函数参数1, 函数参数2){函数体}b) 函数的三要素:返回值类型函数名函数参数(函数声明)c) 返回值类型:运行完后,往外界返回数据d) 函数名:为所封装的代码起个名字e) 函数参数:封装的代码处理的数据往外界传入f) 函数体:经常需要重复利用的代码(函数实现)g) public static voidprint();//public static 避免类(Java)2. 使用a) 函数之间平级关系b) 定义在类中c) 避免多次书写重复代码------>解决代码冗余3. 函数使用中的注意事项a) 现实生活中例子-------->肯德基套餐b) 定义:在类代码中不能再次在其他函数中定义平级关系c) 使用了函数后程序流程变复杂(利用函数调用点进行分析)d) 使用了函数引入两种角色i. 函数提供者:封装经常需要重复使用代码的程序员(函数声明实现) ii. 函数使用者:用这个函数的人(调用)iii. 有的时候,一个人充当两种角色,有时,不同的人充当不同的角色iv. 这其中就需要函数提供者和函数调用者达成约定4. 使用函数的好处a) 提高代码的重用性b) 便于程序分工协作开发c) 便于代码的集中管理函数的参数1. 什么是函数的参数a) 函数使用者传入数据------>函数提供者b) 参数不是必需的c) 现实生活中类似场景-------->快递d) public static void print(introws, int cols ){} //rows 行cols 列形参需要传参e) 变量------>可变化的数据f) print(2, 3);//调用2,3实参--------->函数调用者真正调用传入的数据g) 合理定义形参-------->函数提供者定义函数时定义的变量2. 函数参数注意a) 函数的形式参数等同于局部变量函数的返回值1. 函数的返回值a) 示例:KFC 卖饭;包子b) 有返回值的例子------->加法运算2. void关键字3. 有返回值的函数与return关键字a) public static int add(inti, int j) {return}b) return:运算的结果返回给调用者4. return关键字的特殊应用a) return关键字的特殊用法public static void test(int i){if (i == 0){return;//return后没有任何内容//程序或者说函数到此结束,返回调用点,后面的代码不执行}System.out.println(“This is atest!”);}test(1);test(0);函数的嵌套调用1. 示例代码public staticvoid main(String[] args){System.out.println(“main 1”);test1(2);System.out.println(“main 2”);}public static void test1(int a){System.out.println(“test1” + a);test2(a);}public static void test2(intb){System.out.println(“test2” + b);}执行结果;main 1test1 2test2 2main 2函数的递归调用1. 递归调用(自己调用自己)2. 示例代码:public staticvoid main(String[] args){test();}//死递归public static void test(){System.out.pri ntln(“TestFunction”);test();}3. 处理递归------>收敛条件:满足特定条件,自己不会调用自己4. 示例代码public class Test{static int i = 3;//全局变量,在多个方法中调用public static voidmain(String[] args){test();}//有效递归public static void test(){//收敛条件if(i < 0){return;System.out.println(“Test Function”);i --;test();}}。
第四章4.3 习题解答1.问答题略.2.选择题4-1 Applet类是属于(B)包的。
A.java.awtB.java.appletC.java.iong4-2 下列关于Applet程序的描述中,错误的是(B)。
A.Applet程序的主类必须是Applet类的子类B.Applet程序的主类中应该有一个main()方法C.Applet不是完整的独立程序D.Acm的字节码文件必须嵌套在一个HTML文件中4-3 下列关于Applet程序的描述中,错误的是(D)。
A.将编辑好的Java源文件,使用javac命令生成字节码文件B.讲字节码文件嵌入HTML文件,并存放在一个WWW服务器中C.使用浏览器解释HTML文件中的标记D.使用编译器直接执行嵌套在HTML文件中的字节码文件4-4 在Applet类的主要方法中,用来实现初始化操作的是(A)。
A.init() B.stop() C.start() D.paint()4-5 下列关于HTML文件的描述,错误的是(C)。
A.HTML文件是使用一种超文本标记语言(HTML)书写的文件B.HTML文件中使用的标记通常是用一对尖括号括起来的,两个标记之间是正文内容C.HTML文件中没有单独出现的标记D.HTML中不区分大小写字母4-6 下列关于向Applet程序传递参数的描述中,错误的是(A)。
A.Applet程序可以通过命令获得外部参数B.Applet程序可以通过HTML文件获取外部参数C.使用Applet编辑的PARAM标记来实现D.Applet程序中使用getParameter()方法读取参数值4-7 下列关于字体的描述中,错误的是(C)。
A.Font类型提供了创建字体对象的方法B.字体风格(字型)使用了3个静态常量表示C.表示字型的字体风格只能单独使用,不可以组合D.字号表示字的大小,用点表示,一个点为1/72英寸4-8 下列用来获取当前颜色的方法是(B)。
import java.util.*;public class Person{private String name;private char sex;private int year,month;public Person( ){}public Person(String nm,char sx,int y,int m) {name=nm;sex=sx;year=y;month=m;}public void printPerson( ) {Calendar now=Calendar.getInstance();int age=now.get(Calendar.YEAR)-year;System.out.println("Name: "+name+",Sex: "+sex+", Age: "+age);}public static void main(String args[]){Person pe1=new Person("Tom",'m',1980,10);pe1.printPerson();}}2.public class Rectangle{double width,length,girth,area;public Rectangle(){};public Rectangle(double wd,double le) {width=wd;length=le;}public void setWidth(double wd) {width=wd;}public void setLength(double le) {length=le;}public double getWidth( ) {return width;}public double getLength( ) {return length;}public double girth(){return 2*(width+length);public double area(){return width*length;}public void printRectangle(){System.out.println("Width="+width+" ,Length="+length);}public static void main(String args[]){Rectangle re1=new Rectangle(10,20);Rectangle re2=new Rectangle();re2.setWidth(3);re2.setLength(4);re1.printRectangle();System.out.println("Girth="+re1.girth()+",Area="+re1.area());re2.printRectangle();System.out.println("Girth="+re2.girth()+",Area="+re2.area());}}3.public class Matrix{private int mx[][],m,n;public Matrix(int r,int c) {m=r;n=c;mx=new int[m][n];iniMatrix();}public Matrix(){m=3;n=3;mx=new int[3][3];iniMatrix();}public void iniMatrix(){int i,j;for(i=0;i<=m-1;i++)for(j=0;j<=n-1;j++)mx[i][j]=(int)(Math.random()*100);}public void tranMatrix(){int i,j,t;int mt[][]=new int[m][n];for(i=0;i<=m-1;i++)for(j=0;j<=n-1;j++)mt[i][j]=mx[i][j];t=m;m=n;n=t;mx=new int[m][n];for(i=0;i<=m-1;i++)for(j=0;j<=n-1;j++)mx[i][j]=mt[j][i];}public void printMatrix(){int i,j;for(i=0;i<=m-1;i++){for(j=0;j<=n-1;j++)System.out.print(" "+mx[i][j]);System.out.println();}}public void addMatrix(Matrix b) {int i,j;for(i=0;i<=m-1;i++)for(j=0;j<=n-1;j++)mx[i][j]=mx[i][j]+b.mx[i][j];}public static void main(String args[]){Matrix ma=new Matrix(4,3);Matrix mb=new Matrix(4,3);System.out.println("The matrix_A:");ma.printMatrix();System.out.println("The matrix_B:");mb.printMatrix();System.out.println("Matrix_A + Matrix_B:");ma.addMatrix(mb);ma.printMatrix();System.out.println("Transpose Matrix_B:");mb.tranMatrix();mb.printMatrix();}}4.public class Substring{public static void main(String args[]){String str1=new String("addActionListener");String str2=new String("Action");int n;n=str1.indexOf(str2);if(n>=0){System.out.println("String_2 is in String_1");System.out.println("The substring before String_2 is "+str1.substring(0,n));System.out.println("The substring behind String_2 is "+str1.substring(n+str2.length( )));}}}五、写出程序运行后的结果1.2.。
第四章习题解答4.1举例说明如何声明、创建和初始化一维数组。
声明一维数组有两种格式:数组元素类型数组名[]; 或者数组元素类型[] 数组名例如String subStr1[]; int[] aa;创建一维数组有三种方法:先声明后创建先用前面的两种方式声明数组,然后使用:数组名字=new 数组元素类型[元素个数]; 创建例如int aa[];aa[]=new int[6];在声明时创建数组元素类型[] 数组名(或者是:数组元素类型数组名[])=new 数组元素类型[元素个数];例如int aa[]=new int[6];直接赋值创建例如int aa[]={2,3,4,5,6,7};4.2举例说明如何声明、创建和初始化多维数组。
声明二维数组:类型数组名[ ][ ] 类型[ ][ ]数组名类型[ ]数组名[ ]例如:声明Sting subStr[ ][ ]; String [ ] [ ] subStr; String[ ] subStr[ ];创建(1)String subStr[ ][ ]=new String[3][5];(直接分配,平衡数组)(2)String subStr[ ][ ]=new String[3][ ];(从最高维开始对每一维分配不等长空间,非平衡数组)subStr[0]=new String[4];//第1个子数组有4个元素subStr[1]=new String[5];//第2个子数组有5个元素subStr[2]=new String[2];//第3个子数组有2个元素(3)int[ ][ ] x={{5,6,7},{8,9,10,11},{18,19,10,10},{2,98}};//直接赋值创建初始化:数组创建后,如果没有初始化,则根据类型java会自动赋予默认值。
一般用循环语句对其动态初始化,例如,以下循环给三维整型数组aa初始化为三角数组。
int a[]=new int[5];int aaa[][][]=new int [4][3][3];for (int i=0;i<a.length;i++) {a[i]=i+1;}for (int i=0;i<aaa.length;i++) {for (int j=0;j<aaa[i].length;j++) {for (int k=0;k<aaa[i][j].length;k++){aaa[i][j][k]=(i+j+1)*(k+1);}}}4.3一个数组能够存储不同类型的元素吗?答:不能4.4 编写一个java程序,形成以下形式的二维数组,并输出。
第四章面向对象程序设计目录第一节类和对象第二节定义方法第三节静态成员第四节包装类01 类和对象类的定义类的定义也称为类的声明。
类中含有两部分元素,分别是数据成员变量和成员方法。
类定义的一般格式如下。
修饰符 class 类名 [extends父类名]{修饰符类型成员变量1;修饰符类型成员变量2;……修饰符类型成员方法 1 (参数列表){方法体}……}其中,class是关键字,表明其后定义的是一个类。
含有class的这一行称为类头,后面大括号括住的部分称为类体。
class前的修饰符可以有多个,用来限定所定义的类的使用方式。
类名是用户为该类所起的名字,它必须是一个合法的标识符,并尽量遵从命名约定。
extends是关键字。
如果所定义的类是从某一个父类派生而来,那么,父类的名字要写在extends之后。
类定义中的数据成员变量可以有多个。
成员变量前面的类型是该变量的类型;类中的成员方法也可以有多个,其前面的类型是方法返回值的类型。
如果没有返回值,则写void。
方法体是要执行的真正语句。
在方法体中还可以定义该方法内使用的局部变量,这些变量只在该方法内有效。
方法的参数列表中可以含有0 个或多个参数,每个参数的前面要指明该参数的类型。
类定义中的修饰符是访问权限修饰符,包括 public、private和protected,也可以不写,表示是默认修饰符。
它们既可以用来修饰类,又可以修饰类中的成员,修饰符决定所修饰成员在程序运行时被访问的方式。
具体来说,用public修饰的成员表示是公有的,也就是它可以被其他任何对象访问。
类中限定为private的成员只能被这个类本身访问,在类外不可见。
用 protected修饰的成员是受保护的,只可以被同一包及其子类的实例对象访问。
如果不写任何修饰符,则表明是默认的,相应的成员可以被所在包中的各类访问。
类的示例使用类可以构造所需的各种类型。
例如,程序中要说明日期这个类型,它含有3个成员变量:日、月、年,分别用3个整数来表示。