java学习笔记12(final ,static修饰符)
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"
java学习笔记12(final ,static修饰符)的更多相关文章
- Java学习笔记10---访问权限修饰符如何控制成员变量、成员方法及类的访问范围
1.Java有三种访问权限修饰符,分别为public.protected.private,还有一种为缺省权限修饰符的情况,记为default.其中,可以由public和default来修饰类:这四种修 ...
- 【java学习笔记2】访问控制修饰符 public、protected、默认、private
先写了一个User()类: package chapter01; public class User { // 私有的 private int id; // 受保护的 protected int ag ...
- 0025 Java学习笔记-面向对象-final修饰符、不可变类
final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...
- java final .static修饰符
static静态修饰符(使用static修饰符修饰的成员变量.常量.和成员方法成为静态变量.常量和方法,他们统称为静态成员,归整个类所有,不依赖于类的特定实例,被类的所有实例共享,只要这个类被加载,J ...
- Java 学习(5):修饰符 运算符
目录 --- 修饰符 --- 运算符 --- 循环结构 --- 分支结构 修饰符: 修饰符用来定义类.方法或者变量,通常放在语句的最前端.如下: public class className { // ...
- 《JAVA学习笔记 (final关键字)》
[14-9]面向对象-final关键字 /* 继承的弊端,打破封装性. 不让其他类继承该类,就不会有重写. 怎么能实现呢?通过Java中的一个关键子来实现,final(最终化). [final关键字] ...
- Vue学习笔记十一:按键修饰符和自定义指令(钩子函数)
目录 padStart:补位 按键修饰符 Vue提供的按键修饰符 自定义按键修饰符 自定义指令 自定义指令的使用 钩子函数 钩子函数参数 使用钩子函数的bingding参数 私有自定义指令 钩子函数的 ...
- Vue.js学习笔记(三) - 修饰符
本篇将简单介绍常用的修饰符. 在上一篇中,介绍了 v-model 和 v-on 简单用法.除了常规用法,这些指令也支持特殊方式绑定方法,以修饰符的方式实现.通常都是在指令后面用小数点“.”连接修饰符名 ...
- Vue学习笔记五:事件修饰符
目录 什么是事件修饰符 没有事件修饰符的问题 HTML 运行 使用事件修饰符 .stop阻止冒泡 .prevent 阻止默认事件 .capture 添加事件侦听器时使用事件捕获模式 .self 只当事 ...
随机推荐
- Spring中添加新的配置表,并对新的配置表进行处理
实习过程中boss交代的任务(以下出现的代码以及数据只给出小部分,提供一个思路) 目的:Spring中添加新的配置表,并对新的配置表进行处理:替换的新的配置表要友好,同时保证替换前后功能不能发生变化. ...
- 『计算机视觉』FPN:feature pyramid networks for object detection
对用卷积神经网络进行目标检测方法的一种改进,通过提取多尺度的特征信息进行融合,进而提高目标检测的精度,特别是在小物体检测上的精度.FPN是ResNet或DenseNet等通用特征提取网络的附加组件,可 ...
- javascript作用域、闭包、对象与原型链
原文作者总结得特别好,自己收藏一下.^-^ 1.作用域1.1函数作用域JS的在函数中定义的局部变量只对这个函数内部可见,称之谓函数作用域.它没有块级作用域(因此if.for等语句中的花括号不是独立作用 ...
- ubuntu计划任务的编写
1,首先,我编写的计划任务是在ubunut系统上的.首先我们来认识一下每一个 * 这样子的符号代表什么意思吧! * * * * * 从左到右: 第1列表示分钟1-59 每分钟用*或者 */1表 ...
- leetcode-algorithms-12 Integer to Roman
leetcode-algorithms-12 Integer to Roman Roman numerals are represented by seven different symbols: I ...
- node.js项目多环境配置
配置多种场景 我们的系统是要在不同的环境下运行的,不同的环境可能是不同的端口号,不同的数据库地址,数据库用户和密码, 并且可能有的需要自动重启有的不需要自动重启. 我们在有一个配置的时候是无法满足这么 ...
- Mysql可重复读原理
mysql可重复读现象及原理分析 InnoDB---可重复读隔离级别的底层实现原理 概念 可重复读的实现 Repeatable Read(可重复读):一个事务在执行过程中可以看到其他事务已经提交的新插 ...
- weblogic安装教程(以weblogic 11g为例)
1.下载jdk和weblogic安装介质 一般的搭配是jdk1.5+weblogic92.jdk1.6+weblogic11g(weblogic10.3.6) jdk历史版本下载链接:http://w ...
- windows7时间同步设置
1. 设置同步源 服务器修改为本车的104的ip地址,例如23车,手动输入 96.3.123.104 2. 设置同步周期. 注册表法 在“运行”框输入“Regedit”进入注册表编辑器 这种方法是通过 ...
- js如何比较两个日期之间相差数(天、时、分、秒)
首先,我们模拟一个例子 引入js文件 <script type="text/javascript" src="jquery.min.js">< ...