1.Java 中被static修饰的成员称为静态成员或类成员。它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享、且优先于对象存在。静态成员可以使用类名直接访问,也可以使用对象名进行访问。使用 static 可以修饰变量、方法和代码块。

2.public 修饰符表示公开的、公有的,静态变量使用static修饰

3.静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。

public class HellWorld{

String name = “Java”;//非静态变量

static String hobby = “ programing”;//静态变量

public static void print(){

System.out.println(“欢迎您:” + name + ” !”);//不能直接调用非静态变量

System.out.println(“欢迎您:” + hobby + ” !”);//可以直接调用静态变量

}

}

4.如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。

public class HellWorld{

String name = “Java”;//非静态变量

static String hobby = “program ”;//静态变量

//静态方法中调用非静态变量

public static void print(){

//创建类的对象

HelloWorld hello=new HelloWorld();

//通过对象来实现在静态方法中调用非静态变量

System.out.println(“欢迎您:”+hello.name+”!”);

//静态方法中可以直接调用静态变量

System.out.prinltn(“欢迎喜欢”+ hobby +”的”+hello.name);     }   }

5.在普通成员方法中,则可以直接访问同类的非静态变量和静态变量

public class HellWorld{

String name = “Java”;//非静态变量

static String hobby = “ programing”;//静态变量

public void print(){//普通方法

System.out.println(“欢迎您:” + name + ” !”);

System.out.prinltn(“欢迎喜欢”+ hobby +”的”+hello.name);     }   }

6.静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法

public class HellWorld{

String name = “Java”;//非静态变量

static String hobby = “program ”;//静态变量

//非静态方法

public void show(){

System.out.println(“我是非静态方法,不能被静态方法直接调用。。。”);

}

//静态方法

public static void show2(){

System.out.println(“我是静态方法,可以直接被静态方法调用”);

}

//静态方法中通过对象来调用非静态方法。可以直接调用静态方法

public static void print(){

//创建类的对象

HelloWorld hello=new HelloWorld();

//通过对象来实现在静态方法中调用非静态方法

hello.show();

//静态方法中可以直接调用静态方法

show2();

}

}

二、Java 中的 static 使用之静态初始化块

1.在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。如果使用 static 修饰初始化块,就称为静态初始化块。

2.实例变量和类变量的区别:

a) 存放位置:类变量随着类的加载而存放于方法区中;实例变量随着对象的建立存在于堆内存中。

b) 生命周期:类变量生命周期最长,随着类的消失而消失;实例变量生命周期随着对象的消失而消失。

3.静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。程序运行时,静态初始化快先被执行并优先于主函数,然后执行普通初始化块,最后才执行构造方法。

public class StaticDemo {

int num1;//声明变量1

int num2;//声明变量2

static int num3;//声明静态变量3

public StaticDemo(){//构造方法

num1 = 88;

System.out.println("通过构造方法为变量1赋值");

}

{//初始化块

num2 = 99;

System.out.println("通过初始化块为变量2赋值");

}

static{//静态初始化这里不能giel普通变量赋值

num3 = 77;

System.out.println("通过静态初始化块为静态变量3赋值");

}

public static void main(String[] args) {

StaticDemo hello = new StaticDemo();//创建类的对象hello

System.out.println("num1:" + hello.num1);

System.out.println("num2:" + hello.num2);

System.out.println("num3:" + hello.num3);

StaticDemo hello1 = new StaticDemo();

}

}

运行结果:

类属性中被static所引用的变量,会被作为GC的root根节点。作为根节点就意味着,这一类变量是基本上不会被回收的。因此,static很容易引入内存泄漏的风险。

