目录

一.类变量

1.类变量的引入

2.类变量的定义

3.类变量的特点

4.如何定义类变量

5.如何访问类变量

6.类变量使用细节

二.类方法

1.基本介绍

2.定义类方法

3.类方法的访问

4.类方法的使用场景

5.类方法使用细节

三.main方法

1.深入理解main方法

2.特别提醒


一.类变量

1.类变量的引入

问题描述:设计一个 int count 表示总人数,我们在创建一个小孩时,就把 count 加 1

代码如下

class Child { //类private String name;public void join() {System.out.println(name + " 加入了游戏..");}
}//定义一个变量 count, 统计有多少小孩加入了游戏int count = 0;Child child1 = new Child("白骨精");child1.join();count++;Child child2 = new Child("狐狸精");child2.join();count++;Child child3 = new Child("老鼠精");child3.join();count++;

我们用传统的方法可以很轻易的写出这串代码,但是这串代码的缺点是count是一个独立的变量,并没有使用到oop,所以我们在这里引入类变量(静态变量)

对上述代码进行修改

class Child { //类private String name;//定义一个变量 count ,是一个类变量(静态变量) static 静态//该变量最大的特点就是会被Child 类的所有的对象实例共享public static int count = 0;public Child(String name) {this.name = name;}public void join() {System.out.println(name + " 加入了游戏..");}
}int count = 0;Child child1 = new Child("白骨精");child1.join();child1.count++;Child child2 = new Child("狐狸精");child2.join();child2.count++;Child child3 = new Child("老鼠精");child3.join();child3.count++;//类变量,可以通过类名来访问System.out.println("共有" + Child.count  + " 小孩加入了游戏...");

2.类变量的定义

类变量也叫静态变量,是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取得的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量

3.类变量的特点

1)static变量时同一个类所有对象共享(重点理解)

2)static类变量在类加载的时候生成了

4.如何定义类变量

定义语法:

访问修饰符 static 数据类型 变量名;(推荐)

static 访问修饰符 数据类型 变量名;

5.如何访问类变量

类名.类变量名  或者  对象名.类变量名

注意:静态变量的访问修饰符的访问权限和范围和普通属性一致

6.类变量使用细节

1)什么时候使用类变量

当我们需要让某个类的所有对象都共享一个变量时,

就可以考虑使用类变量。比如定义学生类,统计所有学生共交多少钱:Student(name , static fee)

2)类变量和实例变量区别

类变量是该类的所有对象共享的,而实例变量是每个对象独享的

3)实例变量不能通过 类名.类变量名 方式访问

4)类变量是在类加载时就初始化,也就是说,即使你没有创建对象,只要类加载了,就可以使用类变量

5)类变量的生命周期是随类的加载开始 ,随着类消亡而销毁

代码案例,帮助大家理解类变量使用细节

public static void main(String[] args) {B b = new B();//System.out.println(B.n1);System.out.println(B.n2);//静态变量是类加载的时候,就创建了,所以我们没有创建对象实例//也可以通过类名.类变量名来访问System.out.println(C.address);}class B {public  int n1 = 100;public static int n2 = 200;
}class C {public static String address = "北京";
}

二.类方法

1.基本介绍

类方法也叫静态方法

2.定义类方法

访问修饰符 static 数据返回类型 方法名(){}【推荐】

static 访问修饰符 数据返回类型 方法名(){}

3.类方法的访问

类名.类方法名 或者 对象名.类方法名(前提:满足访问修饰符的访问权限和普通方法一致)

