Java中static、final修饰符、对常量变量的总结
static
static属性
定义:static修饰的属性就叫静态属性;如果类的某个属性,不管创建多少个对象,属性的存储空间只有唯一的一个,那么这个属性就应该用static修饰
作用:static属性可以使用对象调用,也可以直接用类名调用
特点:静态属性是类的所有对象共享的,即不管创建了多少个对象,静态属性在内存中只有一个
static方法
定义:static修饰的方法称为静态方法;如果某个方法不需要与某个特定的对象绑定,那么该方法可以使用static修饰
作用:static方法可以使用对象调用,也可以直接用类名调用,建议用类名直接调用
特点:任何方法都可以直接调用静态方法、非静态方法不能直接调用,需要创建对象后用对象名调
应用场景:如果某个方法与实例无关,也就是说不管哪个对象调用这个方法,都执行相同的操作,则应该定义为静态方法,就不需要创建对象后再使用该方法
例如:API中的Math类,都是静态方法,因为进行数学运算时,与Math对象本身无关,使用类直接调用即可
static块
定义:用static修饰的代码块表示静态代码块,当Java虚拟机加载类时,就会执行该代码块
语法:直接在代码块{...}前加上static就变成静态块、static {}
作用:静态块只有在类加载的时候被执行一次,不管创建多少个对象,都不会再执行;一个类中可以有多个静态块,按照顺序执行。
应用场景:如果一个类加载的时候,总要预先做一些事情,则可以放在静态块中,例如,读取一个属性文件,进行一些常规配置,写一些日志等。
static内部类
例外:static不能修饰普通类,但是可以修饰内部类
final
作用:用于声明属性,方法和类
类:不能被定义为抽象类或是接口,不可被继承
属性:定义就必须直接赋值或者在构造方法中进行赋值,并且后期都不能修改
方法:定义必须有实现代码,并且子类里不可被覆盖
特点:当final修饰属性时,基本数据类型的属性将成为常量,不能被修改
常量和变量的总结(按作用于区分)
在类中声明的变量或常量叫属性;或者叫成员变量
在方法中声明的变量叫局部变量;或者临时变量
属性可以使用final修饰;局部变量也可以
属性可以使用static修饰;局部变量不可以
属性可以使用四种权限修饰符修饰;局部变量不可以
属性可以在整个类中使用;局部变量只在当前方法中使用
属性都有默认的初始化值,如引用类型都是null,整型是0等;局部变量不被自动初始化,必须手动初始化
属性的生命周期很长,随着类加载或者创建对象被初始化,直到没有对象引用才回收;局部变量生命周期很短,执行某个方法时临时被初始化,方法结束即被回收
如果局部变量与属性重名,则遵守就近原则,可以使用this区分
代码示例
package summary3; final class Final //创建一个final类、不能被定义为抽象类或是接口,不可被继承
{
final void Final() //创建一个final方法:不能被覆写,只能被继承
{ }
}
public class FeatureModifier
{
{ //这是一个块:每次调用构造方法是被调用
System.out.println("块每次调用构造方法的时候就会被调用");
}
static //这是一个静态块:只有加载主类时被调用
{
System.out.println("静态块每次加载类的时候就会被调用");
} final int j; //声明一个final属性、基本数据类型值变为常量不能修改
FeatureModifier(int i) //创建带有一个参数的构造方法
{
this.j=i; //final属性必须在声明时赋值、或者在构造方法里赋值
} static class Static //static修饰的类只能是内部类
{
static int i; //声明static属性,可以用对象或者类名直接调用
static void mehtod() //可以用类名直接调用、任何方法都可以直接调用静态方法
{
System.out.println("这是一个静态方法"+i);
} }
public static void main(String[] args) //加载类时会调用块
{
FeatureModifier FM1 = new FeatureModifier(0); //每一次调用构造方法时都会调用块
FeatureModifier FM2 = new FeatureModifier(1); //每一次调用构造方法时都会调用块
Static.i = 10;
Static.mehtod();
}
}
Java中static、final修饰符、对常量变量的总结的更多相关文章
- Java中的final修饰符
1.什么时候可以选择final修饰符 如果想让一个类不被其他类继承,不允许在有子类,这时候就要考虑用到final来修饰. 2.用final修饰的类 首先大家要明白,用final修饰的类是不能被继承的, ...
- java中的类修饰符、成员变量修饰符、方法修饰符。
类修饰符: public(访问控制符),将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类. abstract,将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现. fin ...
- java中的类修饰符、成员变量修饰符、方法修饰符
类修饰符: public(访问控制符),将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类. abstract,将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现. fi ...
- Java学习笔记十九:Java中的访问控制修饰符
Java中的访问控制修饰符 一:Java修饰符的种类: 访问修饰符 非访问修饰符 修饰符用来定义类.方法或者变量,通常放在语句的最前端.我们通过下面的例子来说明: public class Hello ...
- 详解Java中的访问控制修饰符(public, protected, default, private)
Java中的访问控制修饰符已经困惑笔者多时,其中较复杂的情况一直不能理解透彻.今天下定决心,系统.全面地研究Java中的访问控制修饰符的所有方面,并整理成这篇文章,希望有同样疑惑的读者读完后能有所收获 ...
- Java之Static静态修饰符详解
Java之Static静态修饰符详解 Java之Static静态修饰符详解 一.特点 1.随着类的加载而加载,随着类的消失而消失,生命周期最长 2.优先于对象存在 3.被所有类的对象共享 4.可以直接 ...
- 分享知识-快乐自己:java 中的访问修饰符
1):Java中的访问修饰符: Java面向对象的基本思想之一是封装细节并且公开接口.Java语言采用访问控制修饰符来控制类及类的方法和变量的访问权限,从而向使用者暴露接口,但隐藏实现细节. 访问控制 ...
- Java中static final 与 final 的区别(转载)
转自:http://advance0683.iteye.com/blog/1107732 Java中static final 与 final 的区别: 例子: Java代码 import java.u ...
- java中4种修饰符访问权限的区别及详解全过程
java中4种修饰符访问权限的区别及详解全过程 http://jingyan.baidu.com/article/fedf0737700b3335ac8977ca.html java中4中修饰符分别为 ...
- String的实例化与static final修饰符
String两种实例化方式 一种是通过双引号直接赋值的方式,另外一种是使用标准的new调用构造方法完成实例化.如下: String str = "abcd"; String str ...
随机推荐
- hibernate懒加载
Hibernate懒加载解析 hibernatejoinsession数据库sqlobject Hibernate懒加载解析 在Hibernate框架中,当我们要访问的数据量过大时,明显用缓存不太合适 ...
- PHP——explode的应用(获取字符串,拆为下拉列表)
<?php //定义有默认值的函数 function Main3($f=5,$g=6) { echo $f*$g; } Main3(2,3); echo "<br />&q ...
- 探索未知种族之osg类生物---呼吸分解之事件循环一
事件循环和更新循环 终于到了我们嘴里经常念叨的事件循环.更新循环以及渲染循环了.首先我们来区分一下事件循环和渲染循环,他们两个首先是两个不同顺序执行的过程,我们有时候会用到任意node的updateC ...
- (O)编写可维护的代码示例(原创)
图片轮播: /*广告图片数组*/ var imgs=[ {"i":0,"img":"images/index/banner_01.jpg"} ...
- python基础易错题
1.以下代码输入什么: class Person: a = 1 def __init__(self): pass def getAge(self): print(__name__) p = Perso ...
- Json数据处理协议与办法
[JSON学习] 一.概述 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文 本格式,是理想的数据交换格式.同时,J ...
- Python generator 的yield (enumerate)
生成杨辉三角 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 def triangles(max): L = [1,] while len(L) - 1 < ...
- activiti如何获取当前节点以及下一步路径或节点(转)
ACTIVITI相对于JBPM来说,比较年轻,用的人少,中文方面的资料更少,我根据网上到处找得资料以及看官方文档总结出来了代码,非常不容易啊.废话不多说,直接上代码吧: 首先是根据流程ID获取当前任务 ...
- ubuntu14简介/安装/菜鸟使用手册
Linux拥有众多的发行版,可以分为两大类商业版和开源社区免费版.商业版以Radhat为代表,开源社区版以debian为代表. 简单的比较ubuntu与centos. Ubuntu 优点:丰富的 ...
- 【Erlang】源码安装
Erlang介绍 Erlang(['ə:læŋ])是一种通用的面向并发的编程语言,它由瑞典电信设备制造商爱立信所辖的CS-Lab开发,目的是创造一种可以应对大规模并发活动的编程语言和运行环境. Erl ...