【Java基础】static关键字相关

static关键字特点:

  • 随着类的加载而加载。
  • 优先于对象存在。
  • 被所有对象共享
  • 可以直接被类名调用。

使用注意:

  • 静态方法只能访问静态成员。
  • 但非静态成员可以访问静态成员。
  • 静态方法中不能使用this,super关键字。
  • 主方法(main)是静态的。


看了上面是不是想睡觉了,单纯的概念是挺烦人的,那下面让我们在实际代码中来加深对他们的认知。

方法的调用可以分为两种:

  1. 对象调用: 对象.方法(实参)
  2. 类调用: 这个方法所在类的名字.方法(实参)//前提是这个方法必须被static修饰。

没有使用static修饰的方法或字段,属于对象。为实例成员。

使用static修饰的方法或字段,属于类。为类成员。

对他们的调用:

若是实例成员:只能通过对象来调用。

若是类成员:可以通过类名调用,也可以通过对象来调用。

好吧,下面小程序来了。

 1 class dog//一群狗狗
 2 {
 3     String name;
 4     int age;//没有使用static修饰,属于对象,为实例成员。
 5     //狗的名字,年龄,每只狗都不同,能随意变。
 6
 7     static int num=100;//使用static修饰,属于类,为类成员。
 8     //而狗的总数是不变的。
 9 }
10
11 class day5lesson2
12 {
13     public static void main(String[] args)
14     {
15         System.out.println("通过类名来调用类成员-->"+dog.num);//编译通过
16         //System.out.println("通过类名来调用实例成员-->"+dog.name);//编译不通过
17         System.out.println("通过对象来调用类成员-->"+new dog().num);//运行通过
18         System.out.println("通过对象来调用实例成员-->"+new dog().name);//运行通过
19     }
20 }

上面代码中被注释掉的不能通过的代码的错题提示如下:

上面程序也说明了上面提到的:若是实例成员:只能通过对象来调用。若是类成员:可以通过类名调用,也可以通过对象来调用。但是在调用类成员时建议用类名来调用,因为在底层,对象来调用类成员,也会转换为类名调用。

下面必须提到的是:静态区域。它是在JVM内存中的一块专门存储类成员的存储区域。

我们修改一下上面一段程序的主方法:

 1 class dog//一群狗狗
 2 {
 3     String name;
 4     int age;//没有使用static修饰,属于对象,为实例成员。
 5     //狗的名字,年龄,每只狗都不同,能随意变。
 6
 7     static int num=100;//使用static修饰,属于类,为类成员。
 8     //而狗的总数是不变的。
 9 }
10 class day5lesson2
11 {
12     public static void main(String[] args)
13     {
14         dog d1=new dog();
15         dog d2=new dog();//声明2个对象
16
17         d1.num=111;//用d1修改类成员。
18         System.out.println("d1.num="+d1.num);
19         System.out.println("d2.num="+d2.num);//输出
20
21         d1.age=111;//用d1修改实例成员。
22         System.out.println("d1.age="+d1.age);
23         System.out.println("d2.age="+d2.age);//输出
24     }
25 }

结果如下:

为什么是这种结果呢?这就是static修饰的字段属于类成员,存储在专门的静态区域中。(PS:在类加载时就为其创建空间,所以比较消耗性能)。一般static方法用在做工具类的方法的时候,如Arrays类(java.util.Arrays)中,大量使用static方法,可在JDK API中查看。

而没被static修饰的age(实例成员)则不会有这种效果。(PS:int定义一个数字默认值为0,所以d2.age输出0)

时间: 2025-01-01 12:06:28

【Java基础】static关键字相关的相关文章

java基础—static关键字

一.static关键字 原来一个类里面的成员变量,每new一个对象,这个对象就有一份自己的成员变量,因为这些成员变量都不是静态成员变量.对于static成员变量来说,这个成员变量只有一份,而且这一份是这个类所有的对象共享. 1.1.静态成员变量与非静态成员变量的区别 以下面的例子为例说明 1 package cn.galc.test; 2 3 public class Cat { 4 5 /** 6 * 静态成员变量 7 */ 8 private static int sid = 0; 9 10

Java基础-static 关键字解析

参考文章: https://www.cnblogs.com/dolphin0520/p/3799052.html static的应用: 1.static是为了在没有创建任何对象的前提下,仅仅通过类本身来调用static方法. 只要类被加载了,就能通过类名进行访问. 2.static 可以用来修饰类的成员方法,类的成员变量 静态方法是不可以调用非静态方法,但是非静态方法能够调用静态方法, 因为静态方法是在类中的,而非静态方法必须要以来具体的对象才能被调用 static变量: 称为静态变量,静态变量

Java基础-synchronized关键字的用法(转载)

原文地址:http://blog.csdn.net/cq361106306/article/details/38736551 synchronized--同步 顾名思义是用于同步互斥的作用的. 这里精简的记一下它的使用方法以及意义: 当synchronized修饰?this或者非静态方法或者是一个实例的时候,所同步的锁是加在this或者实例对象引用上面的.比如a,b同为Main类的实例化对象,a调用被同步的方法,和b调用被同步的方法,没有形成互斥.但是不同线程的a对象调用被同步的方法就被互斥了.

Java下static关键字用法详解

Java下static关键字用法详解 本文章介绍了java下static关键字的用法,大部分内容摘自原作者,在此学习并分享给大家. Static关键字可以修饰什么? 从以下测试可以看出, static 可以修饰: 1. 语句块 2. 成员变量(但是不能修饰局部变量) 3. 方法 4. 接口(内部接口) 5. 类(只能修饰在类中的类, 即静态内部类) 6. jdk 1.5 中新增的静态导入 那么static 修饰的表示什么呢? 当创建一个类时,就是在创建一个新类型,描述这个类的对象的外观和行为,除

java中static关键字总结

Java中,static关键字一般情况下有四种用法: 用来修饰一个变量. 用来修饰一个方法. 用来修饰一个内部类. 用来修饰一段代码块. 1 public class Student{ 2 String name; 3 static int count;//static修饰的变量 4 static{//static修饰的代码块 5 count=0; 6 } 7 public static void playGame(){//static修饰的方法 8 System.out.println("我爱

[java基础]java中static关键字

1.static概念 static是静态修饰符,什么叫静态修饰符呢?大家都知道,在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序退出内存才会释放这个空间,也就是只要程序在运行,那么这块内存就会一直存在. 这样做有什么意义呢? 在Java程序里面,所有的东西都是对象,而对象的抽象就是类,对于一个类而言,如果要使用他的成员,那么普通情况下必须先实例化对象后,通过对象的引用才能够访问这些成员,但是有种情况例外,就是该成员是用sta

黑马程序员----java基础之关键字、标示符、变量、数据类型、附相关面试题

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 1:关键字(掌握) (1)被Java语言赋予特定含义的单词 (2)特点: 全部小写.如:class.static等 (3)注意事项: A:goto和const作为保留字存在. B:类似于Notepad++这样的高级记事本会对关键字有特殊颜

java基础 static

参考文章: 静态导包:https://blog.csdn.net/u012338954/article/details/51010337 静态变量和静态方法static关键字最基本的用法是:1.被static修饰的变量属于类变量,可以通过类名.变量名直接引用,而不需要new出一个类来2.被static修饰的方法属于类方法,可以通过类名.方法名直接引用,而不需要new出一个类来被static修饰的变量.被static修饰的方法统一属于类的静态资源,是类实例之间共享的,换言之,一处变.处处变.JDK

java中static关键字解析

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