目录
4、String 是基本数据类型吗?我可不可以写个类继承于 String?
6、Switch 语句里面的条件可不可以是 byte、long、String?使用时候还应注意什么?
7、short s1=1;s1=s1+1;有什么错?short s1 = 1;s1+=1 有什么错?
9、3*0.1 == 0.3 将会返回什么?true 还是 false?
13、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
15、作用域 public,private,protected,以及不写时的区别?
19、在 Java 中定义⼀个不做事且没有参数的构造⽅法的作⽤
29 、 String 和 StringBuffer 的区别? StringBuffer 和
30、数组中有没有 length()方法,String 中有没有 length()方法?
31、final, finally, finalize 的区别。
34、有没有可能两个不相等的对象有有相同的 hashcode?
37、Java 中 java.util.Date 与 java.sql.Date 有什么区别?
49、一个静态方法,里面可不可以用 this 和 super 关键字
1、java 中有哪些基本类型?
整形:byte 8 short 16 int 32 long 64 位
浮点类型:float、double
字符类型:char 表示字符 utf-16
布尔类型:boolean true/false
2、java 为什么能够跨平台运行?
因为 Java 程序编译之后生成.class 文件,不是能被硬件系统直接运行的代码,而是一种 “中间码”——字节码。然后不同的硬件平台上安装有不同的 Java 虚拟机(JVM),由 JVM 来把字节码再“翻译”成所对应的硬件平台能够执行的代码。因此对于 Java 编程者来说,不需要考虑硬件平台是什么。所以 Java 可以跨平台。
3、比较一下 Java 和 JavaSciprt。
基于对象和面向对象:Java是一种真正的面向对象的语言,即使是开发简单的程序,也必须设计对象;JavaScript 是种脚本语言,它是一种基于对象(Object-Based)和事件驱动(Event-Driven)的编程语言,本身提供了非常丰富的内部对象供设计人员使用。
解释和编译:Java 的源代码在执行之前,必须经过编译。JavaScript 其源代码不需经过编译,由浏览器解释执行。
强类型变量和弱类型变量:Java 采用强类型变量检查,所有变量在编译之前必须作声明;JavaScript中变量是弱类型的,甚至在使用变量前可以不作声明,其解释器在运行时检查推断其数据类型。代码格式不一样。
4、String 是基本数据类型吗?我可不可以写个类继承于 String?
不是,String 是引用类型;String 是 final 的类,是不可以被继承的。
5、谈谈&和&&的区别?
&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为 true 时,整个运算结果才为 true,否则,只要有一方为 false,则结果为 false。
&&还具有短路的功能,即如果第一个表达式为 false,则不再计算第二个表达式。
&还可以用作位运算符,当&操作符两边的表达式不是 boolean 类型时,&表示按位与操作.。
6、Switch 语句里面的条件可不可以是 byte、long、String?使用时候还应注意什么?
switch 里面的条件必须是能隐式的转化成为 Int 的故 long 不行,byte 可以;jdk1.7 之后
String 类型的也可以。使用 Switch 时候还应注意它的穿透,即每个 case 后要跟 break;
7、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 编译器会对它进行特殊处理,因此可以正确编译。
8、Java 中 ++ 操作符是线程安全的吗?
不是线程安全的操作。它涉及到多个指令,如读取变量值,增加,然后存储回内存,并不是原子性的操作,这个过程可能会出现多个线程交差。解决方案:对i++操作的方法加同步锁或者使用支持原子操作的类比如 java.util.concurrent.atomic.AtomicInteger
9、3*0.1 == 0.3 将会返回什么?true 还是 false?
false,因为有些浮点数不能完全精确的表示出来。
对于0.1来说,其本质是1/10,用二进制表示是1/1010是一个除不尽的无穷循环
==>0.000110011001100...其中0011循环,但是恰恰double类的精度可以表现出0.1*3的结果为0.30000000000000004,所以造成double中运算不精准,返回结果false。
10、char 为什么能存贮一个汉字?
char 型变量是用来存储 Unicode 编码的字符的,unicode 编码字符集中包含了全世界所有的字体。
11、final 关键字的用法?
final 用于修饰类、属性、方法
final 修饰的类,不能被继承
final 修饰的属性,是常量,值不可以改变 final 修饰的方法,不可以被重写
12、静态变量和实例变量的区别?
静态变量也称为类变量,归全类共有,它不依赖于某个对象,可通过类名直接访问;而实例变量必须依存于某一实例,只能通过对象才能访问到它。
静态变量存在方法区内存 实例变量存在堆内存
13、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
是值传递。Java语言的方法调用只支持参数的值传递。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。
14、面向对象的基本特征是什么?
1)抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。
2)继承:子类拥有父类一切非私有的属性和方法。
3)封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面 向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装 的对象,这些对象通过一个受保护的接口访问其他对象。
4)多态性:同一种事物的不同种表现形式。
15、作用域 public,private,protected,以及不写时的区别?
作用域 当前类 同包 子孙类 |
其他 |
public √ √ √ |
√ |
protected √ √ √ |
× |
default √ √ × |
× |
private √ × × |
× |
16、Overload 和 Override 的区别。
(Overload)重载:发生在同一个类之中,方法名相同、参数列表不同(个数,类型),与返回值无关、与 final 无关、与修饰符无关、与异常无关。
(Override)重写:发生在子类和父类之间,方法名相同、参数列表相同、返回值相同、不能是 final 的方法、重写的方法不能有比父类方法更为严格的修饰符权限、重写的方法所抛出的异常不能比父类的更大。
如果父类私有的方法,子类拥有方法签名相同的方法,子类不属于重写父类的方法,该方法属于子类的新方法。
17、为什么方法不能根据返回类型来区分重载?
因为java方法被调用时返回值可以舍弃,也可以使用父类/接口类型接收返回值,所以如果有相同的参数列表的方法,编译器无法确定具体要调用的方法。
重载只和参数列表相关并且方法名称相同,和方法签名的其他关键字无关。
18、构造器可不可以被重载或重写?
构造器不能被继承,