Java静态方法和实例方法

相同之处:都能接收传过来的参数,都能返回参数。

不同之处:有static就是静态方法,静态方法在另外一个类里面,不用new这个静态方法所在的类,也能直接访问这个方法,比较方便。缺点是静态方法常驻内存,不能都用静态方法。

this的用法:当别的类传参过来的局部变量和当前类里的全局变量重名的时候,用this.来区分,加了this.的就是当前类里的全局变量。如果你把传参过来局部变量的值赋给this.修饰的当前类的全局变量,那这个全局变量的值就改变了,可以在这个类里使用。

举个实际的例子:

比如两个同名同姓双胞胎兄弟王尼玛,一个是在我们自己班的,一个是在隔壁班的。隔壁班的王尼玛带了一块白板,上面写了一个数字56,来到我们班找他的兄弟。此时我们班的王尼玛就是this.王尼玛,就跟他隔壁班的兄弟王尼玛区分开了。

我们班的this.王尼玛也有一个白板,不过是空白的。隔壁班的王尼玛用笔照着他的白板也给this.王尼玛的白板写了一个数字56,然后回去他们班了。但此时this.王尼玛的白板一直都有数字56了,他就可以在我们班使用这个数字为56的白板。

自己写的两个简单的计算器类:

其中public static int addtion是静态方法,其它的都是实例方法。

/**
* 2使用Eclipse编写一个控制台程序,定义一个Calculator计算器类, 编写一个addition 方法
* 实现对给定的2个int类型数据进行计算的功能并返回这2个数据计算的结果; 编写一个subtraction
* 方法实现对给定的2个double类型数据进行减法计算的功能并这2个数据计算的结果.
*/ /**
* 3 延续任务2, 定义表示圆形,三角形和梯形的类并在以上三个类中定义圆
* 的半径,三角形的底和高,梯形的上底下底和高属性并设置set和get方法;
* 在Calculator中定义能够实现计算图形面积的方法,能够对给定的以上圆
* 形,三角形和梯形实现计算面积功能并最终返回计算后的面积结果.
*/ package mission2; public class Calculator {
/*addition静态方法*/
//试一下使用静态方法
public static int addition(int num1, int num2, int tag){
if (tag==1)
return num1+num2;
else if (tag==2)
return num1-num2;
else if (tag==3)
return num1*num2;
else if (tag==4&&num1!=0&&num1!=0)
return num1/num2;
else
return 0;
} /*subtraction构造方法*/
//定义两个成员变量
double num5 = 0;
double num6 = 0;
//定义一个double参数类型的构造方方法
public double subtraction(double num5,double num6){
this.num5 = num5;
this.num6 = num6;
return num5-num6;
} /*试一下方法重载来定义圆形,三角形,梯形的计算方法*/
//计算圆形的面积方法
double i = 0;
double j = 0;
double k = 0;
public double calculateArea(double i){
this.i = i;
return i*i*Math.PI;
} //计算三角形的面积方法
public double calculateArea(double i,double j){
this.i = i;
this.j = j;
return i*j/2;
} //计算梯形面积的方法
public double calculateArea(double i,double j,double k){
this.i = i;
this.j = j;
this.k = k;
return (i+j)*k/2;
} }
/**
* 2使用Eclipse编写一个控制台程序,定义一个Calculator计算器类,
* 编写一个addition 方法实现对给定的2个int类型数据进行计算的功
* 能并返回这2个数据计算的结果; 编写一个subtraction 方法实现对
* 给定的2个double类型数据进行减法计算的功能并这2个数据计算的结果.
*/ /**
* 3 延续任务2, 定义表示圆形,三角形和梯形的类并在以上三个类中定义圆
* 的半径,三角形的底和高,梯形的上底下底和高属性并设置set和get方法;
* 在Calculator中定义能够实现计算图形面积的方法,能够对给定的以上圆
* 形,三角形和梯形实现计算面积功能并最终返回计算后的面积结果.
*/ package mission2; import java.util.Scanner; public class TestCalculator {
public static void main(String[] args) {
//定义Scanner接收用户输入
Scanner input = new Scanner(System.in); //先new一下Calculator类以便使用它的构造方法
Calculator cal = new Calculator(); /*使用addition方法的练习*/
//定义3个变量接收用户输入
int num1 = 0;
int num2 = 0;
int tag = 0; System.out.println("请输入第一个数:");
num1 = input.nextInt(); System.out.println("请输入第二个数:");
num2 = input.nextInt(); System.out.println("请输入计算类型:1加法,2减法,3乘法,4除法");
tag = input.nextInt(); //调用静态方法进行计算,用num4来接收计算结果
int num4 = Calculator.addition(num1,num2,tag); System.out.println("您输入的两个数计算结果是:"+num4); /*使用subtraction方法的练习*/
//定义2个变量接收用户输入,1个变量接收计算结果
double num5 = 0;
double num6 = 0;
double num7 = 0; System.out.println("请输入减数:");
num5 = input.nextDouble(); System.out.println("请输入被减数:");
num6 = input.nextDouble(); //调用构造方法执行减法
num7 = cal.subtraction(num5,num6); System.out.println("两数相减计算的结果为:"+num7);
/*计算图形面积的方法的练习*/
//定义area接收计算结果,定义i,j,k接收用户输入
double area = 0;
double i = 0;
double j = 0;
double k = 0;
//请用户输入要计算什么图形的面积,并定义一个循环
do {
System.out.println("请输入要计算什么图形的面积:1原型 2三角形 3梯形");
int e = input.nextInt();
if (e==1){
System.out.println("请输入圆的半径:");
i = input.nextDouble(); area = cal.calculateArea(i);
break;
}else if(e==2){
System.out.println("请输入三角形的底边长:");
i = input.nextDouble(); System.out.println("请输入三角形的高:");
j = input.nextDouble(); area = cal.calculateArea(i,j);
break;
}else if(e==3){
System.out.println("请输入梯形的上底边长:");
i = input.nextDouble(); System.out.println("请输入梯形的下底边长:");
j = input.nextDouble(); System.out.println("请输入梯形的高:");
k = input.nextDouble(); area = cal.calculateArea(i,j,k);
break;
}else
continue; //如果用户输入不合法,则重新执行一次循环
}while(true); System.out.println("计算的面积为:"+area); }
}
												

