第一部分 Java的类
1、请解释Java语言的跨平台特性。
Java的跨平台特性也被称为可移植性。他的意思就是如果用Java语言编写一个应用,那么就可以在不同平台上运行,而不需要为不同平台单独运行开发。之所以能实现跨平台的特性。主要得益于Java虚拟机(JVM),JVM解释器在运行Java应用时根据当前平台进行解释,解释成符合当前平台规范的机器码,所以可以实现同样的应用在不同平台上都能运行。
2、请列举JAVA语言的主要特点
JAVA语言有很多特点,主要包括①跨平台性:一个应用可以不经过修改直接运行到不同的平台上。②面向对象:JAVA语言是一门面向对面的语言,可以使用对象的属性和行为,可以使用面向对象的思想进行分析设计,并实现整个应用。③解释执行JAVA应用时,JVM中的解释器将解释类文件,生成符合当前平台的字节码。④自动回收:JAVA应用中的垃圾回收是自动进行的,JVM中的后台线程将监视内存中数据的使用,当内存中的数据不再被引用时,将被作为垃圾回收,而不需要程序员动手回收。
3.请说明一个JAVA类中主要包含哪几个元素?并说明每种元素的作用。
JAVA类中主要包含属性、方法、构造方法、块以及内部类。属性用来定义对象的数据;方法用来定义对象的行为;构造方法可以用来创建对象;块能够用来在类加载时执行操作或者在每次实例化前执行通用操作;内部类作为类的一个成员存在,能够访问外部类的属性和方法。
4、请说明构造方法的作用和特征
构造方法的作用是用来创建对象,使用new关键字调用。 构造方法的名字必须与类的名字相同,并且大小写敏感,同时构造方法不能声明返回值类型,可以使用任意一种访问修饰符,但是不能使用其他修饰符进行修饰,如static、final、abstract等修饰符都可以修饰构造方法。
5、什么事方法重载(overload)?
方法重载指的是在一个类中可以声明多个相同名字的方法,而方法的形式参数有区别。调用这些同名的方法时,JVM会根据实际参数的不同绑定到不同的方法。
6、请列举Java语言中的权限访问修饰符,并说明每种权限的含义。
Java语言中有四种权限访问修饰符,即public、protected、同包以及private.
public表示公共权限,即任何包中都可以访问:protected表示受保护权限,即同包中可以访问,不同包中的子类可以访问:同包权限是默认权限,即不显示指明权限修饰符的
时候就是同包权限,表示只有同包中可以访问:private是私有权限,表示只能在本类中访问。
7、请列举Java语言中的八种基本数据类型,并说明每种数据类型的含义及长度。
Java语言的八种基本数据类型有:byte字节型,8位长度:short短整型,16位长度,int整型,32位长度:long长整型,64位长度:float单精度浮点型。32位长度:double双精度浮点型,64位长度:char字符型,16位长度:boolean型,表示逻辑值,有true和false两个值,分别表示真和假。
8.什么叫引用类型,引用类型和基本数据类型有什么区别?
Java语言中除了基本数据类型之外的类型,都称为引用类型。引用类型就是类的类型,所有的对象都是引用类型,包括数组对象。
引用类型必须使用new调用构造方法进行赋值,引用类型的变量拥有自己的属性和方法,可以使用圆点调用自己的属性和方法。基本数据类型直接使用=号进行赋值,且没有自己的属性和方法,往往都在声明属性或方法时使用。
9.对于String对象,可以使用“=”赋值,也可以使用new关键字赋值,两种方式有什么区别?
使用“=”赋值不一定每次都创建一个新的字符串,而是从“字符串实例池”中查找字符串。使用new进行赋值,则每次都创建一个新的字符串。
10.String类是一个“不可变类”,请解释“不可变类”的含义。
所谓的不可变类,就是当字符串初始化后,就不能够被改变。
11.String类和StringBuffer类有什么区别?
String类是不可变类,即字符串值一旦初始化后就不可能改变。StringBuffer是可变字符串类,类似String的缓冲区,可以修改字符串的值。
12.StringBuffer和StringBuilder类有什么区别?
StringBuffer是线程安全的字符串缓冲,而StringBuilder不是线程安全的。
13.包装器类型包括哪些类,有什么作用?
包装类器包括Byte、Short、Integer、Long、Float、Double、Character、Boolean等类,主要用来对byte、short、integer、long、float、double、character、boolean这八种基本数据类型进行包装,使其成为引用类型。
14. 请说明Java语言中的值传递规则。
基本数据类型传递的是值,引用类型传递的是引用,即虚地址。
15.使用static修饰属性或方法后,属性和方法有什么特征?
static修饰属性或方法后,属性和方法不在属于某个特定的对象,成为类对象,被所有此类的实例所共享,在类加载时就被初始化。Static修饰的属性或方法,可以直接使用类名调用,而不用先实例化对象再调用。
16.使用final修饰属性后,属性有什么特征? final修饰属性后,属性就成为一个常量。常量只要被赋值,就不能被改变。
17.请说明操作符==的作用。
==可以用来比较基本类型或者引用类型。比较基本类型时,==用来比较二进制的值,比较引用类型时,用来比较对象的虚地址。
18请说明&&与&的区别和联系
&&会发生短路问题,当第一个表达式的值为false时,将直接返回结果为false而不会判断第二个表达式的值。而&不会发生短路问题,即使第一个表达式的值是false,会判断第二个表达式的值。
19. break语句能在什么场景使用。 break语句可以再循环体中使用,也可以在switch的case语句中使用。
20.for循环中的break语句和continue语句的使用。
break可以用来中断循环,continue可以用来继续下一次循环。
21 请说明一个JAVA类中主要包含哪几个元素并说明每种元素的作用。
JAVA类中主要包含属性、方法、构造方法、块以及内部类。属性用来定义对象的数据,方法用来定义对象的行为,构造方法可以用来创建对象,块能够用来在类加载时执行操作或者在每次实例化前执行通用操作,内部类作为类的一个成员存在,能够访问外部类的属性和方法。
第二部分 类之间的关系
1、用代码表示A类关联B类的情况。
Class A{
Private B b;
Public void setB(B b){ This.b=b; } }
2、请说明Java语言中数组的基本概念,数组的作用,以及数组的声明创建方式。
数组是相同元素的集合,作为数据容器使用。
声明创建一个int型数组:int[]x=new int[3];其中3是数组的长度,该数组能够存储3个int型变量。
3、使用代码,创建一个长度为5的String型数组,并使用增强for循环迭代数组打印出数组中的元素。 String[] sArray = new String[5];
For(String s : sArray){ System.out.println(s);
}
4、说明Arrays类的作用。
Arrays类是java.util包中的一个类,类中所有的方法都是static方法,这些方法都是数组对象的工具方法,能够对数组进行处理,如sort方法可以对数组元素进行排序。
5、请使用简单代码展示A类依赖B类的含义。
依赖关系指的是一种瞬间的关系。如果A依赖B,一般指的是A类的某个行为,需要B类对象作为参数。 Class A{
Public void f(B b) }
6、请说明依赖关系和关联关系的区别。
依赖关系是一种瞬时关系,A依赖B,指的是A的某个行为的参数是B的类型,也就是说,A要想实现这个行为,必须依赖B的实例。
A关联B,是一种长久的关系。是B作为A的属性存在,只要实例化一个A的对象,就会为这个A的对象实例化一个B的对象,作为它的属性使用,可以在A中任何需要使用B的地方使用B。
7、继承有什么作用,Java语言中的继承有什么特点?
继承主要为了能够重复使用父类中的成员,提高代码的重用率
Java语言中的继承是单继承,也就是说一个类最多只能继承一个父类。
8、什么是方法覆盖(override)?并说明方法覆盖与方法重载(overioad)的区别。
覆盖是发生在继承关系的子类中,当子类要修改从父类继承的某个方法的方法体时,就可以在子类中声明一个与父类同名、同参数并且同返回值类型的方法,这就是方法覆盖。而重载与继承没有关系,指的是在一个类中可以同时声明多个同名但不同参数的方法,称为重载。
9、请说明什么是抽象类?抽象类有什么作用?
抽象类是不能实例化的类,使用abstract修饰。抽象类往往用来做父类使用,定义一些子类的共同属性或行为。
10、请说明抽象方法的含义,并说明抽象类与抽象方法的关系。
抽象方法是没有办法体的方法,使用abstract修饰。抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类。
11、super关键字的两种用法。
如super():表示调用父类中的每一参考的构造方法:又如super(10);表示调用父类中的具有一个整型参数的构造方法。第二种用法是在子类中调用父类中的成员,如super.f();意思是调用父类中的f()方法。
12、final类与final方法有什么作用?
final类是不能够被继承的类,称为终极类,如String类就是final类,不能有子类。final修饰方法后,是终极方法,不能被子类覆盖,但是可以被子类继承使用。
13、什么是多态函数?多态函数有什么用?
多态函数就是参数的类型是某个父类类型,具体为这个参数赋值的不同以使用该父类的任意子类的对象。使用多态参数,可以使程序的扩展性更好,即使%%%%的子类方法不需要任何修改,就能接受子类类型进行处理。
14、Object类有什么特点? Object类是多有类的直接或间接的父类。
15、Object类中的toString方法有什么用?