public class StaticMethod {public static void main(String[] args) {//创建2个学生对象,收学费Stu tom = new Stu("tom");//tom.payFee(100);Stu.payFee(100);Stu mary = new Stu("mary");//mary.payFee(200);Stu.payFee(200);//两种方法均可//输出当前收到的总学费Stu.showFee();//300System.out.println(MyTools.calSum(10, 30));}
}
//开发自己的工具类时,可以将方法做成静态的,方便调用
class MyTools  {//求出两个数的和public static double calSum(double n1, double n2) {return  n1 + n2;}//可以写出很多这样的工具方法...
}
class Stu {private String name;//定义一个静态变量,来累积学生的学费private static double fee = 0;public Stu(String name) {this.name = name;}//说明//1. 当方法使用了static修饰后,该方法就是静态方法//2. 静态方法就可以访问静态属性/变量public static void payFee(double fee) {Stu.fee += fee;//累积到}public static void showFee() {System.out.println("总学费有:" + Stu.fee);}
}

4.类方法的使用场景

当方法中不涉及到任何和对象相关的成员,则可以将方法设计为静态方法,提供开发效率

这里大家可以看我写的房屋出租系统中调用的Utility工具类,该类中大部分方法都是静态方法

将方法设计为静态方法,这样我们不需要创建对象就可以使用,比如

//如果我们希望不创建实例,也可以调用某个方法(即当做工具来使用)//这时,把方法做成静态方法时非常合适System.out.println("9开平方的结果是=" + Math.sqrt(9));

5.类方法使用细节

1)类方法和 普通方法都是随着类的加载而加载,将结构信息存储在方法区

类方法不能出现this,super

普通方法中隐含着this参数,也可出现super

2)普通方法必须由对象调用

3)类方法只能访问静态变量或静态方法(重点理解)

4)普通成员方法,既可以访问 非静态成员,也可以 访问静态成员

class D {private int n1 = 100;private static  int n2 = 200;public void say() {//非静态方法,普通方法}public static  void hi() {//静态方法,类方法//类方法中不允许使用和对象有关的关键字,//比如this和super。普通方法(成员方法)可以。//System.out.println(this.n1);}//类方法(静态方法)中 只能访问 静态变量 或静态方法//静态方法只能访问静态成员(重点)public static void hello() {System.out.println(n2);System.out.println(D.n2);//System.out.println(this.n2);不能使用hi();//OK//say();//错误}//普通成员方法,既可以访问  非静态成员,也可以访问静态成员//非静态方法可以访问 静态成员和非静态成员public void ok() {//非静态成员System.out.println(n1);say();//静态成员System.out.println(n2);hello();}
}D.hi();//ok//非静态方法,不能通过类名调用//D.say();, 错误,需要先创建对象,再调用new D().say();//可以

三.main方法

1.深入理解main方法

1)main方法是虚拟机的调用

2)java虚拟机需要调用类的main()方法,所以该方法的访问权限必须是public

3)java虚拟机在执行main()方法时不必创建对象,所以该方法必须时static

4)该方法接受Stri类型的数组参数,该数组中保存执行java命令时传递给所运行的类的参数

5)java 执行的程序  参数1 参数 2 参数 3

在DOS系统中可以看到调用的参数

在idea中

点击光标 在Program argumens中添加参数

2.特别提醒

1)在main()方法中,我们可以直接调用main方法所在类的静态方法或静态属性

2)但是,不能直接访问该类中的非静态成员,必须创建该类的一个实例对象后,才能通过这个对象象去访问类中的非静态成员

