面向对象有哪些特征?
答:继承、封装、多态
JDK与JRE的区别是什么?
答:JDK是java开发时所需环境,它包含了Java开发时需要用到的API,JRE是Java的运行时环境,JDK包含了JRE,他们是包含关系
Java有哪几种基本数据类型?
答:8种,分别是int、byte、short、long、double、flot、char、boolean
== 和equals比较有什么区别?
答:是Java中的操作符,equals是Java中Object对象提供的对象比较Api。它们的区别是比较的是左右两边对象的内存地址,而equals比较的是左右对象的值
public,private,protected,默认的区别什么?
答:它们是java中的权限修饰符,public可以在任何地方访问,private仅仅只能在本类中访问,protected可以在本类以及本类的子类中访问,默认则代表可以在本包中访问
short s1=1; s1+=1;有错吗? s1=s1+1; 有错吗?
答:short在和int类型进行计算的时候会转换为int类型,原因是Java中精度小于int的数值运算的时候都回被自动转换为int后进行计算。计算后的结果也是int,再将int类型赋值给short类型当然会报错,所以s1=s1+1是错误的,然而s1+=1是java底层采用了编译语法糖的形式完成的转换,在编译后依然是转换为int计算只不过最终做了一次强转
float f = 1.9; 有错吗?
答:有错,因为在Java中字面量的小数指的是double类型,double为8个字节float为4个字节,无法完成自动转换。如果需要将字面量的小数转换为float类型需要在小数后面加f或者F
&和&&有什么区别?
答:前者是与符号,后者是短路与符号。前者除了可以做逻辑运算和可以做位运算称为“按位与”,后者只能做逻辑运算,其次再逻辑运算中,这两个符号都需要左右两侧表达式为true时,最后结果才为true
2*8最有效率的计算方法是什么?
答:2 << 3
怎么理解值传递和引用传递?
答:值传递传递的是变量中的数据,应用传递则是传递变量的引用而不是值
Java到底是值传递还是引用传递?
答:Java中8种基本数据类型传递的是值,而引用数据类型传递的是引用
一个".java"源文件的类有什么限制?
答:最多只能有一个public static void mian方法,最少有一个类
final关键字有哪些用法?
答:修饰类:最终类,不可被子类继承,修饰方法:最终方法,不可被子类进行方法覆盖,修饰变量:常量,必须在声明时赋值,且之后的程序中不可改变。
final、finally、finalize有什么区别?
答:除了名称相像,都比相同。final属于java的修饰符,finally是结合Java异常体现中的Try一起使用的标识符用来关闭一些资源,finalize是Object根类中的一个方法,是对象被回收之前执行的方法。
void和Void有什么区别?
答:void是关键字在java中代表返回值为空,Void是类名
为什么byte的取值范围为-128~127?
答:2的8次方,且减去正数的零
char类型可以存储中文汉字吗?
答:可以,char默认为2个字节,不过char采用的是UTF-16BE的编码集,且该编码集支持中文,char可以动态的更具字符内容改变字节,最大可以到4
重载和重写有什么区别?
答:重载是在同一类中,满足重载需要方法名相同,参数列表不同,与返回值和访问修饰符无关。重写是在继承关系中,子类对父类方法的覆盖,需要满足“一同两小一大”(方法名相同,返回值类型小于等于父类方法,声明抛出异常小于等于父类方法,访问权限修饰符大于等于父类方法)
构造器可以被重写和重载吗?
答:构造器可以被重载,但是不能被重写,因为构造器不能被继承
Java中的断言(assert)是什么?
答:用于检测表达式或方法的最终结果是否符合预期
Error和Exception有哪些区别?
答:Error是系统错误,一般由于系统原因或JVM内部错误引起,无法被程序捕获处理,Exception是程序异常,其中又分编译时(检查时)异常和运行时异常,可以被程序捕获处理,一般我们在开发中针对运行时异常进行处理。
Java中常见的异常有哪些?
答:NullPointException空指针异常、Arithmeticexception算数异常、ClassCastException类型转换异常、ClassNotFoundException类为找到异常、illegalargumentexception方法参数错误异常、ArrayIndexOfOutBoundsException数组索引越界异常
Java中常见的运行时异常有哪些?
答:NoSuchMethodError 为找到方法异常(反射调用方法时),NumberFormatException 数值转换异常,NullPointException空指针异常、Arithmeticexception算数异常、ClassCastException类型转换异常
运行时异常和受检异常有什么区别?
答:
运行时异常包括 RuntimeException 类及其子类,表示 JVM 在运行期间可能出现的异常。Java 编译器不会检查运行时异常。
受检异常是Exception 中除 RuntimeException 及其子类之外的异常。Java 编译器会检查受检异常。