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;
}
}