java基础个人总结2

本文详细介绍了Java编程中的方法,包括返回值类型、参数传递以及方法重载的概念。接着讨论了数组的定义、初始化及其特点。此外,深入探讨了类的定义、继承、访问控制修饰符,以及对象的生命周期和构造函数的使用。文章还涵盖了静态成员、继承和多态等核心概念,强调了面向对象编程的关键特性。

六、方法

 

1、int fun(int a, int b) {return a*b;}     //返回两参数之积

2、Float fun (int a, flaot b){return (flaot) a*b;}   //返回两参数之积

3、Int fun(int a, int b){return a>b?a:b;}   //返回ab中的最大值

4、方法可以没有返回值(void),但是不能有多个返回值。

5、若一个方法如果没有返回值,则方法头中的返回值类型为void

6、形式参数:在定义函数过程的时候命名的参数。

   实在参数:在执行调用函数或过程的时候,传递给函数或过程的参数。

  形参和实参的关系:两者是在调用的时候进行结合的,通常实参会将取值传递给形参,形参取值后进行函数过程运算,然后可能将某些值经过参数或函数符号返回给调用者。

7、一个方法或一个符合语句内定义的变量不可以在方法外或者符合语句外使用,这种变量称之为局部变量

局部变量此变量的作用范围仅限于此模块。它的上下级模块此变量都不可用。
 私有变量:变量的作用范围仅限于此模块及它的下级子程序,它的上级程序不可用。变量未经语句说明,默认都是私有变量。

8、采用模块化的程序设计原则,是程序结构更为清晰、设计容易、有助于软件可靠性的提高。

 

七、方法重载

1、同一个类中多个方法具有相同的方法名,但是参数列表是不相同的,称之为方法的重载

2、区分类中重载的同名方法,要求采用不同的形式的参数列表。

3、重载的方法不能通过他们的返回值类型的不同来区分。

4、编译程序根据参数列表的不同来区分重载方法的调用。

 

八、数组

1、定义数组,需要完成三个步骤,即:(1)、声明数组 (2)、创建数组空间 (3)、初始化    例: int a[] = new int[4]

2、在java语言中,所有的数组都有一个length属性,这个属性存储了该数组元素的个数(数组长度)。

3、数组元素的下标是从0开始的,“0”表示第一个数组元素。

4、数组一定是占用连续的内存空间的。

4float类型变量不能向整型变量直接转换。

 

九、

1、1)、类是同种对象的集合和抽象

(2)、类是抽象的数据类型

(3)、类是复合数据类型

2、定义类头时,不能用到的关键字是private,可以使用classprotectedextendspublic

3、用于定义子类时声明父类名的关键字是extends

4、Implements是用于类继承接口的。

5、一个类一般是由两部分组成,即:1)、变量定义 (2)、方法定义

6、面向对象的软件开发方法:用数据和基于数据的操作封装在一起。

7、类头定义中包含了四个部分:

(1)、访问控制修饰符 2)、类名说明

(3)、父类名说明 4)、接口名说明

  其中类名说明是必不可少的。

例如:public class A {......}

             Public class A extends B {......}

   Class A extends B implements C {......}

8、Java保存的文件名必须与类名一致;
9、如果文件中只有一个类,文件名必须与类名一致;
10、一个Java文件中只能有一个public类;
11、如果文件中不止一个类,文件名必须与public类名一致;
12、如果文件中不止一个类,而且没有public类,文件名可与任一类名一致

13、定义类就是定义一种抽象类型的数据类型,它是所有具有一定共性的对象的抽象描述。

14、在一个类定义中,用变量或者属性描述对象的状态。用方法描述对象的行为。

15、一个源程序中,只能用一个public类。

16、定义在方法体中的变量可以与定义在方法体外的变量同名。

17、面向对象的程序设计中,方法的特性是:抽象、封装、继承、多态

 

十、对象

1、声明类A中的对象a static A a = new A(); 或者 A a = new A();static A a;

2、面向对象技术中的对象具有标识、状态、行为三个因素。

3、一个对象有三个生命周期:创建 、使用 、清楚。

4、使用对象之前,必须声明并创建它。

5、创建对象的运算符是:new创建的目的是给对象分配内存空间。

