目录

一、基本介绍

二、类方法的调用

三、类方法的应用实例

代码

内存分析

运行结果

四、类方法的经典使用场景

五、类方法使用细节

第一条

第二条

第三条

第四条

第五条

第六条

六、练习

第一题

考察点

分析

结果

第二题

代码

考察点

结果

第三题


类方法

一、基本介绍

类方法也叫静态方法

形式如下:访问修饰符 static 数据返回类型 方法名()

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

二、类方法的调用

1)类名.方法名

2)对象名.方法名

注意:满足访问修饰符权限和规则

三、类方法的应用实例

计算学生交的学费总额

代码

package com.hspedu.static_;public class StaticMethod {public static void main(String[] args) {//创建2个学生对象,交学费Stu stu1 = new Stu("Tom");//stu1.payFee(2000);Stu.payFee(2000);//静态变量fee的值0——>2000Stu stu2 = new Stu("Jack");//stu2.payFee(3000);Stu.payFee(3000);//静态变量fee的值2000——>5000Stu.showFee();//输出fee,即5000}
}class Stu{private String name;//普通成员//定义一个静态变量,来累积学生的学费private static double fee = 0;public Stu(String name) {this.name = name;}//当方法使用了static修饰后,该方法就是一个静态方法//静态方法可以访问静态属性/变量public static void payFee(double fee){//统计总学费,将传进来的参数相加,累积到静态变量中//Stu.fee = Stu.fee + fee;Stu.fee += fee;//静态方法只能访问静态属性,不能访问非静态属性}public static void showFee(){System.out.println("总学费有:" + Stu.fee);}
}

内存分析

运行结果

四、类方法的经典使用场景

如果希望不创建实例,也可以调用某个方法(即当做工具来使用),这时,把方法做成静态方法非常合适,比如:Math类,Arrays类

package com.hspedu.static_;public class StaticMethod {public static void main(String[] args) {//如果希望不创建实例,也可以调用某个方法(即当做工具来使用)//这时,把方法做成静态方法非常合适,比如:System.out.println(Math.sqrt(9));//开平方System.out.println(MyTools.calSum(3.4,7.8));System.out.println(MyTools.division(5,0));}
}
//开发自己的工具类时,可以将方法做成静态的,方便调用
class MyTools{//求和public static double calSum(double n1, double n2){return n1 + n2;}public static Double division(double n1, double n2){if(n2 == 0){return null;}return n1 / n2;}}

五、类方法使用细节

第一条

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

类方法中无this的参数

普通方法中隐含着this的参数

第二条

类方法可以通过类名调用,也可以通过对象名调用。

第三条

普通方法和对象有关,需要通过对象名调用(创建对象然后调用),比如对象名.方法名(参数),不能通过类名调用

第四条

4)类方法中不允许使用和对象有关的关键字,比如this和super。普通方法(成员方法)可以

第五条

类方法(静态方法)中 只能访问 静态变量或静态方法。

第六条

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

package com.hspedu.static_;public class StaticMethodDetail {public static void main(String[] args) {//非静态方法只能通过对象名.方法名()访问D d = new D();d.say();//D.say();//错误d.hi();D.hi();}
}
class E {public int n2 = 20;}
class D extends E{private int n1 = 10;private static int n3 = 30;public void say(){//非静态方法System.out.println(this.n1);System.out.println(super.n2);}public static void hi(){//静态方法//类方法中不能使用和对象相关的关键字,// 比如this和super//System.out.println(this.n1);//System.out.println(super.n2);}//静态方法只能访问静态成员public static void hello(){System.out.println(n3);System.out.println(D.n3);//System.out.println(this.n3);//错误,不能使用tihs和super//System.out.println(n1);//错误,不能访问非静态变量//say();//错误,不能访问非静态方法hi();D.hi();}//普通成员方法既能访问非静态成员,也能访问静态成员public void f1(){//非静态System.out.println(n1);say();//静态System.out.println(n3);hi();hello();}
}

总结:静态方法只能访问静态成员,非静态方法可以访问静态成员和非静态成员

六、练习

第一题

说出以下代码的输出结果

package com.hspedu.static_;public class Test {static int count = 9;//类变量public void count() {System.out.println("count=" + (count++));}public static void main(String args[]) {new Test().count();new Test().count();System.out.println(Test.count);}
}

考察点

类变量是所在类的所有对象实例共享的,后++是先运算再自增

分析

结果

第二题

代码

package com.hspedu.static_;public class TestPerson {public static void main(String[] args) {System.out.println("Number of total is " + Person.getTotalPerson());//0Person p1 = new Person();//创建新对象,调用构造器,total = 1; id = 1;System.out.println("Number of total is "+ Person.getTotalPerson());//1}
}
class Person {private int id;private static int total = 0;public static int getTotalPerson(){//id++;//静态方法不能访问非静态成员return total;}public Person() {//构造器total++;//total = 1;id = total;//id = 1;}
}

考察点

静态方法只能访问静态成员,非静态方法可以访问静态成员和非静态成员

结果

第三题

package com.hspedu.static_;public class TestPerson02 {public static void main(String[] args) {Person02.setTotalPerson(3);new Person02();}}class Person02 {private int id;private static int total = 0;public static void setTotalPerson(int total){this.total = total;Person02.total = total;}public Person02(){total++;id=total;}
}

考察点同题2

解答

package com.hspedu.static_;public class TestPerson02 {public static void main(String[] args) {Person02.setTotalPerson(3);//调用类方法,类变量total=3new Person02();//创建对象,调用构造器,执行total++,total=4,id=4Person02.showTotal();}}class Person02 {private int id;private static int total = 0;public static void setTotalPerson(int total){//this.total = total;//静态方法中不能适用this和super等对象有关的关键字Person02.total = total;}public Person02(){total++;id=total;}//创建静态方法,输出静态变量total的值public static void showTotal(){System.out.println("total的值=" + total);}
}

运行结果

java学习之类方法相关推荐

  1. java学习心得---方法

    java学习心得-方法 一.概念 方法是实现特定功能的一段代码,可以重复使用. 二.定义 一些列代码指令的合集(就是将一些代码整合再一起). 三.作用 提高代码的重复性. 四.定义的格式 访问修饰符+ ...

  2. 少儿编程里java_Greenfoot【java学习】-方法

    我们知道了什么是类和对象,本节我们来了解一下什么是方法. 在:Greenfoot[java学习工具]-直接调用方法这一节中我们通过鼠标右键点击角色,菜单中选择不同的选项(方法),来让树袋熊做一些动作. ...

  3. Java学习_getProperty()方法初探

    getProperty()方法大全 在学习java课程时,课本中有如下 java代码段: private static final String NEW_LINE = System.getProper ...

  4. java学习(方法)

    一.方法的基本用法 什么是方法 方法就是一个代码片段,类似于 C 语言中的函数.它是一个语句的集合,它们在一起执行一个功能 1)能够模块化的组织代码 2) 做到让代码被重复使用,一份代码可以用在多个位 ...

  5. Java学习day05——方法及其调用重载

    这几天忙于置办年货,准备过年用的东西,只能断断续续的学,接下来估计也是这样了,只能尽量有时间就更一些 01_1方法 1.方法就是用来完成解决某件事情或者实现某个功能的办法 01_2方法的定义格式 方法 ...

  6. 零基础快速学习Java技术的方法整理

    在学习java技术这条道路上,有很多都是零基础学员,他们对于java的学习有着很多的不解,不知怎么学习也不知道如何下手,其实Java编程涉及到的知识点还是非常多的,我们需要制定java学习路线图这样才 ...

  7. java学习笔记5--类的方法

    接着前面的学习: java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) java学习笔记2--数据类型.数组 java学习笔记1--开发环境平台总结 本文地址 ...

  8. Java学习笔记:创建线程的两种方法

    Java学习笔记:创建线程的两种方法 一.预备工作 1.创建Maven项目ThreadDemo 2.在pom.xml里添加依赖 二.继承Thread类创建子线程

  9. Java学习之代码扫描工具的使用方法

    有些刚进行Java学习的小伙伴对Java代码扫描工具还不是很了解,不知道该如何使用,下面千锋重庆的小编就来告诉大家使用方法. 1.插件的安装 由于使用的mac所有以Mac下idea插件安装流程为例,首 ...

最新文章

  1. 使用Cloudera Manager部署oozie
  2. juniper srx系列配置端口映射 转载
  3. 用神经网络分类两条夹角为θ的直线
  4. word2vec原理(二):基于Hierarchical Softmax的模型
  5. WebView 文档 翻译
  6. linux入门 适合初学者_听说 C++ Primer-不适合初学者入门!元芳,你怎么看呢?
  7. 数据库, 数据仓库, 数据集市,数据湖,数据中台
  8. WordPress后台定制-为WooCommerce产品增加自定义字段
  9. 和女性交往的一些经验总结
  10. android实战:密码箱一
  11. java 求100天之后是周几
  12. ckplayer播放器自动播放下一集以及点击下一集
  13. windowsMobile 注册表136个操作
  14. 宏转录组方法_土壤宏转录组RNA的提取方法评价
  15. 【实践案例分享】美团配送A/B评估体系建设与实践
  16. java cookie设置注意事项
  17. 2020十大最佳大数据分析工具
  18. css图片如何垂直水平居中设置
  19. 禁用微软杀毒和移除以Paint 3D打开的相关注册表:
  20. android zip文件读写,【Android】Zip文件解压方法

热门文章

  1. 几行代码让qq机器人关键词检测,让机器人也可以又哭又笑,戳一戳你
  2. uniapp nvue页面 关闭输入法
  3. 第7-3课:K 最邻近算法(KNN)与手写数字识别
  4. python使用selenium进行浏览器中途调试的方法
  5. 国瀚实业|打算投资理财,这些事要准备好
  6. 模仿“选择游戏角色的页面”
  7. 论文引用部分是否需要查重?
  8. linux 运行QQ /Tim(超简单)
  9. 视频如何加水印文字?
  10. Android 使用百度飞桨做OCR的本地识别