函数的方法
知识点:
|
结合上面的分析,关于值传递和引用传递可以得出这样的结论:
(1)基本数据类型传值,对形参的修改不会影响实参;
(2)引用类型传引用,形参和实参指向同一个内存地址(同一个对象),所以对参数的修改会影响到实际的对象;
(3)String, Integer, Double等immutable的类型特殊处理,可以理解为传值,最后的操作不会修改实参对象。
代码:
public class Demo01 {
public static void main(String[] args) {
int sum =add(1,2);
System.out.println(sum);
//test();
}
//加法
public static int add(int a,int b){
return a+b;
}
public static void test(){
for (int i=0;i<=1000;i++){
if(i%5==0){
System.out.print(i+"\t");
}
if(i%(5*3)==0){//换行
System.out.println();
}
}
}
}
public class Demo02 {
public static void main(String[] args) {
int max=max(20,20,30);
//double max =max(10.0,20.0);
System.out.println(max);
}
//比大小
public static int max(int num1,int num2){
int result=1;
if (num1 >num2){
result=num1;
}else if (num1<num2){
result=num2;
}else {
System.out.println("num1=num2");
return 0; //终止方法
}
return result;
}
//比大小 重载
public static double max(double num1,double num2){
double result=1;
if (num1 >num2){
result=num1;
}else if (num1<num2){
result=num2;
}else {
System.out.println("num1=num2");
return 0; //终止方法
}
return result;
}
public static int max(int a,int b,int c){
int result =1;
if (b>=a&&b>=c){
result =b;
System.out.println("b值最大");
}else if (b<=a&&b>=c){
result=a;
System.out.println("a值最大");
}else if (b<=a&&b<=c){
result=c;
System.out.println("c值最大");
}
return result;
}
}
public class Demo04 {
public static void main(String[] args) {
//调用可变参数的方法
printMax(34,3,3,2,56.5);
printMax(new double[]{1,2,3});
}
public static void printMax(double... number){
if (number.length==0){
System.out.println("No argument passed");
return;
}
double result =number[0];
//排序
for (int i=1;i<number.length;i++){
if (number[i]>result){
result=number[i];
}
}
System.out.println("The max value is"+ result);
}
}
public class Demo06 {
//5! 5*4*3*2*1 递归思想
public static void main(String[] args) {
System.out.println(f(1));
}
public static int f(int n){
if (n==1){
return 1;
}else {
return n*f(n-1);
}
}
}
public class Test {
//写一个计算器要求实现加减乘除,并且能够循环接收新的数据,通过用户实现
public static void main(String[] args) {
//死循环可以一直运算
while (true){
System.out.println("请输入你想要的运算符号:");
Scanner scanner =new Scanner(System.in);
String operator=scanner.next();
if (operator.equals("quit")){
System.out.println("退出计算器");
break;
}else {
System.out.println("请输入计算的两个数,Enter输入下一个数字,再次Enter算出结果: ");
}
Scanner scanner1 =new Scanner(System.in);
double d1=scanner1.nextDouble();
Scanner scanner2 = new Scanner(System.in);
double d2=scanner1.nextDouble();
double result=0;
switch (operator){
case "+":
result = add(d1, d2);
break;
case "-":
result = sub(d1, d2);
break;
case "*":
result = mul(d1, d2);
break;
case "/":
if(d2==0){
System.out.println("第二个数字不能为0否则没有意义");
}else {
result = div(d1, d2);
}
break;
default:
System.out.println("请重新输入");
}
System.out.println(d1 + operator + d2 + "=" + result);
}
}
// add方法
public static double add(double a, double b) {
return a + b;
}
// sub方法
public static double sub(double a, double b) {
return a - b;
}
// mul方法
public static double mul(double a, double b) {
return a * b;
}
// div方法
public static double div(double a, double b) {
return a / b;
}
}
return a - b;
}
// mul方法
public static double mul(double a, double b) {
return a * b;
}
// div方法
public static double div(double a, double b) {
return a / b;
}
}