JAVA 静态变量,静态方法,main方法详解(韩顺平)相关推荐

  1. python定义静态变量_对Pyhon实现静态变量全局变量的方法详解

    python不能像C++一样直接定义一个static变量或者通过extern来导入别的库的变量而实现数据共享,但是python的思想是通过模块化来解决这个问题,就是通过模块来实现全局变量. 首先新建一 ...

  2. PHP中的static静态变量的使用方法详解

    php中的变量作用范围的另一个重要特性就是静态变量(static 变量).静态变量仅在局部函数域中存在且只被初始化一次,当程序执行离开此作用域时,其值不会消失,会使用上次执行的结果. <?php ...

  3. Java中的main()方法详解

    源文作者:leizhimin    源文链接:http://lavasoft.blog.51cto.com/62575/53263 源文作者版权申明: 版权声明:原创作品,允许转载,转载时请务必以超链 ...

  4. java中main是什么_Java中的main()方法详解

    在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是 ...

  5. JavaSE——面向对象进阶(封装、this、static、代码块、包、权限修饰符、main方法详解)

    第2节 面向对象进阶 一.封装与private 概述: 封装的意义在于保护或者防止代码(数据)被我们无意中破坏.保护成员属性,不让类以外的程序直接访问和修改. 封装原则: 隐藏对象的属性和实现细节,仅 ...

  6. Java 静态变量,静态方法,静态常量(java static 关键字)

    Java 静态变量,静态方法,静态常量  就是变量 ,方法,常量前面添加了static 关键字 为什么要使用静态的呢 有时候在处理问题时会需要两个类在同一个内存区域共享一个数据, 不如现在 Main ...

  7. java多线程中的join方法详解

    java多线程中的join方法详解 方法Join是干啥用的? 简单回答,同步,如何同步? 怎么实现的? 下面将逐个回答. 自从接触Java多线程,一直对Join理解不了.JDK是这样说的:join p ...

  8. python中的class怎么用_对python 中class与变量的使用方法详解

    python中的变量定义是很灵活的,很容易搞混淆,特别是对于class的变量的定义,如何定义使用类里的变量是我们维护代码和保证代码稳定性的关键. #!/usr/bin/python #encoding ...

  9. python中class变量_对python 中class与变量的使用方法详解

    python中的变量定义是很灵活的,很容易搞混淆,特别是对于class的变量的定义,如何定义使用类里的变量是我们维护代码和保证代码稳定性的关键. #!/usr/bin/python #encoding ...

  10. 好程序员Java学习路线分享finalize()方法详解

    好程序员Java学习路线分享finalize()方法详解,前言,finalize()是Object的protected方法,子类可以覆盖该方法以实现资源清理工作,GC在回收对象之前调用该方法.. fi ...

最新文章

  1. 如何配置jdk环境变量
  2. 计算机实测物理实验报告,計算机实测物理系数实验论文.doc
  3. 智慧城市顶层设计方法_主頁
  4. python几种排序_python各种排序算法
  5. 位操作——整数用位存储
  6. 【Tools】虚拟串口工具之VSPD10
  7. 10个顶级的CSS3代码生成器
  8. sqlite3_exec
  9. 剑指Offer——面试题30:最小的K个数
  10. Pytorch torch.topk()的简单用法
  11. 哈工大中文分词系统ltp4j使用总结
  12. github 仓库中文名_Github仓库重命名
  13. JanusGraph 创建索引步骤
  14. 3.PS 缩小放大、移动、选区工具
  15. CSU 1725 加尔鲁什·地狱咆哮对阵虚灵大盗拉法姆
  16. 在线一键重装Win11系统步骤
  17. 编程珠玑番外篇之番外篇-O 中间语言和虚拟机漫谈(ZZ)
  18. Java开发Mye_Java使用MyEclipse构建webService简单案例
  19. unity3D游戏开发十之粒子系统
  20. [附源码]java毕业设计校园二手交易平台的设计

热门文章

  1. 阿里云数字化转型方案再升级,移动研发平台EMAS助力海底捞超级App“云上捞”...
  2. 供应商配车/采购员配车车辆进厂~下发物流~库房接收~卸料确认
  3. 树莓派安装Ubuntu Mate解决无法连接WiFi问题,并部署Ros系统
  4. 如何看待honor荣耀时隔两月再次发布新品
  5. 各类数据库排名汇总(转载)
  6. 身体血液循环不好的人,会有些什么症状?你中招了吗
  7. matlab鱼眼镜头矫正
  8. python中字符串怎么引用_Python:字符串中引用外部变量的3种方法
  9. 简单工厂模式实现-电视机工厂案例
  10. 微信小程序 购物车操作