java面试题

1、一".java"源文件可以包含足够多类(不是内部类)?是否有任何限制?
答案:能够,但只可以有一个public分类 并且假设有public类似的事情,该文件的相同的名称和类名。
2、Java有没有goto?
答:java中的保留字,如今没有在java中使用
3、说说&和&&的差别?
答:&和&&都能够用作逻辑与的运算符,表示逻辑与(and)。当运算符两边的表达式的结果都为true时,整个运算结果才为true。仅仅要一方为false,结果为false
&&还具有短路的功能,即假设第一个表达式为false,则不再计算第二个表达式,比如,对于if(str!=null&&!str.equal(""))表达式,当str为null时,后面表达式不运行。所以不会出现NullPointerEeception假设将&&改为&,则会抛出NullPointerEeception异常。if(x==3&++y>0)y会增长  假设是&&不会增长
&还能够用作运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,比如,0x31&0x0f的结果为0x01
两者既有共同点。又各有特殊之处  如上述样例
4、在JAVA中怎样跳出当前的多重嵌套循环?
答:在java中,要想跳出多重循环,能够在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的的break语句。就可以跳出外层循环。比如:
ok:
for(int i=0;i<10;i++)
{
     for(int j=0;j<10;j++)
{
     system.out.println("i="+i+",j="+j);
     if(j==5)break ok;
}
}
只是我个人认为通常不使用标号这样的方式,而是让外层的循环条件表达式的结果能够收到里层循环体代码的控制,比如,要在二维数组中查找到某个数字。
int arr[][]={{1,2,2},{2,2,5},{4,4}};
boolean found =false;
for(int i=0;i<arr.length&&!found;i++)
{
    for(int j=0;j<arr[i].length;j++)
{
    system.out.println("i="+i+",j="+j);
    if(arr[i][j]==5)
{     
    found=true;
    break;
}
}
}
5、switch语句是否能作用在byte上,是否能作用在long上,是否能作用在String上?
答:在switch(expr1)中。expr1仅仅能是一个整数表达式或者枚举常量(更大字体),整数表达式能够是int基本类型或Integer包装类型。因为,byte,short,char都能够隐含转换为int,所以,这些类型以及这些类型的包装类型也是能够的。显然。long和String类型都不符合switch的语法规定,而且不能被隐式转换成int类型,所以,它们不能作用于swtich语句中。
6、short s1 =1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
答:对于short s1 = 1; s1 = s1 + 1; 因为s1+1运算时会自己主动提升表达式的类型。所以结果是int型,再赋值给short类型s1时。编译器将报告须要强制转换类型的错误。

对于short s1 = 1; s1 += 1;因为 += 是java语言规定的运算符,java编译器会对它进行特殊处理。因此能够正确编译。


7、char型变量中能不能存贮一个中文汉字?为什么?


答:不能
char 仅仅占一个字节。


汉字一般是两个字节来表示。能够使用char数组来表示汉字。


比如
char a[5]="你"
8、用最有效率的方法算出2乘以8等於几?
答:用移位法2 左移3位 就是乘以8
9、请设计一个一百亿的计算器
答:
10、使用finalkeyword修饰一个变量时,是引用不能变,还是引用的对象不能变?
答:
使用finalkeyword修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是能够改变的。比如。对于例如以下语句:
final StringBuffer a=new StringBuffer("immutable");
运行例如以下语句将报告编译期错误:
a=new StringBuffer("");
可是。运行例如以下语句则能够通过编译:
a.append(" broken!"); 
有人在定义方法的參数时,可能想採用例如以下形式来阻止方法内部改动传进来的參数对象:
        public void method(final  StringBuffer  param)
        {
        } 
实际上,这是办不到的,在该方法内部仍然能够添加例如以下代码来改动參数对象:
                param.append("a");
11、"=="和equals方法到底有什么差别?
答:==确实比較的是引用,equals比較的是引用指向的内容
12、静态变量和实例变量的差别?
答:静态变量有static  差别在于类变量和实例变量的差别是类变量是全部对象共同拥有,当中一个对象将他值改变,其它对象得到的就是改变后的结果,而实例变量则属于对象私有,某一个对象将其值改变,不影响其它对象.
13、能否够从一个static方法内部发出对非static方法的调用?
不行。
能够这样理解
static修饰的方法能够直接用类名调用
非static修饰的方法必须用类new出对象才干调用
当我们用类名直接调用时,可能这个类的对象并没有new。
假设这时候static方法里调用非static的方法就会出现空指针异常,
当然这样的错误编译时就不会通过
14、Integer与int的差别
答:Integer 是对象,定义的变量是对Integer对象地址的引用,==比較的是对象在内存中的物理地址。所以不等。

 
int定义的变量就是值的引用。(范围为正负2^31)
15、Math.round(11.5)等於多少?Math.round(-11.5)等於多少?
答:Math.round()是四舍五入的函数。所以Math.round(11.5)是12, Math.round(-11.5)是-11
16、以下的代码有什么不妥之处?
答:
17、请说出作用域public。private,protected,以及不写时的差别
答:差别例如以下: 


作用域 当前类 同一package 子孙类 其它package 


public √ √ √ √ 


protected √ √ √ × 


friendly √ √ × × 


private √ × × × 


不写时默觉得friendly
18、Overload和Override的差别。Overloaded的方法能否够改变返回值的类型?
答:方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。

假设在子类中定义某方法与其父类有同样的名称和參数,我们说该方法被重写 (Overriding)。子类的对象使用这种方法时,将调用子类中的定义,对它而言。父类中的定义如同被“屏蔽”了。假设在一个类中定义了多个同名的方法,它们或有不同的參数个数或有不同的參数类型。则称为方法的重载(Overloading)。Overloaded的方法是能够改变返回值的类型。
19、构造器Constructor是否可被override?
答:构造器Constructor不能被继承,因此不能重写Overriding,但能够被重载Overloading
20、接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承详细类(concreteclass)?

抽象类中能否够有静态的main方法?
答:1.接口能够继承接口..可是要使用extends~而不是用implements如:interface a{}interface b extends a{}
2.抽象类能够实现接口..比方java.util中的AbstractCollection类就是实现的Collection接口
3.抽象类能够继承实体类以下这段运行无误的代码说明的全部的问题:interface MyInterface {}interface AnotherInterface extends MyInterface {}class EntityClass {}abstract class AbstractClass extends EntityClass implements MyInterface {}
main方法都是静态的,抽象类中的方法能够为抽象方法。也能够为详细的方法。
21、写clone()方法时,通常都有一行代码,是什么?
答:clone 有缺省行为,super.clone();由于首先要把父类中的成员拷贝到位。然后才是复制自己的成员。
22、面向对象的特征有哪些方面
答:封装,继承。多态
23、java中实现多态的机制是什么?
答:靠的是父类或接口定义的引用变量能够指向子类或详细实现类的实例对象,而程序调用的方法在执行期才动态绑定。就是引用变量所指向的详细实例对象的方法。也就是内存里正在执行的那个对象的方法,而不是引用变量的类型中定义的方法。
25、abstract的method是否可同一时候是static,是否可同一时候是native。是否可同一时候是synchronized?
答:abstract的method 不能够是static的。由于抽象的方法是要被子类实现的,而static与子类扯不上关系!




native方法表示该方法要用第二种依赖平台的编程语言实现的,不有一个问题被子类实现。所以,它也不能是抽象的,不能abstract拌。

版权声明:本文博主原创文章。博客,未经同意不得转载。

原文地址:https://www.cnblogs.com/bhlsheji/p/4912174.html