java基础

java题目练习day01

Java提供的四种访问控制符

Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。

  • default:在同一个包里面可见,不适用任何修饰符。使用对象:类、接口、变量、方法。

  • private:在同一类中可见。使用对象:变量、方法。注意:不能修饰类(外部类)

  • public:对所有类可见。使用对象:类、接口、变量、方法。

  • protected:对同一包内的类和所有子类可见。使用对象:变量方法。注意:不能修饰类(外部类)。

    1717913797417

Object类

Object类是所有类的根类,位于java.lang包中。如果一个类没有显示地继承另外一个类,那么它默认继承Object类。Object是java对象继承的最顶层,所有的java类都直接或间接地继承Object类。

1717919595566

Java创建对象的方式

1.使用new关键字创建:最常见的方式

1717920342818

2.使用Class.forName()配合newInstance():反射机制创建对象。

3.使用clone()方法:克隆一个对象。

4.使用对象序列化和反序列化:通过读取字节数据恢复为对象。

5.使用Constructor.newInstance():反射中的Constructor创建对象。

switch case支持哪些数据类型

1.整型:所有的整型类型(int byte short long)以及他们的包装类。

2.枚举类型:允许使用枚举常量作为case标签。

3.字符串类型(string):从java7开始,switch语句支持字符串变量,允许使用字符串字面量作为case标签。

static关键字

主要用于创建类级别的变量和方法。它可以应用于变量、方法、代码块和嵌套类。使用static关键字声明的成员属于类本身,而不是类的某个特定实例。

1717921627640

1.静态变量

  • 类变量:static变量也称为类变量,它被所有类实例共享。在对象之间不会有独立的变量副本;所有实例都共享一个静态变量。

  • 初始化:静态变量在类加载时初始化,仅初始化一次。

2.静态方法

  • 类方法:静态方法属于类而不属于类的任何对象,可以在没有创建类实例的情况夏调用静态方法。

  • 限制:静态方法只能直接访问类的静态成员,不能直接访问实例成员,不能使用this或super关键字。

3.静态代码块

  • 静态代码块:用于初始化类的静态变量。静态变量在类加载时执行,并且只执行一次。

4.静态内部类

  • 独立性:静态内部类时嵌套在另一个类内部的静态类。它可以在没有外部类实例的情况下被实例化,并且只能访问外部类的静态成员。

使用static关键字的优势

  • 节省内存:由于静态成员被所有实例共享,因此可以减少内存的使用。

  • 无需创建对象就可以访问:静态方法和静态变量可以在没有创建类的实例的情况下访问,提供了一种访问类级别方法和变量的方便方式。

方法的重写

方法的重写是发生在子类里面的,遵循三同一大一小原则

构造方法不能被重写。如果不能继承一个方法,则不能重写这个方法。

三同:

方法名相同;

参数列表必须完全与被重写方法的相同;

返回类型必须完全与被重写方法的返回类型相同;

一大:

访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。

一小:

父类的成员方法只能被它的子类重写。

声明为final的方法不能被重写。

声明为static的方法不能被重写,但是能够被再次声明。

子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法。

子类和父类不在同一个包中,那么子类只能够重写父类的声明为public和protected的非final方法。

重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以。

方法的重载

方法的重载是发生在同一类里面的

被重载的方法必须改变参数列表(参数个数或类型或顺序不一样);

被重载的方法可以改变返回类型;

被重载的方法可以改变访问修饰符;

被重载的方法可以声明新的或更广的检查异常;

方法能够在同一个类中或者在一个子类中被重载。

无法以返回值类型作为重载函数的区分标准。

& 按位与运算符

用于对两个整数进行按位与操作。按位与运算符对两个操作数的每一位执行与操作,如果对应位都为 1,则结果为 1,否则结果为 0。

& 运算符还可以用于布尔类型的操作数,执行逻辑与操作。当 & 运算符的两个操作数都为 true 时,结果为 true;否则结果为 false。

异常处理

1717924049275

编译时异常必须显示处理,运行时异常交给虚拟机。

运行时异常可以不处理。当出现这样的异常时,总是由虚拟机接管。比如我们从来没有人去处理过Null Pointer Exception异常,它就是运行时异常,并且这种异常还是最常见的异常之一。出现运行时异常后,系统会把异常一直往上层抛,一直遇到处理代码。如果没有处理块,到最上层,如果是多线程就由Thread.run()抛出,如果是单线程就被main()抛出。抛出之后,如果是线程,这个线程也就退出了。如果是主程序抛出的异常,整个程序也就退出了。运行时异常是Exception的子类,也有一般异常的特点,是可以被Catch块处理的。只不过往往不对它处理罢了。也就是说,如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是主程序终止。

  • 15
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值