package com.atguigu.exer;/*
* 1.编写程序,定义三个重载方法并调用。方法名为mOL。
三个方法分别接收一个int参数、两个int参数、一个字符串参数。
分别执行平方运算并输出结果,相乘并输出结果,输出字符串信息。
在主类的main ()方法中分别用参数区别调用三个方法。
2.定义三个重载方法max(),
第一个方法求两个int值中的最大值,
第二个方法求两个double值中的最大值,
第三个方法求三个double值中的最大值,
并分别调用三个方法。
*
*
*/publicclassOverloadExer{//1. 如下的三个方法构成重载publicvoidmOL(int i){
System.out.println(i * i);}publicvoidmOL(int i,int j){
System.out.println(i * j);}publicvoidmOL(String s){
System.out.println(s);}//2.如下的三个方法构成重载publicintmax(int i,int j){return(i > j)? i : j;}publicdoublemax(double d1,double d2){return(d1 > d2)? d1 : d2;}publicdoublemax(double d1,double d2,double d3){double max =(d1 > d2)? d1 : d2;return(max > d3)? max : d3;}}
## MethodArgsTest.java
```java
package com.atguigu.java1;/*
* 可变个数形参的方法
*
* 1.jdk 5.0新增的内容
* 2.具体使用:
* 2.1 可变个数形参的格式:数据类型 ... 变量名
* 2.2 当调用可变个数形参的方法时,传入的参数个数可以是:0个,1个,2个,。。。
* 2.3 可变个数形参的方法与本类中方法名相同,形参不同的方法之间构成重载
* 2.4 可变个数形参的方法与本类中方法名相同,形参类型也相同的数组之间不构成重载。换句话说,二者不能共存。
* 2.5 可变个数形参在方法的形参中,必须声明在末尾
* 2.6 可变个数形参在方法的形参中,最多只能声明一个可变形参。
*
*/publicclassMethodArgsTest{publicstaticvoidmain(String[] args){
MethodArgsTest test =newMethodArgsTest();
test.show(12);// test.show("hello");// test.show("hello","world");// test.show();
test.show(newString[]{"AA","BB","CC"});}publicvoidshow(int i){}publicvoidshow(String s){
System.out.println("show(String)");}publicvoidshow(String ... strs){
System.out.println("show(String ... strs)");for(int i =0;i < strs.length;i++){
System.out.println(strs[i]);}}//不能与上一个方法同时存在// public void show(String[] strs){// // }//The variable argument type String of the method //show must be the last parameter// public void show(String ...strs,int i){// // }}
ValueTransferTest.java
package com.atguigu.java1;/*
*
* 关于变量的赋值:
*
* 如果变量是基本数据类型,此时赋值的是变量所保存的数据值。
* 如果变量是引用数据类型,此时赋值的是变量所保存的数据的地址值。
*
*/publicclassValueTransferTest{publicstaticvoidmain(String[] args){
System.out.println("***********基本数据类型:****************");int m =10;int n = m;
System.out.println("m = "+ m +", n = "+ n);
n =20;
System.out.println("m = "+ m +", n = "+ n);
System.out.println("***********引用数据类型:****************");
Order o1 =newOrder();
o1.orderId =1001;
Order o2 = o1;//赋值以后,o1和o2的地址值相同,都指向了堆空间中同一个对象实体。
System.out.println("o1.orderId = "+ o1.orderId +",o2.orderId = "+o2.orderId);
o2.orderId =1002;
System.out.println("o1.orderId = "+ o1.orderId +",o2.orderId = "+o2.orderId);}}classOrder{int orderId;}
ValueTransferTest1.java
package com.atguigu.java1;/*
* 方法的形参的传递机制:值传递
*
* 1.形参:方法定义时,声明的小括号内的参数
* 实参:方法调用时,实际传递给形参的数据
*
* 2.值传递机制:
* 如果参数是基本数据类型,此时实参赋给形参的是实参真实存储的数据值。
* 如果参数是引用数据类型,此时实参赋给形参的是实参存储数据的地址值。
*
*/publicclassValueTransferTest1{publicstaticvoidmain(String[] args){int m =10;int n =20;
System.out.println("m = "+ m +", n = "+ n);//交换两个变量的值的操作// int temp = m ;// m = n;// n = temp;
ValueTransferTest1 test =newValueTransferTest1();
test.swap(m, n);
System.out.println("m = "+ m +", n = "+ n);}publicvoidswap(int m,int n){int temp = m ;
m = n;
n = temp;}}
ValueTransferTest2.java
package com.atguigu.java1;publicclassValueTransferTest2{publicstaticvoidmain(String[] args){
Data data =newData();
data.m =10;
data.n =20;
System.out.println("m = "+ data.m +", n = "+ data.n);//交换m和n的值// int temp = data.m;// data.m = data.n;// data.n = temp;
ValueTransferTest2 test =newValueTransferTest2();
test.swap(data);
System.out.println("m = "+ data.m +", n = "+ data.n);}publicvoidswap(Data data){int temp = data.m;
data.m = data.n;
data.n = temp;}}classData{int m;int n;}