java static调用吗_Java中的static的使用相关推荐

  1. java static调用吗_java中使用static

    使用: 1.类成员变量 2.类方法 1.类方法中不能有非静态成员.因 为非静态成员与实例相关,通过对象间接使用. 2.不能使用this. 3.static块:和数据成员时并列的位置,用于类初始化类装入 ...

  2. java 静态代码块_Java中的static静态代码块的使用详解

    一.与静态方法的比较 一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要 ...

  3. Java方法调用事件_Java中的事件处理和Java中actionPerformed方法的执行

    我在Java中为simpleGUI编写了一个小代码. package guidemo1; import java.awt.event.ActionEvent; import java.awt.even ...

  4. java构造器调用构造器_java中构造器内部调用构造器实例详解

    可能为一个类写了多个构造器,有时可能想在一个构造器里面调用另外一个构造器,为了减少代码的重复,可用this关键字做到这一点. public class Flower { private String ...

  5. java 同类调用方法_JAVA中同类中方法的调用问题?

    1.为什么可以直接new+构造方法,来创建对象.而不用创建实例引用呢,像常见的这种:Car car1=new Car;我记得看过有说java中没有被引用的对象将被GC处理.那这个算不算. 你创建了一个 ...

  6. java socket调用接口_Java中socket接口调用

    最近一个项目中接口通讯这一块主要是调用银联系统的socket接口,我方是客户端,即发送请求接收返回报文的一方.在贴代码之前,还是要了解一下关于socket的基础知识. Socket的基本概念 1.建立 ...

  7. java 构造方法 调用 构造方法_Java中构造方法调用构造方法??

    心有猛虎_细嗅蔷薇 正确的调用方法应该是直接一个this()来调用构造方法.请看代码:class Student{ String id; String name; String sex; //创建构造 ...

  8. java文件调用脚本_Java中调用文件中所有bat脚本

    //调用外部脚本 String fileips=null;//所有的路径 String[] files=null; String fileip=null;//单个路径 try { InputStrea ...

  9. java如何调用static类_Java中的static的使用指南

    一.Java中的static使用之静态变量 1.Java 中被static修饰的成员称为静态成员或类成员.它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享.且优先于对象存在.静态成员可以使 ...

最新文章

  1. 常用的 分布式事务 都有哪些?我该用哪个?
  2. chrome 插件开发各种功能demo_Chrome 插件开发全攻略
  3. 面试Nginx的几个常见问题(
  4. Cadence 电源完整性仿真实践(二)
  5. 有了这个运维方案,让IT信息化人员头疼的系统宕机再也没出现
  6. 我终于知道公司前端为啥不加班了…
  7. Maven学习总结(19)——深入理解Maven相关配置
  8. ndr4108贴片晶振是多少频率_流处理器、核心频率、 位宽……这些显卡参数你知道吗?—— 电脑硬件科普篇(八)...
  9. C++11中0与 NULL与nullptr之间的关系
  10. stm32 操作W25Q256 W25Q16 spi flash
  11. 熟练的mescroll
  12. Transformer(李宏毅2022)
  13. Linux创建WIFI热点
  14. 【vim环境配置】详细实录
  15. 【EGE】五子棋小游戏 (鼠标控制)
  16. app免填邀请码安装如何实现?
  17. 【Linux常见指令】记录一些机器学习中常用的指令(自用,持续更新)
  18. LibGDX QQ群建立,欢迎对libGDX有兴趣的程序员加入。
  19. 你必须知道的经济学经典定理
  20. PDM系统的实施说明书

热门文章

  1. 于敦德:途牛五大战略纵深不惧同质化竞争
  2. c++读取文件–结束条件的判断
  3. acl在内核里的位置_Linux 进程在内核眼中是什么样子的?
  4. 数据结构与算法(6) -- heap
  5. 非常完善的Log4net详细说明(转)
  6. 畅通工程 HDU - 1863
  7. 如果你们都忘记了鼓励原创,那,我们来 - 2017年度原创IT博主全网评选
  8. 2005 打开 2010 项目经验总结
  9. MySQL存储过程之事务管理
  10. [轉載]用PHP的ob_start();控制您的浏览器cache!