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{
  自定义内容;
}
相关文章
|
10天前
|
存储 缓存 Java
Java 并发编程——volatile 关键字解析
本文介绍了Java线程中的`volatile`关键字及其与`synchronized`锁的区别。`volatile`保证了变量的可见性和一定的有序性,但不能保证原子性。它通过内存屏障实现,避免指令重排序,确保线程间数据一致。相比`synchronized`,`volatile`性能更优,适用于简单状态标记和某些特定场景,如单例模式中的双重检查锁定。文中还解释了Java内存模型的基本概念,包括主内存、工作内存及并发编程中的原子性、可见性和有序性。
Java 并发编程——volatile 关键字解析
|
9天前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
1月前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
56 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
10天前
|
缓存 安全 Java
Java volatile关键字:你真的懂了吗?
`volatile` 是 Java 中的轻量级同步机制,主要用于保证多线程环境下共享变量的可见性和防止指令重排。它确保一个线程对 `volatile` 变量的修改能立即被其他线程看到,但不能保证原子性。典型应用场景包括状态标记、双重检查锁定和安全发布对象等。`volatile` 适用于布尔型、字节型等简单类型及引用类型,不适用于 `long` 和 `double` 类型。与 `synchronized` 不同,`volatile` 不提供互斥性,因此在需要互斥的场景下不能替代 `synchronized`。
2096 3
|
19天前
|
存储 JavaScript 前端开发
基于 SpringBoot 和 Vue 开发校园点餐订餐外卖跑腿Java源码
一个非常实用的校园外卖系统,基于 SpringBoot 和 Vue 的开发。这一系统源于黑马的外卖案例项目 经过站长的进一步改进和优化,提供了更丰富的功能和更高的可用性。 这个项目的架构设计非常有趣。虽然它采用了SpringBoot和Vue的组合,但并不是一个完全分离的项目。 前端视图通过JS的方式引入了Vue和Element UI,既能利用Vue的快速开发优势,
100 13
|
24天前
|
算法 Java API
如何使用Java开发获得淘宝商品描述API接口?
本文详细介绍如何使用Java开发调用淘宝商品描述API接口,涵盖从注册淘宝开放平台账号、阅读平台规则、创建应用并申请接口权限,到安装开发工具、配置开发环境、获取访问令牌,以及具体的Java代码实现和注意事项。通过遵循这些步骤,开发者可以高效地获取商品详情、描述及图片等信息,为项目和业务增添价值。
56 10
|
17天前
|
前端开发 Java 测试技术
java日常开发中如何写出优雅的好维护的代码
代码可读性太差,实际是给团队后续开发中埋坑,优化在平时,没有那个团队会说我专门给你一个月来优化之前的代码,所以在日常开发中就要多注意可读性问题,不要写出几天之后自己都看不懂的代码。
54 2
|
27天前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
7月前
|
缓存 安全 Java
《volatile使用与学习总结:》多层面分析学习java关键字--volatile
《volatile使用与学习总结:》多层面分析学习java关键字--volatile
37 0
|
8月前
|
安全 Java 编译器
Java多线程基础-6:线程安全问题及解决措施,synchronized关键字与volatile关键字(一)
线程安全问题是多线程编程中最典型的一类问题之一。如果多线程环境下代码运行的结果是符合我们预期的,即该结果正是在单线程环境中应该出现的结果,则说这个程序是线程安全的。 通俗来说,线程不安全指的就是某一代码在多线程环境下执行会出现bug,而在单线程环境下执行就不会。线程安全问题本质上是由于线程之间的调度顺序的不确定性,正是这样的不确定性,给我们的代码带来了很多“变数”。 本文将对Java多线程编程中,线程安全问题展开详细的讲解。
109 0