6、一个类对象一旦被声明创建后就可以使用,用对象名做前缀引用对象的变量和调用给它的方法。

7、通过圆点操作符(.运算符与类的对象连接,可以访问此类的成员。

 

十一、构造函数

1、类A的构造函数声明:public Aint A{i=k;} A(int x){......}

2构造函数或构造方法是一个特殊的方法,用于对类的变量进行初始化。

3、构造函数的方法名必须和类名同名。

4、(1)、类的构造函数名必须和类名相同。

2)、构造函数没有返回值

3)、构造函数可以重载

5、如果一个类中没有定义的构造函数,java编译器会自动生成一个defult(缺省的)不带参数的构造函数。如果有了构造函数,编译器就不会再自动顶一个缺省的不带参数的构造函数。

 

十二、访问控制和修饰符

1、既能作为类的修饰符,也能作为类成员的修饰符的关键字是:public

2、用于定义类成员的访问控制权的关键字:publicprivateprotected

3、可以用非私有方法给类中的private变量赋值,以便另一个类中调用这个方法给这样的私有变量赋值。

4final关键字能修饰:类、方法、属性。

5abstract关键字能修饰:类、属性。

6static关键字能修饰:方法、属性。

7、类的访问权限有两种:1)、public2)、default缺省的(即没有访问修饰符)

8、类成员(属性和方法)的访问控制权限有四种:

1)、public:所有其它类都能访问。

2)、private:只有本类中才能访问,是一种封装的体现。

3)、protected:本类、同一包中的类以及其它包中的子类都能访问。

4)、default(缺省的):本类、同一包中的类可以访问,声明时没有加修饰符,认为是friendly

 

注意:Java的访问控制是停留在编译层的,也就是它不会在.class文件中留下任何的痕迹,只在编译的时候进行访问控制的检查。其实,通过反射的手段,是可以访问任何包下任何类中的成员,例如,访问类的私有成员也是可能的。

9、用static关键字修饰静态方法和静态变量。

10、静态属性和静态方法不是类的一个具体对象,它是类的所有对象公有的。

11static(静态)变量可以是private变量。

12、使用静态成员可以用类名或对象名做前缀。

13static(静态)变量不能处理非static成员,但是非static方法可以处理static成员。

14static方法中不能引用this,但是非static方法中可以引用this

15、类的私有属性和私有方法都不能被其子类直接访问。

 

十三、继承、覆盖

1、在java语言中,类之间的继承关系是单重的。

2java中的接口是支持多继承的。但是java中的类不可以有多个直接父类。

      抽象类也可以有子类。

3、子类的构造函数必须通过super关键字调用父类的构造函数

4、子类可以继承父类的非私有成员,构造函数也能被继承和重载

5、如果子类中的某个变量的变量名和它的父类中的某个变量完全一样,则成子类中的这个变量隐藏了父类的同名变量。

6、属性的隐藏式指子类从新定义从父类继承来的同名变量或属性

7、如果子类中的某个方法的名字返回值类型参数列表与它的父类中的某个方法完全一样,则称子类中的这个方法覆盖了父类的同名方法。

8、抽象、封装、继承、多态java语言的四大特性。

9、实现软件的重用,在java语言中主要利用java封装和多态技术。

10、Java仅支持类间的单冲继承。

11、子类的成员变量可以与其父类的成员变量同名。

12、方法的覆盖:子类重新定义继承自父类的同名方法,使之实现与父类方法不同的功能;方法的覆盖要求子类方法头定义必须与父类方法定义完全一样。

13、一个子类覆盖其父类的同名方法,必须方法名、返回值类型和参数列表都是相同的。

14、子类时通过super关键字引用被它隐藏的父类属性和调用被它覆盖了的父类的方法

15、子类的对象可以直接向其父类对象赋值,但是父类的对象不能直接向子类的对象赋值。子类的对象一定是父类的对象。

16、Java语言中定义接口的关键字interface;接口的继承是使用extends实现的;接口支持是多继承

17、Java中一个(父)类可以有多个子类,但是一个子类不可以有多个父类。

18、保留字this表示当前对象本身。

 

十四、多态和接口

1、定义接口的关键字是interface

