全国服务热线 029-62871062

java基础精彩集锦-芯学苑分享

发布:2016-12-30 10:26,更新:2010-01-01 00:00

         本篇文章主要是芯学苑小编分享:java基础知识问题及解答,希望对大家能有进一步的了解:

   1、请解释java语言的跨平台特性

 
  解析:虽然不知道什么是跨平台也可以使用java语言进行编程,但是对于一个java编程员来说,理解跨平台特性能够更深入掌握java语言,所以企业中往往要求应聘者至少理解这个特性。
 
  参考答案:java的跨平台特性也被称为可移植性、平台无关性,或者一次编写处处运行。他的意思就是如果用java语言编写一个应用,那么就可以在不同平台上运行,而不需要为不同平台单独运行开发。之所以能实现跨平台的特性。主要得益于java虚拟机(jvm),jvm解释器在运行java应用时根据当前平台进行解释,解释成符合当前平台规范的机器码,所以可以实现同样的应用在不同平台上都能运行。
 
  2、请列举java语言的主要特点
 
  解析:了解一门语言,往往从熟悉该语言的主要特点开始入手,所以企业也常常通过应聘者对java语言特点的掌握程度而判断其语言基础是否扎实。
 
  参考答案:java语言有很多特点,主要包括:
 
  ①跨平台性:一个应用可以不经过修改直接运行到不同的平台上。
 
  ②面向对象:java语言是一门面向对面的语言,可以使用对象的属性和行为,可以使用面向对象的思想进行分析设计,并实现整个应用。
 
  ③解释执行java应用时,jvm中的解释器将解释类文件,生成符合当前平台的字节码。
 
  ④自动回收:java应用中的垃圾回收是自动进行的,jvm中的后台线程将监视内存中数据的使用,当内存中的数据不再被引用时,将被作为垃圾回收,而不需要程序员动手回收。
 
  3、请说明一个java类中主要包含哪几个元素?并说明每种元素的作用
 
  解析:无论简单还是复杂的java应用,都是由若干个类组成,所以类是java应用的组成单位。了解一个类中包含的主要元素能够对类有一个清晰的认识。一个类中往往会有五种元素,即属性、方法、构造方法、块以及内部类、其实块和内部类比较少见。
 
  参考答案:java类中主要包含属性、方法、构造方法、块以及内部类。
 
  属性用来定义对象的数据;
 
  方法用来定义对象的行为;
 
  构造方法可以用来创建对象;
 
  块能够用来在类加载时执行操作或者在每次实例化前执行通用操作;
 
  内部类作为类的一个成员存在,能够访问外部类的属性和方法。
 
  4、请说明构造方法的作用和特征
 
  解析:类是对象的模板,使用类往往都需要首先对类进行实例化,即创建对象。要创建对象必须使用new关键字调用构造方法(constructor)才能完成,构造方法中往往对属性进行实例化,也可以实现其他必要的功能,如读取属性文件等。
 
  构造方法有独特的特征:名字必须与类名相同且大小写敏感,而且构造方法不能声明返回值,这两个特征缺一不可。使用eclipse工具时,可以使用菜单generate constructor自动生成不同的构造方法。
 
  参考答案:构造方法的作用是用来创建对象,使用new关键字调用。构造方法的名字必须与类的名字相同,并且大小写敏感,同时构造方法不能声明返回值类型,可以使用任意一种访问修饰符,但是不能使用其他修饰符进行修饰,如static、final、abstract等修饰符都可以修饰构造方法。
 
  5、什么是方法重载(overload)?
 
  解析:如果一个类的某个行为,会有不同的算法和逻辑,例如,math类的计算值的方法,既可以计算int类型数值的值,也可以计算double类型数值的值。这种情况下,每种类型都定义一个不同的方法名,如abint、absdouble,那么类的可读性就较差,使用时,必须熟悉处理每种类型参数所对应的方法名。然而,如果使用同一个方法名,而使用不同的形式参数来区别这些方法,那么就具有很好的可读性,如abs(int i)、abs(double d)等。可读性强的代码是企业对开发人员的基本要求,方法重载能够使得代码有很好的可读性。
 
  参考答案:方法重载指的是在一个类中可以声明多个相同名字的方法,而方法的形式参数有区别。调用这些同名的方法时,jvm会根据实际参数的不同绑定到不同的方法。
 
  6、请列举java语言中的权限访问修饰符,并说明每种权限的含义。
 
  解析:正确使用权限访问修饰符,能够有效控制类以及类成员的安全性,java语言中有四种访问修饰符,包括public、同包、protected以及private,一般情况下,应用中的类多是public权限,属性多是private权限,方法多是public权限。
 
  参考答案:java语言中有四种权限访问修饰符,即public、protected、同包以及private,public表示公共权限,即任何包中都可以访问:protected表示受保护权限,即同包中可以访问,同包中的子类可以访问:同包权限是默认权限,即不显示指明权限修饰符的时候就是同包权限,表示只有同包中可以访问:private是私有权限,表示只能在本类中访问。
 
  7、请列举java语言中的八种基本数据类型,并说明每种数据类型的含义及长度。
 
  解析:数据类型在任何一门编程语言中都是很重要的知识点,属性、方法参数、方法返回值要指定各自的数据类型。java语言虽然是一门面向对象的语言。但是也定义了基本数据类型,基本数据类型可以直接赋值,不需要使用new关键字创建,可以直接使用运算符进行运算,编程中经常被使用,而且java语言中的基本数据类型的长度固定,不会随着平台的不同而不同。
 
  参考答案:java语言的八种基本数据类型有:byte字节型,8位长度:short短整型,16位长度,int整型,32位长度:long长整型,64位长度:float单精度浮点型。32位长度:double双精度浮点型,64位长度:char字符型,16位长度:boolean型,表示逻辑值,有true和false两个值,分别表示真和假。
 
  8、什么叫引用类型,引用类型和基本数据类型有什么区别?
 
  解析:很多初级程序员都能够理解int i=20;中的int是一种类型,称为整型。而对于类似employee e=new employee();这样表达式中的employee却感觉无所适从。其实,任何一个类都是一种类型,如employee就是一种类型,可以说变量e的类型就是employee。java语言中将类的类型称为引用类型,即reference type。
 
  可以说,除了八种基本数据类型之外的类型都是引用类型,包括api中所有的类、自定义的所有类,也包括数组。引用类型和基本数据类型的直观区别就是引用类型的变量需要使用new调用构造方法来赋值,而基本数据类型可以直接使用“=”号赋值。但是,引用类型中的string比较特殊,既可以使用new关键字赋值,也可以直接使用“=”赋值,一般情况下都使用“=”直接赋值。
 
  参考答案:java语言中除了基本数据类型之外的类型,都称为引用类型。引用类型就是类的类型,所有的对象都是引用类型,包括数组对象。引用类型必须使用new调用构造方法进行赋值,引用类型的变量拥有自己的属性和方法,可以使用圆点调用自己的属性和方法。基本数据类型直接使用=号进行赋值,且没有自己的属性和方法,往往都在声明属性或方法时使用。
 
  9、对于string对象,可以使用“=”赋值,也可以使用new关键字赋值,两种方式有什么区别?
 
  解析:string类型是实际工作中经常使用到的类型,从数据类型上划分,string是一个引用类型,是api中定义的一个类。所以string类型的对象可以使用new创建,例如string name=new string(“etc”);为变量name进行赋值,值为“etc”。然而,string类比起其他类
 
  有些特殊,可以使用“=”直接赋值,如string name=“etc”,也是为变量name进行赋值,值为“etc”。
 
  这两种赋值方式是有差别的,使用new赋值,永远都是创建一个新对象,在新的内存空间初始化了字符串的值;而使用“=”赋值,不会每次都初始化新的字符串,而是从一个“字符串实例池”中去查找有没有要赋值的字符串,如有则直接引用;如不存在,则初始化一个字符串,并放入“字符串实例池”。在实际编程中,往往使用“=”好对string类型变量进行赋值。
 
  参考答案:使用“=”赋值不一定每次都创建一个新的字符串,而是从“字符串实例池”中查找字符串。使用new进行赋值,则每次都创建一个新的字符串。
 
  10、string类是一个“不可变类”,请解释“不可变类”的含义。
 
  解析:string类是一个不可变类,即immutable类。所谓不可变,意思是当一个字符串被初始化后,它的值就不会被改变。例如,string s=new string(“hello”)为将初始化一个值为hello的字符串,如果调用 s.touppercase()看起来是把hello变为大写的hello,然而事实上并不会把已有的hello变为hello,而是在新的空间初始化一个hello字符串。也正因为有这种不可变性,所以才能支持“字符串实例池”的使用。
 
  参考答案:所谓的不可变类,就是当字符串初始化后,就不能够被改变。
 
  11、string类和stringbuffer类有什么区别?
 
  解析:string类是不可变类,字符串一旦初始化后,就不能被改变。而stringbuffer类是可变类,字符串值可以呗改变。常常在实际应用中看到累死这样的代码:string s=new(“hello”);s+=”world”,这两句代码首先创建一个字符hello,然后将world追加到hello结尾并重新赋值给变量s。然后,这个过程实际上是这样的:首先创建一个stringbuffer对象,然后用stringbuffer类的append方法追加字符串,Zui后对stringbuffer对象调用tostring方法合成字符串返回。可见,使用+号连接字符串时,本质上是使用了可变的stringbuffer类,经变动肯定性能效率受到影响,所以建议需要追加字符串时,可以考虑直接使用stringbuffer类。
 
  参考答案:string类是不可变类,即字符串值一旦初始化后就不可能改变。stringbuffer是可变字符串类,类似string的缓冲区,可以修改字符串的值。
 
  12、stringbuffer和stringbuilder类有什么区别?
 
  解析: stringbuffer是jdk5中增加的一个新类,在以前版本中不存在这个类。stringbuilder中的方法和stringbuffer中的方法基本相同,但是stringbuffer是线程安全的,而stringbuilder不是线程安全的,因此在不考虑同步的情况下,stringbuilder有更好的性能。
 
  参考答案:stringbuffer是线程安全的字符串缓冲,而stringbuilder不是线程安全的。
 
  13、包装器类型包括哪些类,有什么作用?
 
  解析:初级程序员常常对float和float或者double和double感到混淆。在java语言中,有八中基本数据类型,即byte、int、long、float、double、char、boolean。对应这八种基本数据类型,api中定义了八个类,能把这些基本类型转换成引用类型,分别是byte、short、int、long、double、character、boolean。这八个类被统称为包装器类。
 
  jdk5之后,包装器类和基本数据类型之间可以直接转换,称为自动的装箱拆箱(boxing/unboxing)。例如integer it=3;it++;虽然写法上可以像使用基本数据类型一样使用包装器类型,但是本质上依**行了类似 it= new integer(3)的转换,因此,不要轻易使用包装器类的自动装箱拆箱,以优化的性能。能够使用基本类型就使用基本类型。
 
  参考答案:包装类器包括byte、short、integer、long、float、double、character、boolean等类,主要用来对byte、short、integer、long、float、double、character、boolean这八种基本数据类型进行包装,使其称为引用类型。
 
  14、请说明java语言中的值传递规则。
 
  解析:值传递时编写应用时不可避免的操作。例如某方法声明形式是public void f(int x){},写方法是,必须为其传递一个int类型的实际参数,如f(10)。又如public void g(employee)。那么使用该方法时,必须为其传递一个employee类型的实际参数,例如g(new employee())。
 
  所以,对于初级程序员来说,了解java语言的值传递规则非常重要。java语言是本类型传递的值,例如f(10),仅仅把10复制给形式参数x,是值的拷贝。而引用类的传递时引用,即虚地址,例如g(new employee())是把实际参数的虚地址传递给形式参数e,也就是说实际参数和形式参数的虚地址相同,物理上是同一个对象。
 
  参考答案:基本数据类型传递的是值,引用类型传递的是引用,即虚地址。
 
  15、使用static修饰属性或方法后,属性和方法有什么特征?
 
  解析:static修饰符是一个非常常见并重要的修饰符,称为静态。静态不是指值不能改变,很多初级程序员容易容易望文生义的地方。static常常用来修饰类的属性或者方法。当一个属性或者方法和对象没有关系,或者说是任何对象共享的时候,那么就应该用static进行修饰。列如某类中的计数器,用来计算实例的个数。那么这个计数器属性就是所有对象共享的属性,就应该用static修饰。
 
  又例如math类中的abs(int)方法,用来返回参数的值,这个方法和math类的对象没有关系,math类对象可以共享这个方法,那么这个方法就可以用static修饰。程序员必须深入理解static修饰符的使用。
 
  参考答案:static修饰属性或方法后,属性和方法不在属于某个特定的对象,而是所有共享,也可以说是static成员不依赖某个对象,在类加载时就被初始化。static修饰的属性或方法,可以直接使用类名调用,而不用先实例化对象再调用。
 
  16、使用final修饰属性后,属性有什么特征?
 
  解析:属性可以是变量也可以是常量,如果是常量,就需要使用final修饰。如果使用final修饰了某个属性,那么该属性值一旦被赋值,就不能被修改,实际中常常有这个样的码:private static final int error=0;也就是说,常常会生命静态的常量。
 
  静态常量的命名规范非常特殊,往往都是用大写字母,如果包含多个单词,每个单词之间使用下划线连接。静态常量的意思是,该类所有的对象都拥有一个不变的常量error,作为0.api中很多类都定义了很多的静态常量,使用时直接使用类名调用即可。
 
  参考答案:fianl修饰属性后,属性就成为一个常量。常量只要被赋值,就不能被改变。
 
  17、请说明操作符==的作用。
 
  解析:实际编程中,==是非常常用的操作符。很多初级程序员会使用这样的代码if(s==”save”0{},结果会发现,即使当字符串s的值为save时,if条件依然不能被执行。是==在比较引用类型时,比较的是两个对象的虚地址,而不是内容。
 
  要比较两个对象的内容是否相同,往往需要使用equal方法,例如if(s.equals(“save”)){}。==比较基本类型时,将比值的二进制是否相等,例如(x==0.5){}。值得注意的是,与空指针null值进行比较,往往用==进行,例如if(s==null||s.equals(“”)),表示如果字符串是空指针或者空串。
 
  参考答案:==可以用来比较基本类型或者引用类型。比较基本类型时,==用来比较二进制的值,比较引用类型时,用来比较对象的虚地址。
 
  18、请说明&&与&的区别和联系
 
  解析:实际编程中,常常需要使用“与”或者“或”的逻辑。其中&&和&存在一定区别&&可能发生各路问题,例如if(s!=null&&s.length()==6)中,如果要的值为null,那么第一表达式的值为false,返回值肯定是false,不会计算第二个表达式的值,这就是短路。然而使用&,例如if(s!=null&s.length()==6),假设s的值为,null,返回值肯定是false,但是会判断第二个表达式的值,将发生空指针异常。实际工作中,经常使用&&操作符。
 
  参考答案:&&会发生短路问题,当第一个表达式的值为false时,将直接返回结果为false而不会判断第二个表达式的值。而&不会发生短路问题,即使第一个表达式的值是false,会判断第二个表达式的值。
 
  19、 break语句能在什么场景使用。
 
  解析:break语句表示中断,不能够随便使用,只能在循环语句中或者switch语句中使用。初级工程师往往容易将break和return混淆。return是可以再方法体中任意位置使用,可以带值返回页可以不带值返回,执行return语句后,该方法将返回,也就是方法执行结束。而break只能在循环体中或者switch的case语句中使用,不能随意使用。
 
  参考答案:break语句可以再循环体中使用,也可以在switch的case语句中使用。
 
  20、for循环中的break语句和continue语句的使用。
 
  解析:很多时候,循环是为了查找某些符合条件的数据,只要找到就没有必要继续下去,称为中断循环,break语句就可以用来中断循环。而continue语句恰恰相反,是用来继续下一次循环。值得注意的是,java语言中可以再循环前面加标号,即label,然后可以使用break或continue中断或继续标号的循环。
 
  参考答案:break可以用来中断循环,continue可以用来继续下一次循环。
 
  21、请说明一个java类中主要包含哪几个元素并说明每种元素的作用。
 
  解析:无论简单还是复杂的java应用,都是由若干个类组成,所以类是java应用的组成单位。了解一个类中包含的主要元素能够对类有一个清晰的认识。一个类中往往会有五种元素,即属性、方法、构造方法、块以及内部类、其实块和内部类比较少见。
 
  参考答案:java类中主要包含属性、方法、构造方法、块以及内部类。属性用来定义对象的数据方法用来定义对象的行为构造方法可以用来创建对象块能够用来在类加载时执行操作或者在每次实例化前执行通用操作内部类作为类的一个成员存在,能够访问外部类的属性和方法。
      以上就是芯学苑小编为大家分享的java基础知识精彩集锦。芯学苑专注java、android、web培训,西安Zui专业的软件培训学校(西安芯学苑)。
  地址:西安市雁塔区小寨东路196号国贸大厦小区1栋1单元12层
  联系我们:029-62871062
       咨询
  培训课程:java培训android培训web前端课程
  官方网站:http://www.029xhl.com/
其他新闻

    联系方式

    • 地址:陕西省西安市雁塔区小寨东路196号国贸大厦小区1幢1218室
    • 邮编:710000
    • 电话:029-62871062
    • 主管:宋老师
    • QQ:3226798677
    • Email:vin6013862fu@163.com
    产品分类