zoukankan      html  css  js  c++  java
  • Java静态方法和实例方法的区别以及this的用法

    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);
    
        }
    }
    
    
  • 相关阅读:
    [Usaco2005 open]Expedition
    舞会
    双栈维护之--Hdu4699 editor
    利用两个堆来维护第K大之Poj3784 Running Median
    Zju1061Web Navigation 网络导航
    Qsort求静态的第K大
    BZOJ2726【SDOI2012】任务安排(斜率优化Dp+二分查找)
    P2365 任务安排 斜率优化入门
    任务处理--斜率优化Dp入门
    结构体排序教学
  • 原文地址:https://www.cnblogs.com/zengyu1234/p/14864550.html
Copyright © 2011-2022 走看看