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 只当事 ...
随机推荐
- 【JS】【3】标签显示几秒后自动隐藏
$("#XXX").show().delay(2000).hide(0); 2000,0:可选,速度,(毫秒:"slow":"fast") ...
- python-flask基本应用模板
1.模板继承 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- Wannafly挑战赛22-A/B/C
链接:https://www.nowcoder.com/acm/contest/160/A来源:牛客网 题目描述 有一个计数器,计数器的初始值为0,每次操作你可以把计数器的值加上a1,a2,...,a ...
- java前后向查找个人理解
举一个最简单的栗子 这个前后说的是0宽所在的位置,是在:前还是后 http://www.sb.com 1.前向正向查找 (1) 如果用:.*(?=:) 首先(?=:)被称作0宽度断言,所谓0宽度应该是 ...
- Mac系统安装和配置tomcat步骤详解
一:下载 打开Apache Tomcat官网,选择需要的版本下载: 二:存放到本地 文件夹重名民为ApacheTomcat,放到/Users/计算机名/Library/目录下 三:启动Tomcat 打 ...
- python爬虫---urllib库的基本用法
urllib是python自带的请求库,各种功能相比较之下也是比较完备的,urllib库包含了一下四个模块: urllib.request 请求模块 urllib.error 异常处理模块 u ...
- ajax请求成功前,加载中loading显示
/*第一次刷新--非定时器刷新数据*/ var fistInitColumn = true; var getAllColumnDatas = function(){ var params = {}; ...
- ssh和ssl的联系和区别
ssh:Secure Shell,安全Shell,是一个软件,处于应用层旨在取代明文通信的telnet:对应的开源实现程序是openssh. ssl:Secure Sockets Layer,安全套接 ...
- 线性回归决定系数之Why SST=SSE+SSR
线性最小二乘法的原则是使得误差的平方和最小,即 为了使S最小,令其对参数的偏导数为零: 即 即 根据方程1和方程2,得 又∵ ∴ 参考链接:https://math.stackexchange.com ...
- ajax参数传递之[HttpGet]/[HttpPost]/[HttpPut]/[HttpDelete]请求
$.ajax({ type: "get", url: "http://localhost:27221/api/Charging/GetByModel", con ...