Java杂记(二)

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。

    &运算符是逻辑与,在运算的过程中,每个操作数都要参与运算,然后才能得到整个表达式的运算结果。

猜你喜欢

转载自blog.csdn.net/qq_34712399/article/details/80463418
今日推荐