Static关键字的使用

static关键字的作用:

用来修饰成员变量和方法,被修饰的成员是属于类的,而不单单是属于某个对象的,也就是说,可以不靠对象来调用。

首先我们来介绍类变量

当static修饰成员变量时,该变量称为类变量,该类的每个对象都共享同一个类变量的值,任何

对象都可以更改该变量的值,但也可以在不创建该类对象的情况下,通过类名对类变量进行操作

命名格式

static 数据类型 变量名;

static int age;

下面我们来举个例子,让大家体会体会类变量的作用

就比如梁山有108位好汉我们给这108位好汉按照次序每人一个编号,这就需要使用到类变量

定义一个Person类

public class Person {
private int age;
private String name;
private int id;
private static int count=1;
public int getId() {
return id;
} @Override
public String toString() {
return "Person{" +
"age=" + age +
", name='" + name + '\'' +
", id=" + id +
'}';
} public void setId(int id) {
this.id=count;
count++;
} public Person(int age, String name) {
this.age = age;
this.name = name;
this.id=count;
count++;
} public Person() {
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}

主函数

public class Test {
public static void main(String[] args) {
Person one = new Person(18, "及时雨宋江");
System.out.println(one);
Person two = new Person(18, "卢俊义");
System.out.println(two); }
}

结果

我们看到id的数值在不断的+1,这是因为他们的id都等于了一个公共的类变量

接下来我们来介绍静态方法

静态方法即类中使用static修饰的方法,该方法使用类名可以直接调用,不需要创建类的对象

定义格式

修饰符 static 返回置类型 方法名 (参数列表){

//执行语句

}

示例

public static void eat(){
System.out.println("吃饭了");
}

使用静态方法的注意事项

静态方法只可以直接访问类变量与静态方法

静态方法不能访问普通成员变量或成员方法

静态方法中不可以使用this关键字(因为this代表的是使用该方法的对象,而静态方法是属于类的,this无从指向,所以不可以使用)

下面我们写一段代码来使用一下静态方法

public class Person2 {
public static void test(){
System.out.println("这是静态方法" );
}
}
public class Test {
public static void main(String[] args) {
System.out.println("这是使用类名调用的:");
Person2.test();
Person2 person2 = new Person2();
System.out.println("这是使用对象调用的:");
person2.test(); }
}

运行结果

下面我们从内存的角度来讲讲静态的原理

先上代码

public class Teacher {
private int age;
private String name;
private static String subject="math";
public Teacher(int age, String name) {
this.age = age;
this.name = name;
} public Teacher() {
} @Override
public String toString() {
return "Teacher{" +
"age=" + age +
", name='" + name + '\'' +
'}';
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public static String getSubject() {
return subject;
} public static void setSubject(String subject) {
Teacher.subject = subject;
}
}
public class Test {
public static void main(String[] args) {
Teacher wang = new Teacher(18, "wang");
Teacher li = new Teacher(19, "li");
}
}

小结:普通成员变量操作各自空间,静态变量操作共享空间

静态代码块,敲重点!!!这个在我们后面学习中会经常使用到

什么是静态代码块呢?

定义在成员位置,使用static修饰的代码块{}

位置:类中方法外

执行随着类的加载而执行且只执行一次,优先于main方法和构造方法的执行

格式

 public class Person {
static { }
}

这里就不深究了后面的文章我找几乎再说说

以上就是static关键字的一些基础知识,如有错误请各位批评指正

Static关键字的使用的更多相关文章

  1. 浅谈Static关键字

    1.使用static关键字声明的属性为全局属性 未使用static关键字指定city之前,如果需要将Tom,Jack,Mary三人的城市均改成Beijing,需要再次声明三次对象的city为Beiji ...

  2. (转)Java中的static关键字解析

    转载: http://www.cnblogs.com/dolphin0520/p/3799052.html 一.static关键字的用途 在<Java编程思想>P86页有这样一段话: &q ...

