1.this关键字和super关键字的含义?
this关键字(代表当前类的实例)
(1)、返回调用当前方法对象的引用。
(2)、在构造方法中调用当前类的其他构造方法。
(3)、当方法的参数名和成员变量的名字相同时,用于区分参数名和成员变量名
super关键字(代表父类的实例)
(1)、调用父类的构造方法。
(2)、调用父类的 成员变量和方法。
2、static 关键字有什么含义?
static关键字可以修饰属性、方法、自由块、和内部类。使用static修饰这些成员时,可以理解为这些成员和类相关,通过类.成员来调用,如果没有被这个关键字修饰的成员可以理解为是以对象相关,用对象.成员来调用。
被static修饰的属性被当前类的所有的属性所共享,也就是说一个对象修改了静态属性值后,会影响其他的对象。
在被static修饰的方法中不能调用没有被static修饰的方法和属性,也不能用this和super关键字,原因在于,在解析器调用该方法时,还没有来及创建该类的对象。
static修饰代码块是在构造方法之前执行的,因此可以将一部分初始化东西放在静态代码块中。
3、final关键字有什么含义?
(1)修饰类,表示这个类不能被其他类继承。
(2)修饰属性,表示该属性一经初始化就不能被修改了。
(3)修饰方法,表示该方法不能被其子类重写或覆盖。
4、instance of 关键字 有什么含义?
instance of 属于二元操作符,用于判断某对象是否是某个类或接口类型。
5、float f = 2.6 语句是否正确?
java的数据类型分为基本数据类型和引用数据类型,不同类型变量进行赋值时,首先要进行类型转化,再进行赋值的。
java 类型转化分为自动类型转化,和强制类型转化。进行强制类型转化时要满足两个条件:第一个,转化双方的类型必须兼容,比如int和long兼容,int和boolean不兼容。第二个,目标类型比原类型范围要大。比如long类型分配8个字节,int类型是4个字节,long类型的范围就比int的范围大。
java整型常量默认的数据类型是int类型,浮点型常量默认的数据类型是doule型,如果是声明一个long类型的常量可以在后面添加“l”或“L”,如果声明一个float类型的常量,可以在后面加“f”或“F”。
所以,float f = 2.6这条语句的写法是不正确的,因为2.6默认的数据类型是double,double类型转为float数据类型是不能自动转化的,需要强制转化,正确的语句应该是float f = 2.6F。
6.变量之间的传值可分为值传递和引用传递,它们之间有什么区别?
(1)存储机制
基本类型变量是直接在栈内存中开辟内存空间存储变量值,引用类型变量是由引用空间和存储空间构成,引用空间在栈内存中,存储空间在堆内存,存储空间用来存储变量的值,引用空间负责存放存储空间的首地址,引用变量指的是地址值,通过地址值可以定义存储位置,并修改存储信息。
(2)变量的传递
当变量与变量之间进行赋值时,是数据类型传递的是值本身,而引用数据类型传递的是引用地址。基本类型变量采用的是值传递,而引用数据类型采用的是引用地址传递。
7、x+=y,和x = x+y,这两个表达式有什么区别?
一般情况下,这两个表达式可以通用,都可以实现两个变量的相加,但是这两个表达式在内部运行时存在细微的差别,差别在于+=不仅实现了+运算,还进行了一次强制类型转化。比如下面的例子。
short y = 3;
y = y+1;//编译发生错误(左操作数类型是short,右操作数类型是int,不能进行类型自动转化,需要强制类型转化)
y+=1;//编译通过
8、在执行与运算时,运算符&和&&有什么区别?
&&运算符是短路与,也就是&&运算的表达式中从左往右计算时,如果发现一个为false,就放弃继续运算。直接返回false。
&运算符是逻辑与,在运算的过程中,每个操作数都要参与运算,然后才能得到整个表达式的运算结果。