1,static 关键字.Java

news/2024/4/24 4:45:50/

目录

1.概述

2.定义格式和使用

2.1 静态变量及其访问

2.2 实例变量及其访问

2.3 静态方法及其访问

2.4 实例方法及其访问

3.小结


1.概述

static表示静态,是Java中的一个修饰符,可以修饰成员方法,成员变量。被static修饰后的,直接利用“类名.静态变量=xxx”的格式初始化,该类中所有对象都可以共享这个成员变量,成员方法不用一一赋值

被static修饰的成员变量,叫做静态变量

  • 特点:被该类的所有对象共享
  • 调用方式:类名调用(推荐);对象名调用

被static修饰的成员方法,叫做静态方法

  • 特点:多用在测试类和工具类中,JavaBean中很少使用
  • 调用方式:类名调用(推荐);对象名调用

补充:

JavaBean类:用来描述一些事物的类

测试类:用来检查其他的类是书写正确,带有main方法的类,是程序的入口

工具类:帮助我们做一些事情,但是不描述任何事情的类

  • 见名知意
  • 私有化换构造方法,目的:不让外界创建它的对象
  • public class Student{privte Student(){}//私有化构造方法//不写构造方法的话,程序会自动给你一个无参构造,但不是private的
    }

以前我们定义过如下类:

public class Student{//成员变量public String name;public char sex;//'男','女'public int age;//无参构造方法public Student(){}//有参构造方法public Student(String name){this.name=name;}
}

我们已经知道面向对象中,存在类和对象的概念,我们在类中定义了一些成员变量,例如studentTeacher ,结果发现这些成员变量,每个对象都存在(因为每个对象都可以访问)。
而像name ,age , sex确实是每个学生对象都应该有的属性,应该属于每个对象。
所以Java中成员(变量和方法)等是存在所属性的,Java是通过static关键字来区分的。static关键字在Java开发非常的重要,对于理解面向对象非常关键。
关于 static 关键字的使用,它可以用来修饰的成员变量和成员方法,被static修饰的成员是属于类的是放在静态区中,没有static修饰的成员变量和方法则是属于对象的。我们上面案例中的成员变量都是没有static修饰的,所以属于每个对象。

2.定义格式和使用

static是静态的意思。 static可以修饰成员变量或者修饰方法。


2.1 静态变量及其访问


有static修饰成员变量,说明这个成员变量是属于类的,这个成员变量称为类变量或者静态成员变量。 直接用 类名访问即可。因为类只有一个,所以静态成员变量在内存区域中也只存在一份。所有的对象都可以共享这个变量。

  • 如何使用呢

例如现在我们需要定义传智全部的学生类,那么这些学生类的对象的学校属性应该都是“传智”,这个时候我们可以把这个属性定义成static修饰的静态成员变量。

  • 静态成员变量的访问:

格式:类名.静态变量

  • 定义格式
修饰符 static 数据类型 变量名=初始值;

举例

package staticins.oo;class Student {String name;int age;static String teacherName;//static 共享的成员变量public void show(){System.out.println(name+","+age+","+teacherName);}
}
public class StudentText {public static void main(String[] args) {Student.teacherName="老师大人";//Student类的所有对象都可以调用Student stu1=new Student();stu1.name="肘子";stu1.age=18;stu1.show();Student stu2=new Student();stu2.show();}
}

结果 

2.2 实例变量及其访问


无static修饰的成员变量属于每个对象的, 这个成员变量叫实例变量,之前我们写成员变量就是实例成员变量。
需要注意的是:实例成员变量属于每个对象,必须创建类的对象才可以访问。


格式:对象.实例成员变量

package staticins.oo;public class test {public String name ;public test(String name) {this.name = name;}
}
class name{public static void main(String[] args) {test name1=new test("aaa");test name2=new test("QQQ");System.out.println(name1.name);System.out.println(name2.name);}
}

结果


2.3 静态方法及其访问


有static修饰成员方法,说明这个成员方法是属于类的,这个成员方法称为类方法或者静态方法**。 直接用 类名访问即可。因为类只有一个,所以静态方法在内存区域中也只存在一份。所有的对象都可以共享这个方法。

与静态成员变量一样,静态方法也是直接通过类名.方法名称即可访问。

举例
 

public class Student{public static String schoolName = "传智播客"; // 属于类,只有一份。// .....public static void study(){System.out.println("我们都在黑马程序员学习");   }
}
  • 静态成员变量的访问:

格式:类名.静态方法

public static void  main(String[] args){Student.study();
}

2.4 实例方法及其访问

无static修饰的成员方法属于每个对象的,这个成员方法也叫做实例方法。


需要注意的是:实例方法是属于每个对象,必须创建类的对象才可以访问。

格式:对象.实例方法
 

示例: 

public class Student {// 实例变量private String name ;// 2.方法:行为// 无 static修饰,实例方法。属于每个对象,必须创建对象调用public void run(){System.out.println("学生可以跑步");}// 无 static修饰,实例方法public  void sleep(){System.out.println("学生睡觉");}public static void study(){}
}
public static void main(String[] args){// 创建对象 Student stu = new Student ;stu.name = "徐干";// Student.sleep();// 报错,必须用对象访问。stu.sleep();stu.run();
}

3.小结


1.当 static 修饰成员变量或者成员方法时,该变量称为静态变量,该方法称为静态方法。该类的每个对象都共享同一个类的静态变量和静态方法。任何对象都可以更改该静态变量的值或者访问静态方法。但是不推荐这种方式去访问。因为静态变量或者静态方法直接通过类名访问即可,完全没有必要用对象去访问。
2.无static修饰的成员变量或者成员方法,称为实例变量,实例方法,实例变量和实例方法必须创建类的对象,然后通过对象来访问。
3.static修饰的成员属于类,会存储在静态区,是随着类的加载而加载的,且只加载一次,所以只有一份,节省内存。存储于一块固定的内存区域(静态区),所以,可以直接被类名调用。它优先于对象存在,所以,可以被所有对象共享。
4.无static修饰的成员,是属于对象,对象有多少个,他们就会出现多少份。所以必须由对象调用。
 

4.static的注意事项

