Java开发——14.static和fianl关键字

简介: static和fianl关键字

static关键字:

它可以用来修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属于某个对象的。也就是说,被static修饰的成员变量可以通过类名.成员变量名直接调用,而不用创建对象在调用变量了。


static应用场景:


static 变量          静态变量
static 方法          静态方法
static {代码块}        静态代码块


静态变量:


//static定义格式以及特点static的特点:(它可以修饰成员变量,还可以修饰成员方法)
A:随着类的加载而加载回想main方法,但是被static修饰的内容会存储到一块固定的内容区域即,方法区中的静态区。B:优先于对象存在C:被类的所有对象共享如果某个成员变量是被所有对象共享的,那么它就应该定义为静态的。举例:饮水机(用静态修饰)
水杯(不能用静态修饰)
D:可以通过类名调用其实它本身也可以通过对象名调用。推荐使用类名调用。静态修饰的内容一般我们称其为:与类相关的,类成员,可以直接使用类名进行访问。


静态方法:


static关键字注意事项
    A:在静态方法中是没有this关键字的
      如何理解呢?
        静态是随着类的加载而加载,this是随着对象的创建而存在。
        静态比对象先存在。
    B:静态方法只能访问静态的成员变量和静态的成员方法
        静态方法:
          成员变量:只能被方法访问
          成员方法:只能访问静态成员方法
        非静态方法:
          成员变量:可以被静态方法访问,也可以被非静态方法访问
          成员方法:可以访问静态的成员方法,也可以是非静态的成员方法。
      简单记:
        静态只能访问静态。非静态可以访问静态也可以访问非静态


static注意事项:

静态方法可以直接访问类变量和静态方法。

静态方法不能直接访问普通成员变量或成员方法。反之,成员方法可以直接访问类变量或静态方法。

静态方法中,不能使用this关键字。


静态只能访问静态。非静态可以访问静态也可以访问非静态!!!


静态代码块:

1.定义在成员位置,使用static修饰的代码块{}。

2.定义在类中,方法外

3.随着类的加载而执行并且只会执行一次优先于main方法和构造方法执行


静态代码块的声明格式:


public class ClassName{ 
    static {
        // 执行语句 
    }
}


static代码演示:


publicclassDemo {
static {
intage=26;
Stringname="小红";
System.out.println(age+name);
    }
publicstaticvoidmain(String[] args) {
Testte=newTest();
Testte2=newTest();
Testte3=newTest();
    }
}
/*这里声明了三个对象,但是只执行了一次static代码块里面的内容*/




fianl关键字:

学习了继承后,我们知道,子类可以在父类的基础上改写父类内容,比如,方法重写。那么我们能不能随意的继承API中提供的类,改写其内容呢?显然这是不合适的。为了避免这种随意改写的情况,Java提供了final关键字,用于修饰不可改变内容


final的特点:

被final关键字修饰的内容不可改变,final可以用来修饰类、方法以及变量。 类:被修饰的类,不能被继承。 方法:被修饰的方法,不能被重写。变量:被修饰的变量,不能被重新赋值,变成了常量


//final修饰类
public final class 类名 {
   方法(){}
}
//注意:被final修饰的类不能被继承



//final修饰方法publicclass类名 {
final方法(){}
}
//注意:被final修饰的方法不能被继承



//final修饰变量publicclass类名 {
final变量类型变量名;
final方法(){}
}
//注意:被final修饰的变量,是常量,不能重新赋值


此处,先引申进来一个关键字finally,后期会在异常中遇到,此处先打个照面!finally是用在异常处理中的,用在try{ }catch(异常对象 对象名){}finally{}中,表示在finally中代码无论程序是否运行正确都会执行!此处仅知道有这个关键字即可,在异常中会讲解。


try{ 
  可能存在异常的代码;
}catch(异常对象 对象名){
  异常返回值;
}finally{
  自定义内容;
}
相关文章
|
4天前
|
人工智能 自然语言处理 Java
Spring AI,Spring团队开发的新组件,Java工程师快来一起体验吧
文章介绍了Spring AI,这是Spring团队开发的新组件,旨在为Java开发者提供易于集成的人工智能API,包括机器学习、自然语言处理和图像识别等功能,并通过实际代码示例展示了如何快速集成和使用这些AI技术。
Spring AI,Spring团队开发的新组件,Java工程师快来一起体验吧
|
1天前
|
数据采集 供应链 JavaScript
分享基于Java开发的Java毕业设计实战项目题目
这篇文章分享了67套基于Java开发的毕业设计实战项目题目,覆盖了互联网、企业管理、电子政务、Java基础项目、ERP系统、校园相关、医疗以及其他细分行业等多个领域,并推荐了使用IDEA、Vue和Springboot的技术栈。
|
1天前
|
分布式计算 Java API
Java 8带来了流处理与函数式编程等新特性,极大提升了开发效率
Java 8带来了流处理与函数式编程等新特性,极大提升了开发效率。流处理采用声明式编程模型,通过filter、map等操作简化数据集处理,提高代码可读性。Lambda表达式支持轻量级函数定义,配合Predicate、Function等接口,使函数式编程无缝融入Java。此外,Optional类及新日期时间API等增强功能,让开发者能更优雅地处理潜在错误,编写出更健壮的应用程序。
6 1
|
1天前
|
人工智能 网络协议 Java
23.12月中旬 上海寻序人工智能科技-上海嘉定-Java开发实习生-薪资150-230/d 面经
关于上海寻序人工智能科技有限公司Java开发实习生岗位的面试经验分享,涵盖了技术问题如对象存储MinIO、ArrayList扩容、Object类方法、hashCode和equals方法、处理哈希冲突、JVM垃圾回收器、GC算法、网络协议、邮件协议、HTTP请求方法、Linux和Docker命令、Dockerfile制作等。
3 0
|
5天前
|
SQL 存储 Java
完整java开发中JDBC连接数据库代码和步骤
该博客文章详细介绍了使用JDBC连接数据库的完整步骤,包括加载JDBC驱动、提供连接URL、创建数据库连接、执行SQL语句、处理结果以及关闭JDBC对象的过程,并提供了相应的示例代码。
|
6天前
|
Java
【Java】static 类方法中注意事项
【Java】static 类方法中注意事项
|
6天前
|
Java
【Java】static 修饰成员方法
【Java】static 修饰成员方法
|
6天前
|
Java
【Java】static 修饰变量
【Java】static 修饰变量
|
12月前
|
存储 Java 数据库
Java-对象的操作(构造、初始化、封装)、static成员以及代码块(中)
Java-对象的操作(构造、初始化、封装)、static成员以及代码块(中)
49 1
|
12月前
|
Java 编译器
Java-对象的操作(构造、初始化、封装)、static成员以及代码块(上)
Java-对象的操作(构造、初始化、封装)、static成员以及代码块(上)
56 1
Java-对象的操作(构造、初始化、封装)、static成员以及代码块(上)