1、short s1 = 1; s1 = s1 + 1;有错吗?
short s1 = 1; s1 += 1; 有错吗?

Java的基本数据类型转换

  • 自动类型转换: 小→大 byte→short→int→long→float→double
  • 强制类型转换:大→小 小类型 变量名 = (大类型)值
  • 类型提升:是指在多种不同类型数据的表达式中,类型会自动向范围表达大的值的数据类型提升

自增/自减运算符、复合赋值运算符底层做了优化,内部自动强制类型转换(++, --, += , -=)

  1. short s1 = 1; s1 = s1 + 1;

错误!

根据java的基本数据类型转换规则,s1为short类型的变量,在表达式s1 = s1 + 1;中,s1会自动转为int类型与1进行运算,运算结果为int类型,而int类型的值赋值给short类型的变量时需要强制类型转换。

  1. short s1 = 1; s1 += 1;

正确!

在复合赋值运算符底层自动进行强制类型转换,所以此处实际上是s1 = (int) s1 + 1;因为此处有强制类型转换,所以编译可以通过。

2、重载和重写的区别

  1. 定义不同:重载是定义相同的方法名、参数不同,重写是子类重写父类的方法
  2. 范围不同:重载是在一个类中,重写是子类与父类之间的
  3. 多态不同:重载是编译时的多态性,重写是运行时的多态性
  4. 参数不同:重载的参数个数、参数类型、参数顺序可以不同,重写父类子方法参数必须相同
  5. 修饰不同:重载对修饰范围没有要求,重写要求重写方法的修饰范围大于被重写方法的修饰范围

多态是一个类需要表示出多种形态,子类重写父类的方法,使子类具有不同的方法实现

1、从概念上来看

重载:重载指的是不用的函数使用相同的函数名字,可是,函数的参数、个数或者是类型都不同。

重写:重写也就是我们通常所说的覆盖,重写是指在派生类当中,重新对基类中的虚函数度重新实现。

2、从规则上来看

重载:

(1)重载可以有不同的访问修饰符

(2)重载能够抛出不同的异常

(3)重载一定要有不同的参数列表

重写:

(1)重写访问修饰符的限制一定要大于被重写方法的访问修饰符

(2)重写的参数列表一定要完全和被重写的方法相同,专否则的话不能称其为重写而是重载

(3)重写返回的类型一定要一直和被重写的方法的返回类型相同,否则不能称其为重写而是重载

(4)重写方法一定不可以抛出新的检查异常或者是比被重写方法申明更加宽泛的检查型异常

3、类的属关系上来看

重写:重写是垂直关系,是子类和父类之间的关系

重载:重载是水平关系,是同一个类中方法之间的关系

3、数组实例化有几种方式?
4、Java 中各种数据默认值
5、Object 类常用方法有那些?
6、java 中是值传递引用传递?
7、形参与实参区别
8、构造方法能不能重写?能不能重载?
9、内部类与静态内部类的区别?
10、Static 关键字有什么作用?
11、final 在 java 中的作用,有哪些用法?
12、String str=”aaa”,与 String str=new String(“aaa”)一样吗?
13、讲下 java 中的 math 类有那些常用方法?
14、Char 类型能不能转成 int 类型?能不能转化成 string 类型,能不能转成 double 类型
15、什么是拆装箱?
16、Java 中的包装类都是那些?
17、一个 java 类中包含那些内容?
18、那针对浮点型数据运算出现的误差的问题,你怎么解决?
19、面向对象的特征有哪些方面?
20、访问修饰符 public,private,protected,以及不写(默认) 时的区别?
21、接口有什么特点?
22、抽象类和接口的区别?
23、Hashcode 的作用
24、普通类与抽象类有什么区别?
25、什么是接口?为什么需要接口?
26、接口有什么特点?
27、拷贝和浅拷贝的区别是什么?
28、JDBC 操作的步骤
29、什么时候用 assert
30、数组有没有 length()这个方法? String 有没有 length()这个方法
31、用最有效率的方法算出 2 乘以 8 等于几?
32、String 和 StringBuilder、StringBuffer 的区别?
33、接口是否可继承(extends)接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concreteclass)?
34、一个”.java”源文件中是否可以包含多个类(不是内部类)?有什么限制?
35、Java 中的 final 关键字有哪些用法?