java学习之类方法
目录
一、基本介绍
二、类方法的调用
三、类方法的应用实例
代码
内存分析
运行结果
四、类方法的经典使用场景
五、类方法使用细节
第一条
第二条
第三条
第四条
第五条
第六条
六、练习
第一题
考察点
分析
结果
第二题
代码
考察点
结果
第三题
类方法
一、基本介绍
类方法也叫静态方法
形式如下:访问修饰符 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学习之类方法相关推荐
- java学习心得---方法
java学习心得-方法 一.概念 方法是实现特定功能的一段代码,可以重复使用. 二.定义 一些列代码指令的合集(就是将一些代码整合再一起). 三.作用 提高代码的重复性. 四.定义的格式 访问修饰符+ ...
- 少儿编程里java_Greenfoot【java学习】-方法
我们知道了什么是类和对象,本节我们来了解一下什么是方法. 在:Greenfoot[java学习工具]-直接调用方法这一节中我们通过鼠标右键点击角色,菜单中选择不同的选项(方法),来让树袋熊做一些动作. ...
- Java学习_getProperty()方法初探
getProperty()方法大全 在学习java课程时,课本中有如下 java代码段: private static final String NEW_LINE = System.getProper ...
- java学习(方法)
一.方法的基本用法 什么是方法 方法就是一个代码片段,类似于 C 语言中的函数.它是一个语句的集合,它们在一起执行一个功能 1)能够模块化的组织代码 2) 做到让代码被重复使用,一份代码可以用在多个位 ...
- Java学习day05——方法及其调用重载
这几天忙于置办年货,准备过年用的东西,只能断断续续的学,接下来估计也是这样了,只能尽量有时间就更一些 01_1方法 1.方法就是用来完成解决某件事情或者实现某个功能的办法 01_2方法的定义格式 方法 ...
- 零基础快速学习Java技术的方法整理
在学习java技术这条道路上,有很多都是零基础学员,他们对于java的学习有着很多的不解,不知怎么学习也不知道如何下手,其实Java编程涉及到的知识点还是非常多的,我们需要制定java学习路线图这样才 ...
- java学习笔记5--类的方法
接着前面的学习: java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) java学习笔记2--数据类型.数组 java学习笔记1--开发环境平台总结 本文地址 ...
- Java学习笔记:创建线程的两种方法
Java学习笔记:创建线程的两种方法 一.预备工作 1.创建Maven项目ThreadDemo 2.在pom.xml里添加依赖 二.继承Thread类创建子线程
- Java学习之代码扫描工具的使用方法
有些刚进行Java学习的小伙伴对Java代码扫描工具还不是很了解,不知道该如何使用,下面千锋重庆的小编就来告诉大家使用方法. 1.插件的安装 由于使用的mac所有以Mac下idea插件安装流程为例,首 ...
最新文章
- 使用Cloudera Manager部署oozie
- juniper srx系列配置端口映射 转载
- 用神经网络分类两条夹角为θ的直线
- word2vec原理(二):基于Hierarchical Softmax的模型
- WebView 文档 翻译
- linux入门 适合初学者_听说 C++ Primer-不适合初学者入门!元芳,你怎么看呢?
- 数据库, 数据仓库, 数据集市,数据湖,数据中台
- WordPress后台定制-为WooCommerce产品增加自定义字段
- 和女性交往的一些经验总结
- android实战:密码箱一
- java 求100天之后是周几
- ckplayer播放器自动播放下一集以及点击下一集
- windowsMobile 注册表136个操作
- 宏转录组方法_土壤宏转录组RNA的提取方法评价
- 【实践案例分享】美团配送A/B评估体系建设与实践
- java cookie设置注意事项
- 2020十大最佳大数据分析工具
- css图片如何垂直水平居中设置
- 禁用微软杀毒和移除以Paint 3D打开的相关注册表:
- android zip文件读写,【Android】Zip文件解压方法