JAVA 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关键字的一些基础知识,如有错误请各位批评指正

到此这篇关于JAVA Static关键字的用法的文章就介绍到这了,更多相关JAVA Static关键字内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java中的static关键字全面解析

    static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列举了一些面试笔试中常见的关于static的考题.以下是本文的目录大纲: 一.static关键字的用途 二.static关键字的误区 三.常见的笔试面试题 若有不正之处,希望谅解并欢迎批评指正. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/dolphin05

  • 详解Java基础篇--面向对象1(构造方法,static、this关键字)

    面向对象,面向过程的区别.拿下五子棋来说: 面向过程分析: 开始游戏 黑棋先走 绘制画面 判断输赢 轮到白棋 绘制画面 判断输赢 返回步骤2 输出结果 面向对象分析: 黑白双方,双方行为是一模一样的 棋盘系统,负责绘制画面 规则系统,判断犯规.输赢 传统的面向过程编程是思考问题的解决步骤,这种思维方式适用于问题规模较小时.可是当问题规模大,要求程序有更好的可扩展性,能更快速地查错时面向对象设计思想就能体现出其优势.面向对象更接近人类地自然思维方式,将现实世界中的事物抽象为对象和对象的方法. 面向

  • 浅谈Java中static关键字的作用

    static关键字主要有两种作用: 第一,为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关. 第二,实现某个方法或属性与类而不是对象关联在一起 具体而言,在Java语言中,static主要有4中使用情况:成员变量.成员方法.代码块和内部类 (1)static成员变量: Java类提供了两种类型的变量:用static关键字修饰的静态变量和不用static关键字修饰的实例变量.静态变量属于类,在内存中只有一个复制,只要静态变量所在的类被加载,这个静态变量就会被分配空间,因此就可以被使

  • 浅析java 的 static 关键字用法

    本篇浅析java中static的用法,主要五个方面:静态成员变量,静态方法,静态块,静态内部类,静态导包. 首先还是一张表格说一下静态对象和非静态对象的区别: 静态对象 非静态对象 归属 类共同具有 类的各个实例独立拥有 内存分配 内存空间上固定的 附属类分配 分配空间顺序 优先分配静态对象空间 优先分配静态对象空间,初始化也一样 1 静态变量,静态方法,静态块 静态对象,静态方法都是在原对象和方法上加上static关键字修饰,表示类可以直接调用这些,而不需要实例化后再调用.具有的好处是: 1-

  • 详解java中的static关键字

    Java中的static关键字可以用于修饰变量.方法.代码块和类,还可以与import关键字联合使用,使用的方式不同赋予了static关键字不同的作用,且在开发中使用广泛,这里做一下深入了解. 静态资源(静态变量与静态方法) 被static关键字修饰的变量和方法统一属于类的静态资源,是类实例之间共享的.被static关键字修饰的变量.方法属于类变量.类方法,可以通过[类名.变量名].[类名.方法名]直接引用,而不需要派生一个类实例出来. 静态资源分类存放的好处 JDK把不同的静态资源放在了不同的

  • JAVA面试题 static关键字详解

    问题 面试官Q1:请说说static关键字,你在项目中是怎么使用的? static 关键字可以用来修饰:属性.方法.内部类.代码块: static 修饰的资源属于类级别,是全体对象实例共享的资源: 使用 static 修饰的属性,静态属性是在类的加载期间初始化的,使用类名.属性访问 案例说明 ①修饰成员变量 package com.ant.param; public class StaticFieldDemo { public static void main(String[] args) {

  • JAVA Static关键字的用法

    static关键字的作用: 用来修饰成员变量和方法,被修饰的成员是属于类的,而不单单是属于某个对象的,也就是说,可以不靠对象来调用. 首先我们来介绍类变量 当static修饰成员变量时,该变量称为类变量,该类的每个对象都共享同一个类变量的值,任何 对象都可以更改该变量的值,但也可以在不创建该类对象的情况下,通过类名对类变量进行操作 命名格式 static 数据类型 变量名: static int age; 下面我们来举个例子,让大家体会体会类变量的作用 就比如梁山有108位好汉我们给这108位好

  • 谈Java static关键字的用法与好处

    本文针对Java static关键字的使用方法进行汇总,供大家参考,具体内容如下 1.对于static关键字的使用的时候对于修饰变量的时候,它相当于一个全局变量: 2.对于static修饰一个函数的时候他是在类被加载的时候首先会被类加载,并且只能加载一次,并且这个方法可以不需要通过实例进行调用例如: mystatic.java package study; public class mystatic { public static int sta=0; public int st=0; //st

  • Java类中this关键字与static关键字的用法解析

    目录 前言 1:修饰属性,表示调用类中的成员变量. 2:this修饰方法 3:this表示当前对象的引用 前言 今天给大家总结介绍一下Java类中this关键字和static关键字的用法. this关键字用法: this.属性可以调用类中的成员变量 this()可以调用类中的构造方法 1:修饰属性,表示调用类中的成员变量. 代码示例: public class Student { public String name; public int age; public String school;

  • Java super关键字的用法详解

    目录 super关键字的三种用法: 1. super.成员变量 2. super.成员方法 3. super():调用父类中的构造方法 3.1.1 隐式调用父类无参数构造方法super() 3.1.2 显式调用父类有参数构造方法super(id) super关键字作用:在子类内部调用父类对象 基础语法: 1.在类的继承中,当子类继承了父类, 在构造子类的时候,一定要先帮助父类进行构造: 2. 调用super()必须写在子类构造方法的第一行,以保证在执行任何动作前,对象已经完成了初始化,否则编译不

  • 梳理总结Java static关键字的方法作用

    目录 概述 定义和使用格式 类变量 静态方法 调用格式 静态原理图解 静态代码块 概述 关于 static 关键字的使用,它可以用来修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属 于某个对象的.也就是说,既然属于类,就可以不靠创建对象来调用了. 定义和使用格式 类变量 当 static 修饰成员变量时,该变量称为类变量.该类的每个对象都共享同一个类变量的值.任何对象都可以更改 该类变量的值,但也可以在不创建该类的对象的情况下对类变量进行操作. 类变量:使用 static关键字修

  • Java static关键字详细解析

    目录 static目的 static范围 静态(static)修饰 静态变量 静态方法 静态代码块 静态类 static变量存储在方法区(Method Area) static目的 java中的static关键字主要用于内存管理. static范围 使用范围:java static关键字可以用在变量.方法.代码块和嵌套类中. 作用范围:static关键字属于类,而不是类的实例. 静态(static)修饰 变量.方法:称为类变量/方法.静态变量/方法:修饰变量或方法,表示这个变量/方法属于这个类,

  • 带你了解Java中Static关键字的用法

    目录 Java中Static关键字的一些用法详解 1. Static 修饰类属性,因为静态成员变量可以通过类名+属性名调用,非静态成员变量不能通过类名+属性名调用: 2. Static 修饰类方法,可以通过类名.静态方法名的方式调用静态方法,不可以用类名.静态方法名调用非静态方法: 3. 静态代码块,匿名代码块,构造函数.三者的调用顺序为(静态代码块(只调用1次) --> 匿名代码块 --> 构造函数). 总结 Java中Static关键字的一些用法详解 1. Static 修饰类属性,因为静

  • Java static关键字详细介绍与用法总结

    static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念.下面整理内容大家可以参考下. 1.     静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法    声明为static的方法有以下几条限制: 它们仅能调用其他的static 方法. 它们只能访问static数据. 它们不能以任何方式引用this 或super. class Simp

  • java synchronized关键字的用法

    0.先导的问题代码 下面的代码演示了一个计数器,两个线程同时对i进行累加的操作,各执行1000000次.我们期望的结果肯定是i=2000000.但是我们多次执行以后,会发现i的值永远小于2000000.这是因为,两个线程同时对i进行写入的时候,其中一个线程的结果会覆盖另外一个. public class AccountingSync implements Runnable { static int i = 0; public void increase() { i++; } @Override

  • C#中const,readonly和static关键字的用法介绍

    如果有一个值不太会变化,我们经常使用const和readonly,这2者有何不同呢?有时候,我们也会在readonly之前加上关键字static,这又意味着什么呢? const const默认是静态的,可以通过"类名.字段名"来访问. const变量只能在声明的时候赋值,不能在构造函数中为const类型变量赋值. 一旦程序集被编译,const变量会被写进程序集的IL代码中.如果想修改const变量值,必须在修改值后再重新生成程序集. const是编译期变量 public class T

随机推荐