java面试题:权限修饰符&final关键字&拆箱装箱&Static&内部类

本文详细讲解了Java中的四种权限修饰符的使用场景,final关键字在类、方法和变量上的应用,以及自动拆箱和装箱的概念。此外,还探讨了Int到字符串的转换方法。接着,介绍了static关键字的含义,包括静态方法和静态变量的特性,并强调静态方法不能访问非静态变量和使用this。最后,阐述了内部类的三种类型——成员内部类、局部内部类和匿名内部类的用法及访问外部类成员的规则。
摘要由CSDN通过智能技术生成

四种权限修饰符:

yes可以访问,no无法访问

权限修饰符publicprotecteddefaultprivate
同一个类yesyesyesyes
同一个包yesyesyesno
不同包子类yesyesnono
不同包非子类yesnoyesyes

final的基本使用:

注意:

abstract 和 final关键字不能同时存在,因为abstract必须覆盖重写,final不能覆盖重写

1.可以用来修饰一个类

表示当前这个类不能有任何的子类,自然无法重写覆盖

public  final class  类名称

2.可以用来修饰一个方法

表示这个方法就是最终方法,也就是不能被覆盖重写

public  final 返回值  方法名()

3.可以用来修饰一个局部变量

表示这个变量是一个常量,无法更改

对于基本变量来说,不可改变是变量当中的数据不可改变

对于引用变量来说,不可改变是变量当中的地址不可改变

4.可以用来修饰一个成员变量

使用final,这个变量不可改变。

成员变量具有默认值,所以成员变量必须手动赋值

对于final的成员变量,要么使用直接赋值,要么通过构造方法赋值。二者选一,注意此时不能用setter方法。

拆箱&&装箱:

装箱:

Integer in =new Integer(1)
把基本数据类型转化成包装类

拆箱:

in.intvalue+2=3
把包装类转化成基本数据类型

自动装箱:

Integer in=1;
相当于:Integer in =new Integer(1)
把int类型的整数赋值给包装类。

自动拆箱:

in = in +2
相当于:in.intvalue+2=3
把integer类型数据转换成int

Int怎么转换成字符串:

基本数据类型转换字符串

1.String str=1+''; 加空格
2.integer.tostring(1)  使用包装类tostring
3.String.valueof(1)     使用包装类string

字符串转换基本数据类型

integer.parseint(str)   包装类parseint方法

static如何使用:

1.一旦使用了static修饰成员方法,就成为了 静态方法,静态方法不属于对象,而属于类。

如果没有static修饰成员方法,就必须创建对象,然后通过对象才能使用它

如果有了static关键字,那么就不需要创建对象,直接使用类名称进行调用

2.如果一个成员变量使用了static关键字,那么这个变量就不属于对象自己,而属于所在的类。

多个对象共享同一份数据。

3.无论使用成员变量,还是成员方法,如果有了static都推荐使用类名称调用

静态变量:类名称.静态变量

静态方法:类名称.静态方法()

4.静态方法不能访问非静态变量

因为:初始化的时候在内存先有的静态内容,然后有非静态内容,“先人不知道后人,后人知道先人”

5.静态方法不能使用this,

因为:this调用的是当前对象,而此时没有对象

6.静态代码块用来一次性的对静态成员变量进行赋值

静态代码块》构造函数》普通方法

内部类如何用:

成员内部类

一个类内部包含另一个类,在里面的那个类就是成员内部类

内部类访问外部类,随意访问,外用内,需要内部类对象

如何使用成员内部类?有两种方式

1.间接方式:在外部类的方法中,使用内部类,然后调用时候只调用外部类的方法。

2.直接方式:外部类名称.内部类名称 对象名=new 外部类名称().new 内部类名称()

内部类如何访问外部类重复成员变量?

外部类.this.外部类成员变量

局部内部类

一个类定义在一个方法内部,那么就是一个局部内部类。

因为只能通过方法调用,所以必须在方法中调用了局部内部类。

局部内部类,如果希望访问所在方法的局部变量,那么这个变量必须是有效final的。

类的权限修饰符在定义一个类的规则

外部类:public /default

成员内部类:public protect default private

局部内部类:什么都不写

匿名内部类

如果接口的实现类(或者是父类的子类)只需要使用唯一的一次,这种情况就可以省略该类的定义,而改为匿名内部类,使用这种方式可以省略一个实现类。接口名称 对象名 =new 接口名称(){覆盖重写所有的抽象方法}

使用注意事项:

只是用一次,可以省略实现类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值