博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java学习笔记12(final ,static修饰符)
阅读量:4331 次
发布时间:2019-06-06

本文共 1636 字,大约阅读时间需要 5 分钟。

final:

  意思是最终的,是一个修饰符,有时候一个功能类被开发好了,不想被子类重写就用final定义,

用final修饰的最终数据成员:如果一个类的数据成员用final修饰符修饰,则这个数据成员就被限定为最终数据成员。最终数据成员可以在声明时进行初始化,也可以通过构造方法赋值,但不能在程序的其他部分赋值,他的值在整个执行过程中时不能改变的。

 

  用final修饰的类:final修饰的类,不能被其他类继承,但是可以继承其他类

  用final修饰的方法:不可以被子类重写;

  用final修饰成员变量时:1)final修饰的变量称为常量,只能被赋值一次,

 用final修饰符说明常量时,需要注意:1)需要说明常量的数据类型并指出敞亮的具体值。

                   2)若一个类有多个对象,而某个数据成员是常量,最好将此常量声明为static,即用static final两个修饰符来修饰他,这样做可以节省空间。

                一次赋值终身不变,

                如果用final修饰引用数据量类型时,那么保存变量的内存地址终身不变。

              2)成员变量可以直接赋值,也可以通过构造方法赋值,所以用final修饰的成员变量可以选择一种赋值,但是一定要保证只能赋值一次。

public class Person {    //直接赋值(实际中建议这样方式):    //final int age = 18;    //构造方法赋值:    final int age;    public Person(int age){        this.age = age;    }}

static:

  意思是静态的

  意义举例:

    一个学校里有一群学生对象,他们都有不同的姓名和年龄,但是他们的学校名都是相同的,

    创建学生对象的时候,成员变量中的学校名在每次新建对象的时候都会存入堆内存,但是每次存的数据都是相同的,造成了内存的浪费

    于是想到,能否将学校名提出来,放到某个地方,让多个对象共享,节省内存

    于是,出现了static关键字:

      静态多了一种调用方式

    被静态修饰的成员,可以被类的名字直接调用,例如:

public class Student {    String name;     static String school;}
public class Test1 {    public static void main(String[] args) {        Student s=new Student();        s.name="张三";//创建对象调用变量赋值        Student.school="AAA";//通过类名直接赋值    }}

  静态的注意事项:1)静态不能调用非静态,原因:声明周期,静态先于非静态存在于内存中,无法调用不存在的;

          2)非静态可以调用静态;

          就好比现代人可以通过历史书了解古人,古人不能了解现代人一样,先后顺序不同,静态先于非静态存在

          3)静态修饰符应用场景:

              本身是一个成员修饰符,可以修饰成员变量,可以修饰成员方法

              多个事物之间是否存在共性数据?这里就可以将这个共性数据定义成静态

              只要方法没有调用过非静态成员,则将其定义为静态

在开发中,有时候需要定义静态常量,并且常量名要求全大写,空格用_代替

固定格式:public static final String THIS_NAME = "XXXX"

转载于:https://www.cnblogs.com/Zs-book1/p/10554569.html

你可能感兴趣的文章
铁路信号基础
查看>>
RobotFramework自动化2-自定义关键字
查看>>
[置顶] 【cocos2d-x入门实战】微信飞机大战之三:飞机要起飞了
查看>>
BABOK - 需求分析(Requirements Analysis)概述
查看>>
第43条:掌握GCD及操作队列的使用时机
查看>>
Windows autoKeras的下载与安装连接
查看>>
CMU Bomblab 答案
查看>>
微信支付之异步通知签名错误
查看>>
2016 - 1 -17 GCD学习总结
查看>>
linux安装php-redis扩展(转)
查看>>
Vue集成微信开发趟坑:公众号以及JSSDK相关
查看>>
技术分析淘宝的超卖宝贝
查看>>
i++和++1
查看>>
react.js
查看>>
P1313 计算系数
查看>>
NSString的长度比较方法(一)
查看>>
Azure云服务托管恶意软件
查看>>
My安卓知识6--关于把项目从androidstudio工程转成eclipse工程并导成jar包
查看>>
旧的起点(开园说明)
查看>>
生产订单“生产线别”带入生产入库单
查看>>