  • 静态方法只能访问静态变量和静态方法 //静态方法中,只能访问静态
  • 非静态的方法可以访问静态变量和静态方法,也可以访问非静态的成员变量和非静态的成员方法 //非静态的可以访问所有

非静态从属于对象,需要区分对象;静态从属于类(所以对象共享的),不需要区分对象,但是对象可以调用

  • 静态方法中没有this关键字,因为不存在对象


http://www.ppmy.cn/news/1405269.html

相关文章

LandCover数据介绍与下载

一、LC介绍 土地覆盖(Land Cover,LC)是自然营造物和人工建筑物所覆盖的地表诸多要素的综合体。土地覆盖指地表所属的植被覆盖物(森林、草原、耕作植被等)或非植被覆盖物(冰雪、建筑物等)的具体类型,侧重描述地球表面的自然属性&a…

zabbix主动发现,注册及分布式监控

主动发现 结果 主动注册 结果 分布式监控 服务机:132 代理机:133 客户端:135 代理机 数据库赋权: 代理机配置 网页上配置代理 客户端配置 网页上配置主机 重启代理机服务 网页效果

【机器学习】数据探索(Data Exploration)---数据质量和数据特征分析

一、引言 在机器学习项目中,数据探索是至关重要的一步。它不仅是模型构建的基础,还是确保模型性能稳定、预测准确的关键。数据探索的过程中,数据质量和数据特征分析占据了核心地位。数据质量直接关系到模型能否从数据中提取有效信息&#xff…

C#多页面共用一个实例

C#多页面共用一个实例 案例&#xff1a; C#与硬件设备交互&#xff0c;交互类里面有打开设备、数据接发等1操作&#xff0c;在其他许多地方需要调用该设备兼顾各代码的耦合度 采用单例模式&#xff0c;eg.CAN设备&#xff1a; private CANClass(){}/// <summary>/// 获…

Apache ECharts-数据统计(详解、入门案例)

简介&#xff1a;Apache ECharts 是一款基于 Javascript 的数据可视化图表库&#xff0c;提供直观&#xff0c;生动&#xff0c;可交互&#xff0c;可个性化定制的数据可视化图表。 1、介绍 图 1.1 Apache ECharts 功能、运行环境 功能&#xff1a; ECharts&#xff…

基本电路理论-电流和电压的参考方向

&#x1f308;个人主页&#xff1a;会编程的果子君 &#x1f4ab;个人格言:“成为自己未来的主人~” 电流及参考方向 电流&#xff1a;带电粒子有规则的定向移动 电流强度&#xff1a;单位时间内通过导体横截面的电荷量&#xff0c;即&#xff1a;idq/dt 单位&#xff1a…

2013年认证杯SPSSPRO杯数学建模C题(第二阶段)公路运输业对于国内生产总值的影响分析全过程文档及程序

2013年认证杯SPSSPRO杯数学建模 C题 公路运输业对于国内生产总值的影响分析 原题再现&#xff1a; 交通运输作为国民经济的载体&#xff0c;沟通生产和消费&#xff0c;在经济发展中扮演着极其重要的角色。纵观几百年来交通运输与经济发展的相互关系&#xff0c;生产水平越高…

力扣贪心算法--第一天

前言 今天是贪心算法的第一天&#xff0c;算法之路重新开始&#xff01; 内容 之前没了解过贪心算法。 什么是贪心 贪心的本质是选择每一阶段的局部最优&#xff0c;从而达到全局最优。难点就是如何通过局部最优&#xff0c;推出整体最优。 一、455.分发饼干 假设你是一…

源浩流体设备与您相约2024年第13届生物发酵展

参展企业介绍 温州源浩流体设备科技有限公司是一家集设计、开发、制造、销售、服务于一体的高科技企业&#xff0c;公司主要生产各种不锈钢阀门、管件、卫生级流体设备(卫生级换向阀,卫生级减压阀,卫生级罐底阀)等。现为温州市泵阀协会会员&#xff0c;ISO9000 2008版质量质量…

单链表求集合的交集

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> typedef int ElemType; typedef struct LinkNode {ElemType data;LinkNode* next; }LinkNode, * LinkList; //尾插法建立单链表 void creatLinkList(LinkList& L) {L (LinkNode*)mallo…

QT - 日志:qDebug/qInfo/qWarning/qCritical

篇一、日志打印函数 头文件&#xff1a; #include <QDebug> 代码&#xff1a;qDebug()<<"hello world!"; 其他打印级别&#xff1a; qInfo(): 普通信息 qDebug(): 调试信息 qWarning(): 警告信息 qCritical(): 严重错误 qFatal(): 致命错误 1. qDebug…

Verilog语法回顾--用户定义原语

目录 用户定义原语 UDP定义 UDP状态表 状态表符号 组合UDP 电平敏感UDP 沿敏感时序UDP 参考《Verilog 编程艺术》魏家明著 用户定义原语 用户定义原语&#xff08;User-defined primitive&#xff0c;UDP&#xff09;是一种模拟硬件技术&#xff0c;可以通过设计新的原…

EFPN代码解读

论文 Extended Feature Pyramid Network for Small Object Detection python3 D:/Project/EFPN-detectron2-master/tools/train_net.py --config-file configs/InstanceSegmentation/pointrend_rcnn_R_50_FPN_1x_coco.yaml --num-gpus 1 训练脚本 cfg 中的配置 先获取配置…

Python(乱学)

字典在转化为其他类型时&#xff0c;会出现是否舍弃value的操作&#xff0c;只有在转化为字符串的时候才不会舍弃value 注释的快捷键是ctrl/ 字符串无法与整数&#xff0c;浮点数&#xff0c;等用加号完成拼接 5不入&#xff1f;&#xff1f;&#xff1f; 还有一种格式化的方法…

Java(内部类)

1.内部类 内的五大成员&#xff1a;属性、方法、构造方法、代码块、内部类 解释&#xff1a;在一个类的里面&#xff0c;再定义一个类。举例:在A类的内部定义B类&#xff0c;B类就被称为内部类注意&#xff1a;内部类表示的事物是外部类的一部分&#xff0c;内部类单独出现没…

pymc,一个灵活的的 Python 概率编程库!

目录 前言 安装与配置 概率模型 贝叶斯推断 概率分布 蒙特卡罗采样 贝叶斯网络 实例分析 PyMC库的应用场景 1. 概率建模 2. 时间序列分析 3. 模式识别 总结 前言 大家好&#xff0c;今天为大家分享一个超强的 Python 库 - pymc Github地址&#xff1a;https://gith…

JavaScript 对象管家 Proxy

JavaScript 在 ES6 中&#xff0c;引入了一个新的对象类型 Proxy&#xff0c;它可以用来代理另一个对象&#xff0c;并可以在代理过程中拦截、覆盖和定制对象的操作。Proxy 对象封装另一个对象并充当中间人&#xff0c;其提供了一个捕捉器函数&#xff0c;可以在代理对象上拦截…

Qt中实现域(Unix)套接字通信

Qt中实现域&#xff08;Unix&#xff09;套接字通信可以使用QLocalServer和QLocalSocket类。以下是一个简单的示例&#xff0c;演示了如何在两个Qt应用程序之间使用域套接字进行通信。 一、在服务器端&#xff1a; cpp Copy code #include <QtWidgets> #include <QL…

Linux(centos7)部署spark

Spark部署模式主要有4种:Local模式(单机模式)、Standalone模式(使用Spark自带的简单集群管理器)、Spark On Yarn模式(使用YARN作为集群管理器)和Spark On Mesos模式(使用Mesos作为集群管理器)。 下面介绍Local模式(单机模式)、跟Spark On Yarn模式(使用YARN作为集…

OpenHarmony实战:轻量级系统之子系统移植概述

OpenHarmony系统功能按照“系统 > 子系统 > 部件”逐级展开&#xff0c;支持根据实际需求裁剪某些非必要的部件&#xff0c;本文以部分子系统、部件为例进行介绍。若想使用OpenHarmony系统的能力&#xff0c;需要对相应子系统进行适配。 OpenHarmony芯片适配常见子系统列…