2、实现接口的关键字是implement

3、抽象方法中只有方法头,没有方法。

4、Java语言的接口是特殊的类,其中包含静态变量(static)和抽象方法(abstract)。

5、接口中所有的属性均为publicstaticfinal的。

6、抽象方法是可以被继承的。

7、抽象方法不仅存在于抽象类中,而且也可以存在接口中。

8、声明为final的方法不可以在子类中重新定义。

9、使用final关键字定义最终类和最终方法。

10、1)、最终类不能做为父类。

 2)、最终方法不能被继承。

 3)、最终方法不一定只能存在最终类中。

11、声明为staticprivate的方法实际上是final

12、接口中的方法均为抽象方法。

13、接口中的所有方法均为public

14、Abstractfinal不能同时修饰一个类。

 

一、单选题(30分) 1.Java语言是( )。 A.面向问题的解释型高级编程语言 B.面向机器的低级编程语言 C.面向过程的编译型高级编程语言 D.面向对象的解释型高级编程语言 2.下列的变量定义中,错误的是( )。 A) int i; B) int i=Integer.MAX_VALUE; C) static int i=100; D) int 123_$; 3.以下的变量定义语句中,合法的是( )。 A) float $_*5= 3.4F; B) byte b1= 15678; C) double a =Double. MAX_VALUE; D) int _abc_ = 3721L; 4.以下字符常量中不合法的是( )。 A) '|' B) '\'' C) "\n" D) '我' 5.若以下变量均已正确定义并赋值,下面符合Java语言语法的语句是( )。 A) b = a!=7 ; B) a = 7 + b + c=9; C) i=12.3* % 4; D) a = a + 7 = c + b; 6.下列程序段执行后t5的结果是( )。 int t1 = 9, t2 = 11, t3=8; int t4,t5; t4 = t1 > t2 ? t1 : t2+ t1; t5 = t4 > t3 ? t4 : t3; A) 8 B) 20 C) 11 D) 9 7.设 a, b, c, d 均为 int 型的变量,并已赋值,下列表达式的结果属于非逻辑值的 是( )。 A) a!=b & c%d =c+d 8.执行下列程序段后,b, x, y的值分别是( )。 int x=6,y=8; boolean b; b=x>y&&++x==--y; A) true , 6, 8 B) false , 7, 7 C) true, 7, 7 D) false, 6, 8 9.以下由do-while语句构成的循环执行的次数是( )。 int k = 0; do { ++k; }while ( k j||m<k--) k++; else k--; A) 12 B)11 C) 10 D) 9 12.下列语句序列执行后,k的值是( )。 int j=8, k=15; for( int i=2; i!=j; i++ ) { j-=2; k++; } A) 18 B) 15 C) 16 D) 17 13.下列语句序列执行后,j 的值是( )。 int j=3, i=2; while( --i!=i/j ) j=j+2; A) 2 B) 4 C) 6 D) 5 14.下列语句序列执行后,k 的值是( )。 int x=6, y=10, k=5; switch( x%y ) { case 0: k=x*y; case 6: k=x/y; case 12: k=x-y; default: k=x*y-x; } A) 60 B) 5 C) 0 D) 54 15.下列语句序列执行后,a的值是( )。 int a=13; a%=a/5; A) 3 B) 13 C) 169 D) 1 16. 既能作为类的修饰符, 也能作为类成员的修饰符的是( )。 A) public B) extends C) Float D) static 17.下列选项中,用于定义接口的关键字是( )。 A)import B) implements C) interface D) protected 18.下列类头定义中,错误的是( )。 A) class x { .... } B) public x extends y { .... } C) public class x extends y { .... } D) class x extends y implements y1 { .... } 19.下列选项中,用于在定义类头时声明父类名的关键字是( )。 A)return B) interface C) extends D) class 20.设 i,j 为类 x 中定义的 double 型变量名,下列 x 类的构造函数中不正确的是( )。 A) double x(double k ){ i=k; return i; } B) x(double m, double n ){ i=m; j=n; } C) x( ){i=0;j=0 } D) x(double k ){ i=k; } 21.下列方法定义中,不正确的是( )。 A) public int x( ){ ... } B) public static int x( double y ){ ... } C) void x( double d ) { ... } D) public static x( double a ){ ... } 22.能从循环语句的循环体中跳出的语句是( )。 A) for 语句 B) break 语句 C) while 语句 D) continue语句 23. 若有循环: int x=5,y=20; do{ y-=x; x++; }while(++x<--y);则循环体将被执行( )。 A.0次 B.1次 C.2次 D.3次 24. 定义类头时,不可能用到的关键字是( )。 A) private B)class C)extends D)implements 25.在一个应用程序中有如下定义:int a[]={1,2,3,4,5,6,7,8,9,10};,为了打印输出数组a的最后一个元素,下面正确的代码是( )。 A) System.out.println(a[10]); B) System.out.println(a[9]); C) System.out.println(a[a.length]); D) System.out.println(a(8)); 26.若一个类中对某个方法进行了重载,能够区分这些重载方法的手段是 ( )。 A)它们的返回值类型的不同 B)它们的名称的不同 C) 它们的参数表的不同 D) 它们的修饰符不同 27.下面是有关子类继承父类构造函数的描述,其中正确的是( )。 A) 创建子类的对象时,先调用子类自己的构造函数,然后调用父类的构造函数。 B) 子类无条件地继承父类不含参数的构造函数。 C) 子类必须通过super关键字调用父类的构造函数。 D) 子类无法继承父类的构造函数。 28.下面说法正确的是( )。 A) final 可修饰类、属性、方法。 B) abstract可修饰类、属性、方法。 C) 定义抽象方法需有方法的返回类型、名称、参数列表和方法体。 D) 用final修饰的变量,在程序中可对这个变量的值进行更改。 29.选择排序的思想是,将数据序列划分为两个子列,一个子列是排好序的,另一个是尚未排序的。现若想将数据序列由小到大排序,则每次放到有序子列尾部位置的元素,应从无序序列中选择( )。 A)最大的 B)最小的 C)任意的 D)头上的 30.若想将数据序列使用插入排序算法由小到大排序,则每次放到有序子列合适位置上的元素,应从无序序列中选择( )。 A) 固定位置的 B)最小的 C)任意的 D) 最大的 二、填空题(每小题1.5分,共15分) 。 1.声明并创建类MyClass的一个对象,其名称为obj,可通过以下语句实现:________________。 2..设 x, y,max,min 均为 int 型变量, x、y 已赋值。用三目条件运算符,求变量 x 、y的最大值和最小值,并分别赋给变量 max 和min, 这两个赋值语句分别是 _________和________。 3.结构化程序设计的三种基本流程控制结构是:_____________、 _____________、__________。 4. 若a,b为int型变量且已分别赋值为2,4。表达式!(++a!=b--)的值是_________ 。 5.在Java语言中,将后缀名为_____的源代码编译后形成后缀名为______的字节码文件。 6.设有整型数组定义:int a[]=new int[8]; ,则a.length的值为_____。 7.栈是一种先进____________的线性数据结构,而队列是先进_________的线性数据结构。 8.如果子类中的某个方法的________、___________和___________与它的父类中的某个方法完全一样,则称子类中的这个方法覆盖了父类的同名方法。 9.若a,b为int型变量且已分别赋值为2,6。表达式(a++)+(++b) +a*b的值是________ 。 10.定义数组,需要完成以下三个步骤,即:___________、________和_____________ 。 三、判断题( 每小题1分,共15分 ) 1.类头定义包含的四个部分分别为:访问控制修饰符、类名说明、父类名说明和接口名的说明,它们中的任何一个都是不能缺少的。 2.在 Applet 的坐标系中,(0,0) 代表输出窗口左上角的象素点。 3.应用程序一定要有main()方法,小程序一定要继承于Applet 类。 4.java语言中的逻辑变量可以和整型变量相互强制转换。 5.面向对象的软件开发方法用类把数据和基于数据的操作封装在一起,并且类之间可以存在继承关系。 6.方法可以没有返回值,或有一个返回值,也可以有多个返回值。 7.一个类中用private 修饰符修饰的属性成员,可被该类的方法和它的子类的方法访问。 8.构造函数能继承,也能被重载。 9.Java 源程序的文件名必须和公共类的类名相同。 10.双精度数强制转换成单精度数后,其数值精度会提高。 11. 队列、链表、堆栈和树都是线性数据结构。 12.属性的隐藏是指子类重新定义从父类继承来的同名变量。 13.用static修饰的方法称为静态方法,它不属于类的一个具体对象,而是整个类的类方法。 14.java语言中的接口可以继承,一个接口通过关键字extends可以继承另一个接口。 15.声明为final的方法不能在子类中重载。 四、程序填空( 每空2分,共20分 ) 1.下面是一个java应用程序(Application),它的功能是在屏幕上输出26个英文字母,其中每个字母相隔一个制表符,请完成程序。 public _____ Class1 { public static void main( String args[] ) { char c='a'; for (int i=1;i<=26;i++) { System.out.print(______); } } } 2.下面程序的功能为计算数组各元素的和,请完成程序。 import java.awt.Graphics; import java.applet.Applet; public class SumOfArray _______ Applet { public void paint( Graphics g ) { int a[] = { 1, 3, 5, 7, 9, 10 }; int total=0; for ( int i = 0; i < a.length; i++ ) total+=_____________; g.drawString( "Total of array elements: " + total, 25, 25 ); } } 3. 下面的java小应用程序实现的功能是从文本域中输入你的名字"***",回车后在 Applet中显示"***,你好!" ,请完成程序。 import java.awt.*; import java.applet.*; import java.awt.event.*; public class Applet1 extends Applet implements ActionListener { Label aa; TextField t1; String s=" "; public void init() { aa=new Label("请输入你的名字:"); add(aa); t1=___________; add(t1); t1.addActionListener(this); } public void paint(Graphics g) { g.drawString(s,20,100); } public void actionPerformed(ActionEvent e) { s=_________; repaint(); } } 4. 下面是求阶乘的递归算法,方法的返回值类型为long, 请完成程序。 ______ Factorial(long n) { if(ny?x:y; max_value=temp1>z?temp1:z; return max_value; } } 五、简答题( 每1问2分,共20分 ) 1.阅读下面的程序,回答以下问题.(6分) import java.awt.*; import java.applet.*; import java.awt.event.*; public class Applet1 extends Applet implements ActionListener { Label aa; TextField t1; int i=0; public void init() { aa=new Label("请输入一个整数:"); add(aa); t1=new TextField(10); add(t1); t1.addActionListener(this); } public void paint(Graphics g) { g.drawString("a="+( ++i*--i),20,60); g.drawString("i="+( i),20,80); } public void actionPerformed(ActionEvent e) { i=Integer.parseInt(t1.getText());//转化为整数 repaint(); } } 问题: 1)程序开头的 import java.applet.* ; 的含义是什么? 2)ActionListener是类还是接口? 程序中哪个方法是ActionListener中的方法,其功能为何? 3)若在文本域中输入6并回车,程序输出什么? 2.阅读程序,回答以下问题.(6分) public class InheritTest1 { public static void main (String[] args) { A aa; B bb; aa=new A( ); bb=new B( ); aa.show( ); bb.show(); } } //A.java public class A { int a=1; double d=2.0; void show( ) { System.out.println("Class A: "+"\ta="+a +"\td="+d); } } //B.java public class B extends A { float a=3.0f; String d="Java program."; int b=4; void show( ) { System.out.println("Class A: "+"\ta="+super.a +"\td="+super.d); super.show( ); System.out.println("Class B: "+"\ta="+a +"\td="+d+"\tb="+b); } } 问题: 1) 这是哪一类java程序? 2) 类A和类B是什么关系? 3) 按程序输出的格式写出程序运行后的结果. 3.阅读下面的程序段,回答以下问题.(4分) if ( x < 5 ) System.out.print(" one "); else { if ( y < 5 ) System.out.print(" two "); else System.out.println(" three "); } 问题: 1)若执行前 x=6, y=8,该程序段输出是什么? 2)若执行前 x=1, y=8,该程序段输出是什么? 4.现有一数据序列为:50 88 6 93 24 18 1 128 87 66 ,请写出使用选择排 序方法进行升序排序的第2趟和第5趟的结果序列。(4分)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值