Java静态方法和实例方法的区别以及this的用法的更多相关文章

  1. java 静态方法和实例方法的区别

    转自 java 静态方法和实例方法的区别 静态方法和实例方法的区别主要体现在两个方面:   在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法 ...

  2. java 静态方法和实例方法的区别(转)

    静态方法和实例方法的区别主要体现在两个方面:   在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式.而实例方法只有后面这 ...

  3. JAVA 静态方法和实例方法的区别 (图表)

    静态方法和实例方法的区别主要体现在两个方面:   在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式.而实例方法只有后面这 ...

  4. java静态方法和实例方法的区别

    静态方法(方法前冠以static)和实例方法(前面未冠以static)的区别  调用静态方法或说类方法时,可以使用类名做前缀,也可以使用某一个具体的对象名:通常使用类名.static方法只能处理sta ...

  5. Java内存的 静态方法和实例方法的区别及使用场景

    注意:变量指基本数据类型非对象,局部变量不能被静态修饰 1.(静态)成员变量存放在data segment区(数据区),字符串常量也存放在该区 2.非静态变量,new出来的对象存放在堆内存,所有局部变 ...

  6. Java静态方法和实例方法区别详解

    静态方法和实例方法的区别主要体现在两个方面: 在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式.而实例方法只有后面这种方 ...

  7. Java | 基础归纳 | 静态方法与实例方法的区别

    静态方法和实例方法的区别主要体现在两个方面: 在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式.而实例方法只有后面这种方 ...

  8. 编写高质量代码改善C#程序的157个建议——建议100:静态方法和实例方法没有区别

    建议100:静态方法和实例方法没有区别 静态方法在加载时机和内存使用上和实例方法完全一致.在这里,我们先引出一个概念“类型对象”.比如类型Person,我们都知道new Person() 会产生一个对 ...

  9. java 静态方法和单例模式的区别

    1.加载时间 首先明白内存问题 Java内存分为:堆内存.栈内存.方法区(静态区和非静态区).本地方法区 无论是静态方法还是非静态方法,在内存中都只有一份分别位于方法区的静态区和非静态区:非静态方法在 ...

随机推荐

  1. 关于 C/C++ 函数调用约定

    关于 C/C++ 函数调用约定,大多数时候并不会影响程序逻辑,但遇到跨语言编程时,了解一下还是有好处的. VC 中默认调用是 __cdecl 方式,Windows API 使用 __stdcall 调 ...

  2. Win64 驱动内核编程-17. MINIFILTER(文件保护)

     MINIFILTER(文件保护) 使用 HOOK 来监控文件操作的方法有很多,可以在 SSDT 上 HOOK 一堆和 FILE 有关的函数,也可以对 FSD 进行 IRP HOOK,不过这些方法既不 ...

  3. WPF中属性经动画处理后无法更改的问题

    在WPF的Animation中,有一个属性为FillBehavior,用于指定时间线在其活动周期结束后但其父时间线仍处于活动周期或填充周期时的行为方式.如果希望动画在活动周期结束时保留其值,则将动画F ...

  4. 更好的滚动体验>better-scroll

    认识better-scroll better-scroll是一款重点用于解决移动端(已支持PC)各种滚动场景需求的插件,可使页面滚动效果更加流畅且富有弹性 better-scroll是用纯JavaSc ...

  5. HTML中的JavaScript

    HTML中的JavaScript 1.<script>元素 defer:可选.表示脚本可以延迟到文档完全被解析和显示之后再执行.只对外部脚本文件有效. 脚本会被延迟到整个页面都解析完毕后再 ...

  6. net5学习笔记---依赖注入

    小王的故事 小王去上班 ​ 小王是个程序员,每个工作日他都要去上班,诸多交通工具他最喜欢的交通工具是骑电车.在骑行的过程中放空自己使他很快. ​ 突然有一天天气预报说近期有很大的雨,小王再想骑电车去上 ...

  7. FHD 4K 8K分辨率

    4K(2160P,即4096×2160的像素分辨率)和8K(4320P,即7,680 × 4,320的像素分辨率)属于UHDTV. FHD是FULL HD(Full High Definition)的 ...

  8. 快速熟悉windows操作

    快捷键 win + E : 打开我的电脑 Ctrl+Shift+Esc:打开资源管理器 Alt +F4 :关闭当前窗口 Win + R:打开命令窗口 DOS 命令 打开CMD 的方式 Win+R:输入 ...

  9. 攻防世界(十三)unserialize3

    攻防世界系列 :unserialize3 1.打开题目,反序列化 2.代码审计 类xctf被调用时_weakeup()函数会被自动执行,但当序列化字符串中属性值个数大于属性个数,就会导致反序列化异常, ...

  10. Docker的镜像及容器常用操作(2)

    一.docker镜像 镜像(docker image) --- Docker 运行容器之前需要本地存在镜像,若本能地不存在,那么 Docker 会找默认镜像仓库( Docker Hub 公共注册服务器 ...