当前位置: 首页 > news >正文

JavaSE——面向对象高级一(1/4)-static修饰成员变量、应用场景,static修饰成员方法、应用场景

目录

static修饰成员变量

类变量的应用场景

static修饰成员方法

static修饰成员方法的应用场景


static

  • 叫静态,可可以修饰成员变量、成员方法。

成员变量按照有无static修饰,分为两种:

  1. 类变量
  2. 实例变量(对象的变量)

static修饰成员变量

  • 类变量:有static修饰,属于类,在计算机里只有一份会被类的全部对象共享
  • 实例变量(对象的变量):无static修饰属于每个对象的

类变量的用法

  1. 类名.类变量(推荐)
  2. 对象.类变量(不推荐)

实例变量的用法

  1. 对象.实例变量

例如:

public class Student{//类变量static String name;//示例变量int age;
}
public class Test{public static void main(String[] args){//1.类变量用法Student.name = "张三"; //第一种Student s1 = new Student();s1.name = "张三";//第二种,语法上支持,但不推荐//此时再创建一个对象Student s2 = new Student();s2.name = "李四"; //再为其name赋值//输出s1System.out.println(s1.name);//输出值为:李四//因为name是类变量,被所有对象共享,所以s2修改了name的值//2.实例变量用法//实例变量是属于每个对象的,各自都有各自的数据s1.age = 23;s2.age = 18;System.out.println(s1.age);  //输出为23System.out.println(s2.age);  //输出为18}
}

类变量的应用场景

  • 在开发中,如果某个数据只需要一份,且希望能够被共享(访问、修改),则该数据可以定义成类变量来记住。

例如:系统启动后,要求用户类可以记住自己创建了多少个用户对象了。

public class User{//类变量public static int number;//构造器public User(){User.number++;  //这样每创建一个用户对象、调用一次构造器,就会给number++,记录用户对象的个数//也可以简写为://number++;  注意:在同一个类中,访问自己类的类变量,才可以省略类名}
}

static修饰成员方法

成员方法的分类:

  • 类方法(静态方法):static修饰的成员方法,属于类。
public static void printHelloWorld(){System.out.println("Hello World !");System.out.println("Hello World !");
}

一般也是用 类名.类方法 的方式来调用类方法的。 (对象名.类方法 不推荐)

  • 实例方法(对象的方法):无static修饰的成员方法,属于对象。
public void printPass(){...
}

对象.实例方法 进行调用。

static修饰成员方法的应用场景

  • 类方法最常见的应用场景是做工具类。

工具类中的方法都是一些类方法,每个方法都是用来完成一个功能的,工具类是给开发人员共同使用的。

使用类方法来设计工具类的好处

  • 提高代码复用
  • 调用方便,提高了开发效率 

为什么工具类中的方法要用类方法,而不用实例方法?

  • 实例方法需要创建对象来调用,此时对象只是为了调用方法,对象占内存,这样会浪费内存。
  • 类方法,直接用类名调用即可,调用方便,也能节省内存。

因为工具类没有创建对象的需求,建议将工具类的构造器进行私有

例如:

public class MyUtil{private MyUtil(){}public static String createCode(int n){...}
}

这样它就无法被用来创建对象了,算是一个合格的工具类!


END


学习自:黑马程序员——JavaSE课程

http://www.lryc.cn/news/313339.html

相关文章:

  • 轻量脚本语言Lua的配置与c++调用
  • 力扣每日一道系列 --- LeetCode 160. 相交链表
  • 设计模式-建造者模式实践案例
  • freeRTOS_20240308
  • 利用chatgpt写论文使用教程
  • SMiC矩阵将于3月6日正式上线,开启数字化经济新纪元
  • 备战蓝桥杯---动态规划的一些思想2
  • 卫星导航 | 坐标系---地理坐标系与UTM坐标系
  • JavaEE之volatile关键字
  • 代码学习记录10
  • java——2024-03-03
  • Ubuntu安装conda以后,给jupyter安装C++内核
  • 【谈判】核心思想(抓大放小)
  • 洛谷P5908 猫猫和企鹅 做题反思(2024.3.7)
  • 常见的验证码
  • 11. C语言标准函数库
  • 2016年认证杯SPSSPRO杯数学建模C题(第一阶段)如何有效的抑制校园霸凌事件的发生解题全过程文档及程序
  • 设计模式-抽象工厂模式实践案例
  • 用readproc函数读取进程的状态
  • 在高并发、高性能、高可用 三高项目中如何设计适合实际业务场景的分布式id(一)
  • redis最新版本在Windows系统上的安装
  • 【深度优先】【图论】【C++算法】2045. 到达目的地的第二短时间
  • 思维题(蓝桥杯 填空题 C++)
  • Meta的Llama2模型已上线!但我为何更推荐你从HuggingFace获取?还有Code Llama等你来解锁!
  • CAN总线及通讯的工作原理
  • linux下修改网卡MAC地址
  • 47、WEB攻防——通用漏洞Java反序列化EXP生成数据提取组件安全
  • phpstorm console xdebug
  • Vue template到render过程
  • 【你也能从零基础学会网站开发】Web建站之HTML+CSS入门篇 CSS常用属性