  3. PHP的final关键字、static关键字、const关键字

    在PHP5中新增加了final关键字,它可以加载类或类中方法前.但不能使用final标识成员属性,虽然final有常量的意思,但在php中定义常量是使用define()函数来完成的. final关键字 ...

  4. Java Static关键字详解

    提起static关键字,相信大家绝对不会陌生,但是,想要完全说明白,猛的一想,发现自己好像又说不太明白... ...比方说,昨天被一个同学问起的时候... ... 当然,不是所有人都像我一样学艺不精的 ...

  5. 关于Java中的static关键字

    Java中的 static 关键字,确实是一个关键的字(key word),今天就来总结一下它的用法,说说为什么关键. Java中的 static 关键字主要是用来做内存管理的.理解了这句话才能够比较 ...

  6. Java中的static关键字解析

    Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键 ...

  7. c++中static关键字的用法总结

    类中的静态成员真是个让人爱恨交加的特性.我决定好好总结一下静态类成员的知识点,以便自己在以后面试中,在此类问题上不在被动. 静态类成员包括静态数据成员和静态函数成员两部分. 一 静态数据成员: 类体中 ...

  8. static关键字

    static关键字 static是静态修饰符,一般修饰成员.被static修饰的成员属于类,不属于单个这个类的某个对象. 1.static关键字的特点 a:随着类的加载而加载 b:优先于对象存在 (还 ...

  9. C++中的static关键字的总结

    C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用. 1.面向过程设计中的st ...

  10. (转)Java中的static关键字解析

    转自http://www.cnblogs.com/dolphin0520/p/3799052.html 一.static关键字的用途 在<Java编程思想>P86页有这样一段话: “sta ...

随机推荐

  1. ZWave对COMAND CLASS的处理流程

    文章主题  在开发一个 ZWave Device 的过程中,对 COMAND CLASS(单词太长了,后面就简写为 CC 啦) 的处理是最基本.最重要的工作.这篇文章以最最简单的 CC:COMMNAD ...

  2. 004.OpenShift命令及故障排查

    一 CLI访问OpenShift资源 1.1 资源操作 OCP将OpenShift集群中的为由主节点管理的对象统称为资源,如:node.service.pod.project.deployment.u ...

  3. 乌班图设置C++11

    zsh: echo "alias g++='g++ -std=c++11'" >> ~/.zshrc  source ~/.zshrc bash: echo " ...

  4. selenium3.0-selenium发展史

  5. 手把手教你使用Python抓取QQ音乐数据(第一弹)

    [一.项目目标] 获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 由浅入深,层层递进,非常适合刚入门的同学练手. [二.需要的库] 主要涉及的库有:requests.json ...

  6. 跟着whatwg看一遍事件循环

    前言 对于单线程来说,事件循环可以说是重中之重了,它为任务分配不同的优先级,井然有序的调度.让js解析,用户交互,页面渲染等互不冲突,各司其职. 我们书写的代码无时无刻都在和事件循环打交道,要想写出更 ...

  7. Spring IoC 自定义标签解析

    前言 本系列全部基于 Spring 5.2.2.BUILD-SNAPSHOT 版本.因为 Spring 整个体系太过于庞大,所以只会进行关键部分的源码解析. 本篇文章主要介绍 Spring IoC 容 ...

  8. 【差分】Tallest Cow

    题目 FJ's N(1≤N≤10,000) cows conveniently indexed 1..N are standing in a line. Each cow has a positive ...

  9. 浅谈tkinter模块

    目录 tkinter模块 tkinter模块简单使用 主窗口 Button按钮 Label标签 Text编辑框 Entry输入框 ListBox列表 RadioButton单选框 CheckButto ...

  10. 浅谈pyautogui模块

    pyautogui模块 PyAutoGUI--让所有GUI都自动化 安装代码: pip install pyautogui 目的 PyAutoGUI是一个纯Python的GUI自动化工具,其目的是可以 ...