08Java值传递(加公司面试题练习)

212_面向对象(上)

1:值传递经典习题

2:解题方法:

方法一:直接写method方法 然后在方法内打印,打印后终止,就不使用main方法里面的打印语句了。

package com.atguigu.java.day09.java1;

/**
 * @author lenovo
 * @version 1.0
 * @project JavaSE
 * @description 2017公司面试题
 * @date 2022/10/10 10:05:45
 */
public class zhichuandi {
    public static void main(String[] args) {
        int a=10;
        int b=10;
        method(a,b);

        System.out.println("a="+a);
        System.out.println("b="+b);
    }  
    public static void method(int a, int b){
        a*=10;
        b*=20;
        System.out.println(a);
        System.out.println(b);
        System.exit(0);
    }
}

3:方法二:重写

package com.atguigu.java.day09.java1;

import java.io.PrintStream;

/**
 * @author lenovo
 * @version 1.0
 * @project JavaSE
 * @description 2017公司面试题
 * @date 2022/10/10 10:05:45
 */
public class zhichuandi {
    public static void main(String[] args) {
        int a=10;
        int b=10;
        method(a,b);

        System.out.println("a="+a);
        System.out.println("b="+b);
    }
//    public static void method(int a, int b){
//        a*=10;
//        b*=20;
//        System.out.println(a);
//        System.out.println(b);
//        System.exit(0);
//    }

    //法二:
    public static void method(int a,int b){

        PrintStream ps=new PrintStream(System.out){
            @Override
            public void println(String x){
             if("a=10".equals(x)){
                 x="a=100";
             }else if("b=10".equals(x)){
                 x="b=200";
             }
             super.println(x);
            }
        };
        System.setOut(ps);
    }
}



4:微软面试题

package com.atguigu.java.day09.homework;

/**
 * @author lenovo
 * @version 1.0
 * @project JavaSE
 * @description 微软面试题,定义一个数组,每个位置上的值除以首位置的元素,得到的新结果作为该位置上的新值。遍历新的数组。
 * @date 2022/10/10 10:33:29
 */
public class MicroSoft {
    public static void main(String[] args) {
        int []arr=new int []{12,3,3,34,56,77,432};
        for(int i=arr.length-1;i>=0;i--){
            arr[i]=arr[i]/arr[0];
        }
    }

}

5:关于数组打印(乐视)


package com.atguigu.java.day09.homework;

/**
 * @author lenovo
 * @version 1.0
 * @project JavaSE
 * @description int []arr =new int [10]
 * char []arr1=new char [10];
 * @date 2022/10/10 10:49:37
 */
public class ArraysPrint {
    public static void main(String[] args) {
        int []arr=new int []{1,2,3};
        System.out.println(arr);

        char []arr1=new char []{'a','b','c'};
        System.out.println(arr1);
    }
}

在这里插入图片描述
原因:println方法里面,关于数组打印只有char[]里面的方法体是遍历了一遍,而int是输出的地址值。

在这里插入图片描述

6:值传递:

在这里插入图片描述

package com.atguigu.java.day09.exer2;

/**
 * @author lenovo
 * @version 1.0
 * @project JavaSE
 * @description 1
 * @date 2022/10/10 15:15:17
 */
public class Circle {
    double radius;
    public double  findArea(){
        return Math.PI * radius * radius;
    }
}
package com.atguigu.java.day09.exer2;

/**
 * @author lenovo
 * @version 1.0
 * @project JavaSE
 * @description 1
 * @date 2022/10/10 15:15:24
 */
public class PassObject {
    public static void main(String[] args) {

        PassObject test=new PassObject();
        Circle c=new Circle();

        test.printAreas(c,5);

        System.out.println("now radius is "+c.radius);

    }

    public void printAreas(Circle c,int time){

        System.out.println("Radius\t\tArea");

        for(int i=1;i<=time;i++){
            c.radius=i;
            System.out.println(c.radius+"\t\t"+c.findArea());
        }

        c.radius=time+1;
    }
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张学恒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值