Java中的static关键字修饰属性和方法(推荐)

目录
  • static关键字
    • 1.static修饰属性(静态属性)
      • 1.1.哪些成员属性可以被static修饰。
      • 1.2.静态属性的访问。
    • 2.static关键字修饰方法
      • 1.那些方法可以使用static修饰
      • 2.常见的问题

static关键字

static关键词与对象无关。
static关键字主要修饰四个部分的内容

这里我们主要介绍static修饰属性和修饰方法。

1.static修饰属性(静态属性)

1.1.哪些成员属性可以被static修饰。

我们把static修饰的属性称为静态属性,又叫类属性。一个类里面的所有实例的这个属性值都相同,我们就可以把这个属性用static修饰,所有实例共享这个属性值。静态属性在程序运行中是保存在方法区中的,而非静态成员属性在创建一个个实例对象时,和这个对象一样存储在堆区。

1.1.1.所有实例的某个属性的值是一样的,就可以使用static关键字修饰

例如:生活在同一个城市的所有人的所在地区属性值是一样的。
那么在定义这个属性时就可以使用static关键字修饰。

public class Person {
    String name;
    int    age;
    String sex;
    //所在地区
    static String country;
}
1.1.2.类中的final常量

使用final修饰的常量的值是不能够被改变的,那么就意味着这个类中,所有实例的这个属性的值是一样的。非静态成员属性每次在创建实例时都会开辟内存,如果将final修饰的常量定义成静态属性,就可以节省每次创建实例后的一点内存。
注意:定义final成员属性时一定要赋初值。

public class Person {
    String name;
    String sex;
    //所在地区
    static String country;
    static final int age=18;

1.2.静态属性的访问。

1.静态属性又称为类属性,对静态属性的访问不需要创建对象,可以直接使用类名称去访问。

public class Person {
    String name;
    int    age;
    String sex;
    //所在地区
    static String country;

    public static void main(String[] args) {
        System.out.println(Person.country);
    }
}

2.如果这个类里面已经创建了实例对象,也可以通过实例对象访问静态属性。(不推荐)

public class Person {
    String name;
    int    age;
    String sex;
    //所在地区
    static String country;

    public static void main(String[] args) {
        Person per1=new Person();
        System.out.println(per1.country);
    }
}

我们就以前面这段代码解释一下代码运行过程中内存中的变化。

思考题:
1.我们可以在方法中定义静态变量吗?
答:不可以。方法中的变量是方法在被调用之后在栈区中存储的,而静态变量存在方法区的,不可能存在一个变量既存储在方法区又存储在栈区。
2.

public class Person {
    String name;
    String sex;
    //所在地区
    static String country;
    static final int age=18;

    public static void main(String[] args) {
        Person per1=new Person();
        per1=null;
        System.out.println(per1.name);
    }
}

上面这串代码在运行时会出现

即:空指针异常,这段代码中,per1引用指向的地址为空。
那么

public class Person {
    String name;
    String sex;
    //所在地区
    static String country;
    static final int age=18;

    public static void main(String[] args) {
        Person per1=new Person();
        per1=null;
        System.out.println(per1.country);
    }
}

这段代码可以运行吗?
答:可以的。因为conutry属性是静态属性。运行这段代码的时候系统会识别到是Person类中的,per1.country就相当于Person.country。所以不会出现空指针异常。

2.static关键字修饰方法

static关键字修饰的方法又叫类方法,工具方法,静态方法。同样的,他也是可以直接使用类名称.方法名称调用。没有对象就可以访问。

1.那些方法可以使用static修饰

1.工具类的方法设置为static方法
例如:
Arrays.sort(int [ ]):传入一个int[ ]就可以使用,不需要创建对象去使用
2.一个程序的主方法
程序的主方法就是程序的入口,如果设置成非静态方法,那么主方法的使用就需要创建对象,而程序都没有入口进入,怎么去创建对象,程序就无法运行。因此程序的主方法要设置成静态方法,直接使用,不需要创建对象。

2.常见的问题

1.静态方法能否访问成员变量和成员方法
答:不能。静态方法的访问是不需要创建对象的,也就是说静态方法使用中是没有对象的,而成员方法和成员变量的使用是需要创建对象的,所以静态方法是无法访问成员变量和成员方法。
2.成员方法能否访问静态属性和静态方法。
答:可以,成员方法的访问前提是有对象,静态方法和静态属性的访问是没有前提条件的。因此成员方法都可以访问,那么静态方法和静态属性是一定可以访问的
3.普通的类能否使用static修饰(不是内部类)。
答:不可以。类定义出来就是产生相应实例对象的,而用static修饰之后这个类没有对象就可以调用了,这个类就没有存在的意义了。在编译过程中程序也会报错。

到此这篇关于Java中的static关键字修饰属性和方法的文章就介绍到这了,更多相关Java static关键字修饰属性和方法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java中的static关键字你了解多少

