java static调用吗_Java中的static的使用

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

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

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

48304ba5e6f9fe08f3fa1abda7d326ab.png

public class HellWorld{

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

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

public static void print(){

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

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

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

}

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

48304ba5e6f9fe08f3fa1abda7d326ab.png

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);     }   }

48304ba5e6f9fe08f3fa1abda7d326ab.png

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

48304ba5e6f9fe08f3fa1abda7d326ab.png

public class HellWorld{

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

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

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

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

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

48304ba5e6f9fe08f3fa1abda7d326ab.png

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

48304ba5e6f9fe08f3fa1abda7d326ab.png

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();

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

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

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

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

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

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

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

48304ba5e6f9fe08f3fa1abda7d326ab.png

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();

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

运行结果:

1a6aad635c5689d9e23b7f51bf7a778f.png

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/271908.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

15个搞笑的程序员段子

1. 问答Q:你是怎么区分一个内向的程序员和一个外向的程序员的?A:外向的程序员会看着你的鞋和你说话时。Q:为什么程序员不能区分万圣节和圣诞节?A:这是因为 Oct 31 Dec 25!(八进制的…

盘点15个搞笑的程序员段子

1.车Delphi象吉普车,什么路上都能开,却在啥路上也开不好;PB就象卡丁车,只能在固定线路上开,到室外就有些不稳;VC象跑车,你开得起却买不 起,而且一旦发生故障,想修都找不到…

如何保证消息不被重复消费~~~~~(如何保证消息队列的幂等性)

分析:这个问题其实换一种问法就是,如何保证消息队列的幂等性?这个问题可以认为是消息队列领域的基本问题。换句话来说,是在考察你的设计能力,这个问题的回答可以根据具体的业务场景来答,没有固定的答案。 回…

SpringBoot:搭建第一个Web程序

本文简单介绍一下spingBoot搭建web程序的流程,希望对入门学习spingBoot的朋友有所帮助。本文采用的开发工具是IDEA。 1、打开IDEA,创建项目。 2、点击创建项目,进入下一步,具体按照画红框的操作。 3、点击下一步 4、点击下一步&am…

java method 注释_Java注解

Java注解注解概述3、注解3.1、注解,或者叫做注释类型,英文单词是:Annotation疑问:注解到底是干啥的?????????3.2、注解Ann…

盘点八个程序员必备的代码编辑器

一个好的代码编辑器不仅能使代码变得更美观,增强其可读性,同时也能迅速推进程序员的工作进程,延长代码的生命周期。 对于新手和有经验的程序员,推荐使用的代码编辑器也均有不同。小楼总结了一些好用的代码编辑器,还在纠…

C#OOP之二 变量和表达式

2.1 C#的基本语法 C#代码的外观和操作方式与C和Java非常相似。初看起来,其语法比较混乱, 不像书面英语和其他语言。但是,在C#编程中,使用的样式是比较清晰的,不用花太多的力气就可以编写出可读性很强的代码。 与其他语…

C#调用API弹出打印机属性对话框

调用api弹出打印机属性对话框 Author:vitoriatangFrom:Internet.NET Framework封装了很多关于打印的对话框,比如说PrintDialog, PageSetupDialog. 但是有的时候我们还需要关心打印机属性对话框,那么就可以调用API来解决这个问题。有几个API函数与之相关P…

SQLServer数据库获取重复记录中日期最新的记录

❤️作者主页:IT技术分享社区 ❤️作者简介:大家好,我是IT技术分享社区的博主,从事C#、Java开发九年,对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉: 数据库领域优质创作者🏆&#x…

循环的时候去删除集合中的元素 java.util.ConcurrentModificationException

使用for循环,删除集合中的元素,会报错 java.util.ConcurrentModificationException 只能通过迭代器 iterator删除 1:在while循环中使用iterator迭代器删除集合中元素 2:在for循环中使用iterator迭代器删除集合中元素 3:使用for循…

计算机网络硬件设备组成笔记

网络是计算机或类似计算机的网络设备的集合,它们之间通过各种传输介质进行连接。无论设备之间如何连接,网络都是将来自于其中一台网络设备上的数据,通过传输介质传输到另外一台网络设备上。 本节将基于这个过程讲解网络的组成。 网卡 网卡也被…

java记事本复制粘贴_Java Swing 如何实现记事本中“编辑”菜单下的 剪切,复制,粘贴,删除,全选 功能...

这篇文字将要学习以下知识点:1.如何给JButton按钮添加鼠标点击事件监听器#1.addMouseListener(MouseListener l) 给JButton添加一个鼠标点击监听器l2.文本区控件JTextArea 中的方法(剪切,复制,粘贴,删除,全选 功能的…

迭代器(Iterator)遍历的两种方法(for和while)

一般遍历list的时候&#xff0c;我们习惯下面的写法,但这种写法有缺陷&#xff0c;不能及时释放iterator的内存 while循环遍历 Test public void testIteratorWhile(){ArrayList<String> lists new ArrayList<>();lists.add("A");lists.add("B&…

硬件:断路器、接触器、继电器基础知识

在电力系统中&#xff0c;断路器、接触器、继电器似乎都是耳熟能详的家伙&#xff0c;但很多一知半解的&#xff0c;却也搞不清这些东西究竟有什么不同&#xff0c;又有什么联系&#xff0c;今天我们就一起讲一讲。 首先说相同的吧&#xff01; 当然&#xff0c;无可非议的&…

Collection和Collections区别

1.Collection: 是集合类的上层接口。本身是一个Interface&#xff0c;里面包含了一些集合的基本操作。 Collection接口是Set接口和List接口的父接口 Collection接口的方法 2.Collections Collections是一个集合框架的帮助类&#xff0c;里面包含一些对集合的排序&#xff0c;…

程序员效率:整理常用的在线笔记软件

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&#x…

怎么确保一个集合不能被修改?

我们很容易想到用final关键字进行修饰&#xff0c;我们都知道final关键字可以修饰类&#xff0c;方法&#xff0c;成员变量&#xff0c;final修饰的类不能被继承&#xff0c;final修饰的方法不能被重写&#xff0c;final修饰的成员变量必须初始化值&#xff0c;如果这个成员变量…