Java面向对象之关键字static 入门实例
一、基础概念
静态关键字 static 是成员修饰符,直接用于修饰成员。
(一)特点:
1.被静态修饰的成果,可以直接被类名所调用。
2.静态成员优先于对象存在。
3.静态成员随着类的加载而加载。随着类的消失而消失。静态成员的生命周期很长。
(二)注意事项:
1.静态方法只能访问静态成员,不能访问非静态成员。
2.静态方法中不能出现this或者super关键字。
3.主函数是静态的。
(三)什么时候用:
1.成员变量:如果数据在所有对象中都是一样的。直接用静态修饰。
2.成员函数:如果函数没有访问过对象中的属性数据,那么该函数就是静态的。
(四)成员变量和静态变量的区别:
1.名称:成员变量也叫实例变量。静态变量也叫类变量。
2.内存存储:成员变量存储到堆内存的对象中。静态变量存储到方法区的静态区中。
3.生命周期:成员变量随着对象的出现而出现,随着对象的消失而消失。静态变量随着类的加载而加载。随着类的消失而消失。
(五)静态代码块:
1.随着类的加载而执行,而且只执行一次。
2.给类进行初始化。
3.类不需要创建对象,但是需要初始化。这是将部分代码存储到静态代码块中。
二、实例代码
class Person
{
private String name;
private int age;
static String country = "CN";//定义静态变量country Person(String name,int age)
{
this.name = name;
this.age = age;
}
public void show()
{
System.out.println("name="+name+",age"+age);
}
//既然sleep函数没有访问到对象中的属性,可以用static修饰该方法。(节约内存的使用)
public static void sleep()
{
System.out.println("sleep......"); } static//静态代码块
{
System.out.println("static......");
} static void show1()
{
System.out.println(country);//直接访问静态变量
}
static void show2()
{
System.out.println(Person.country);//通过类名的方式访问静态变量
} } class StaticDemo
{
public static void main(String[] args)
{
Person p = new Person("xiaoming",20);
Person.sleep();//通过类名的方式调用静态sleep函数
Person.sleep();
System.out.println(Person.country);//通过类名访问,输出静态变量country的值
Person.show1();
Person.show2();
}
}
三、代码运行
Java面向对象之关键字static 入门实例的更多相关文章
- Java面向对象之关键字final 入门实例
一.基础概念 1.关键字final可以修饰类.函数.变量. 2.关键字final修饰的类不可以被继承. 3.关键字final修饰的方法不可以被覆盖. 4.关键字final修饰的变量是一个常量,只能被赋 ...
- Java面向对象之关键字super 入门实例
一.基础概念 (一)super关键字 super关键字的用法和this相似.this代表的是当前对象.super代表的是父类中内存空间. 子父类中是不会出现同名属性的情况. (二)继承中.成员变量问题 ...
- Java面向对象之关键字this 入门实例
一.基础概念 1.关键字this是指:哪个对象调用this所在的函数.this就指向当前这个对象. 2.用法: (1).this关键字可以解决:构造函数私有化问题. 注意:构造函数只能被构造函数调用, ...
- Java面向对象之抽象类abstract 入门实例
一.基础概念 抽象事物,是若没有具体的信息可以描述这个事物,这个事物可以称为抽象事物. 抽象类,是不断的向上抽取而来.抽取方法声明而不确定具体的方法内容.由不同的子类来完成具体的方法内容. (一)抽象 ...
- Java面向对象之接口interface 入门实例
一.基础概念 (一)接口可以简单的理解为,是一个特殊的抽象类,该抽象类中的方法都是抽象的. 接口中的成员有两种:1.全局常量 2.抽象方法 定义接口用关键字interface,接口中的成员都用固定的修 ...
- Java面向对象之继承extends 入门实例
一.基础概念 (一)继承的好处: 1.继承:提高了代码的复用性. 2.让类与类之间产生了关系,给多态这个特征提供了前提. (二)继承的种类: 1.单继承:一个类只能有一个父类. 2.多继承:一个类可以 ...
- JAVA面向对象-----final关键字
JAVA面向对象-–final关键字 1:定义静态方法求圆的面积 2:定义静态方法求圆的周长 3:发现方法中有重复的代码,就是PI,圆周率. 1:如果需要提高计算精度,就需要修改每个方法中圆周率. 4 ...
- JAVA面向对象-----super关键字
JAVA面向对象-–super关键字 1:定义Father(父类)类 1:成员变量int x=1; 2:构造方法无参的和有参的,有输出语句 2:定义Son类extends Father类 1:成员变量 ...
- Java面向对象重要关键字
面向对象过程接触的重要关键字:extends super this final static extends 关键字用作继承功能,可以申明一个类是从另外一个类继承而来的,一般形式如下 ...
随机推荐
- Java和C#中的自定义元数据
Java的annotation和C#的Attribute,可用来为语言增加语义,定义元数据. 转自:http://rednaxelafx.iteye.com/blog/464889 http://bl ...
- Hadoop的HA机制
前言:正式引入HA机制是从hadoop2.0开始,之前的版本中没有HA机制 1. HA的运作机制 (1)hadoop-HA集群运作机制介绍 所谓HA,即高可用(7*24小时不中断服务) 实现高可用最关 ...
- leetcode565
public class Solution { public int ArrayNesting(int[] nums) { ; ; i < nums.Length; i++) { ; ; siz ...
- Hibernate XXX.hbm.xml 里的class标签的 schema 属性解释
转自:https://blog.csdn.net/mym43210/article/details/30230173 1 <?xml version="1.0" encodi ...
- accept巨坑
在做node.js时, 我们要把一个资源发送回前端,需要用到以下一句: res.setHeader('Content-Type', mime ); mime,全称即Multipurpose Inter ...
- Java多线程-新特征-阻塞栈LinkedBlockingDeque
对于阻塞栈,与阻塞队列相似.不同点在于栈是“后入先出”的结构,每次操作的是栈顶,而队列是“先进先出”的结构,每次操作的是队列头. 这里要特别说明一点的是,阻塞栈是Java6的新特征.. Java为阻塞 ...
- ubuntu搭建定时任务管理器
一.安装golang 1.apt-get安装golang $ sudo apt-get update $ sudo apt-get install -y golang 2.创建Go语言的工作文件夹,并 ...
- MyBatis之 逆向工程生成代码
逆向工程: 所谓mybatis逆向工程,就是mybatis会根据我们设计好的数据表,自动生成pojo.mapper以及mapper.xml. 工程简单案例: 1,新建一个java项目,把需要使用的ja ...
- linux 软链接 硬链接
查看文件sun.txt 加上参数i 是显示节点 inode [root@bogon test]# ls -li sun.txt 10006225 -rw-r--r--. 1 root root 0 ...
- AntD01 Angular2整合AntD、Angular2整合Material、利用Angular2,AntD,Material联合打造后台管理系统 ???
待更新... 2018-5-21 13:53:52 1 环境说明 2 搭建Angular项目 详情参见 -> 点击前往 辅助技能 -> 点击前往 3 创建共享模块 ng g m share ...