    目录 一.static关键字的用途 1)static方法 2)static变量 3)static代码块 二.static关键字的误区 1.static关键字会改变类中成员的访问权限吗? 2.能通过this访问静态成员变量吗? 3.static能作用于局部变量么? 三.常见的笔试面试题 1.下面这段代码的输出结果是什么? 2.这段代码的输出结果是什么? 3.这段代码的输出结果是什么? 总结 一.static关键字的用途 在<Java编程思想>P86页有这样一段话: “static方法就是没有th

  • Java基础之static关键字的使用讲解

    static关键字 在Java中,static是静态修饰关键字.用于修饰类的成员方法.类的成员变量,另外可以编写static代码块来优化程序性能:被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问. static关键字的作用 方便在没有创建对象的情况下来进行调用方法或者变量.被static关键字修饰的方法或者变量不需要依赖对象来进行访问,只要类被加载了,就可以通过类名去访问. 1.static修饰成员方法 static修饰的方法称为静态方法

  • Java关键字详解之final static this super的用法

    目录 1. final 关键字: 2. static 关键字: 3. this 关键字: 4. super 关键字: final,static,this,super 关键字总结 正文开始@Assassin 1. final 关键字: final 关键字,意思是最终的.不可改变的,初始化之后就不能再次修改 ,用来修饰类.方法和变量,具有以下特点: final 修饰的类不能被继承,final类中的所有成员方法都会被隐式的指定为 final 方法: final 修饰的方法不能被重写: final 修饰

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

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

  • Java 梳理总结关于static关键字常见问题

    目录 1.static是什么意思? 2.为什么使用static关键字? 3.Java中是否可以覆盖(override)一个private或者是static的方法? 4.是否可以在static环境中访问非static变量? 5.static静态方法能不能引用非静态资源? 6.static静态方法里面能不能引用静态资源? 7.非静态方法里面能不能引用静态资源? 8.java静态变量.代码块.和静态方法的执行顺序是什么? 1.static是什么意思? static 关键字表明一个成员变量或者是成员方法

  • Java中的static关键字修饰属性和方法(推荐)

    目录 static关键字 1.static修饰属性(静态属性) 1.1.哪些成员属性可以被static修饰. 1.2.静态属性的访问. 2.static关键字修饰方法 1.那些方法可以使用static修饰 2.常见的问题 static关键字 static关键词与对象无关.static关键字主要修饰四个部分的内容 这里我们主要介绍static修饰属性和修饰方法. 1.static修饰属性(静态属性) 1.1.哪些成员属性可以被static修饰. 我们把static修饰的属性称为静态属性,又叫类属性

  • 详解java中的static关键字

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

  • Java中的static关键字深入理解

    在学习Java以来很长一段时间,我都不能理解为什么修饰一个方法的关键字各不相同,为什么有的方法可以直接调用,而有的方法需要用对象才能调用.毫不夸张的说,最近一次让我决定去整理清楚static关键字,是因为在写jdbc工具类时,其中通过静态代码块来实现加载驱动才让我对它有了新的认识. 通俗来讲,归为几点: 由static关键字修饰的方法或成员变量,不需依赖对象,就可直接访问.(通过 类名.方法名() 或 类名.属性 直接调用) static关键字不会影响到变量或方法的作用域 static关键字不允

  • 深入了解Java中的static关键字

    目录 static修饰成员变量 static修饰成员方法 static成员变量初始化 static修饰成员变量 static修饰的成员变量,称为静态成员变量,静态成员变量最大的特性:不属于某个具体的对象,是所有对象所共 享的 public class Student{ public String name; public String gender; public int age; public double score; public static String classRoom = "Bi

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

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

  • 解析Java中的static关键字

    一.static关键字使用场景 static关键字主要有以下5个使用场景: 1.1.静态变量 把一个变量声明为静态变量通常基于以下三个目的: 作为共享变量使用 减少对象的创建 保留唯一副本 第一种比较容易理解,由于static变量在内存中只会存在一个副本,所以其可以作为共享变量使用,比如要定义一个全局配置.进行全局计数.如: public class CarConstants { // 全局配置,一般全局配置会和final一起配合使用, 作为共享变量 public static final in

  • Java中获取类路径classpath的简单方法(推荐)

    如下所示: <SPAN style="FONT-SIZE: 18px"> System.out.println("++++++++++++++++++++++++"); String path = System.getProperty("java.class.path"); String path2 = FreeMarkerWriter.class.getProtectionDomain().getCodeSource().getLo

  • java 中的static关键字和final关键字的不同之处

    static 1.在类中,用static修饰的属性,称为静态属性.为这个类的所有对象所共有,存放在静态存储区,所有该类的对象都可以访问且访问的都是同一变量.可以用作计数器,来统计总共创建了多少个各类的对象. 2.在类中,用static 修饰的方法为静态方法,在静态方法中不可以访问非静态的属性和方法,但在非静态方法中可以访问静态方法和属性:且static方法多态失效,不能使用this. 3.由于静态属性和方法是属于该类的所有对象的,所以可以用类名.静态属性/方法名---来访问. 4.static

  • Java 深入学习static关键字和静态属性及方法

    目录 static关键字 静态属性 静态方法 静态方法的使用 静态代码块 static关键字 在定义一个类时,只是描述某事物的特征和行为,并没有产生具体的数据,只有通过new关键字创建该类的实例对象时,才会开辟栈内存及内存,在堆内存中要保存对象的属性时,每个对象会有自己的属性. 如果希望某些属性被所有对象共享,就必须将其声明为static属性,如果属性使用了static关键字进行修饰,则该属性可以直接使用类名称进行调用,static关键字还可以修饰成员方法. 静态属性 如果在Java程序中使用s

随机推荐