[java初级工程师面试题]java编程笔试题
1.Java中的作用域public,private,protected,以及不写作用域(default)时有什么区别
Java中有四种作用域,按照作用域范围由大到小排列一次是:public,protected,default,private。
private表示只能在当前类中使用;
default表示只能在当前类或者是同一个包下面使用;
protected表示可以在当前类,同一个包下,当前类的子类中使用;
public表示除了上面的情况外,还可以被其它包中的类使用。
2.匿名内部类是否可以继承其它类,是否可以实现其它接口
首先需要搞清楚内部类和匿名内部类的概念和特点,可以参考以下链接:
内部类分为三种:成员内部类,局部内部类(又称方法内部类),匿名内部类。(这里不把静态
嵌套类归类于内部类,在后面会单独讲到)
本题问的是匿名内部类,那么我们来看一段代码:
publicclaCar{
publicvoiddrive(){
Sytem.out.println("driveacar!");
}
}1234512345
publicclaOuter{
publictaticvoidmain(String[]arg){
Carcar=newCar(){
//要使用匿名内部类必须先定义该类(接口)
//此处匿名内部类会默认继承已经定义的类(Car)
publicvoiddrive(){
Sytem.out.println("driveanothercar!");
}
};
car.drive();
}
}123456789101112123456789101112
其中,newCar()就是一个匿名内部类,继承了它的父类Car。
所以,本题答案是匿名内部类可以而且是必须继承一个父类或者实现一个接口。
3.静态嵌套类和内部类的区别。
首先,我们看一下静态嵌套类的例子:
publicclaOuter{
publictaticvoidmain(String[]arg){
Outer.Innerinner=newInner();
Outer.Inner.print();
}
publictaticclaInner{
publictaticvoidprint(){
}
}
}
123456789101112123456789101112
该静态嵌套内部类可以像其它静态成员一样,没有外部类对象时也能够通过外部类的类名访问它。但是,它不能访问外部类的成员和方法,因为无法知道外部类是否生成对象,只有外部类实例化了对象,外部类才会有成员和方法。
而内部类必须要实例化外部类的对象才能被访问,而且,内部类是可以通过Outer.thi来获取外部类对象,从而访问外部类的成员和方法。
4.&和&&的区别。
&是位运算符,&&是逻辑运算符。位运算2&3=2是因为转换为二进制为10&11=10,10是2的二进制表示。逻辑运算true&&fale=fale。在Java中&也可也用来做逻辑运算true&fale=fale。
它们的区别在于:在做逻辑运算的时候,&&具有短路的功能,而&不具备。下面举例说明。
publicclaTetAnd{
java接口有没有构造方法//类变量,不会被初始化,值为null
publictaticStringtr1;
publictaticStringtr2;
publictaticvoidmain(String[]arg){
if(tr1!=null&&tr2.equal(“”)){
...
}ele{
...
}
}
}1234567891011121312345678910111213
当使用&&时,首先判断tr1!=null为fale,所以短路,不会执行后面的操作。
当使用&时,虽然前面为fale,但是仍然执行后面的判断tr2.equal(""),此时会抛出空指针异常。
1.Java中Collection和Collection的区别。
Collection是Java集合框架中最上级的接口之一。Collection的实现类主要有Lit,Queue,Set等等。
Colelction是Collection集合框架的一个帮助类(工具类),它直接继承Object,不属于集合框架,主要提供一系列的静态方法对Collection集合进行各种操作。
2.String=newString(“abc”);这句话创建了几个对象
两个。newString(“abc”)是一个字符串对象;是一个字符串对象的引用对象。
und(11.5),und(-11.5),Math.floor(11.7),Math.floor(-11.7)的值各是多少
und(a)是四舍五入;Math.floor(a)是返回小于等于a的最大的double值(即向下取整)。
所以答案为:12,-11,11,-12
另外:还有一个ceil方法是向上取整。
4.hort1=1;1=1+1和hort1=1;1+=1;有什么区别
1+1会自动向上转型成为int,将int赋给hort会编译报错,需要强制类型转换:1=(hort)1+1;
对于1+=1;编译器会自动将+=后面的操作数强制转换成前面变量的类型,然后在变量所在的内存区上直接根据右边的操作数修改左边变量内存存储的二进制数值,属于位运算,能正确通过编译。
另外,后一种方式属于位运算,效率比前者要高。
5.Java中有没有goto语句
Java关键字:共51个。
Java保留字:共14个,表示现有的Java版本尚未使用,但以后版本可能会作为关键字使用。
其中,goto就是Java的保留字。
6.数组有没有length()这个方法,String有没有length()这个方法
数组没有length()方法,但是有length属性。String有length()方法。
补充:集合框架测量长度的方法是ize()。
1.简述Overload(重载)和Override(重写)的区别。
重载和重写是Java多态中的内容。重写是父类与子类之间多态性的一种表现,重载是一个类中多态性的一种表现。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。