目录
3.什么是基本数据类型?什么是引用数据类型?他们在方法中的使用各有什么区别?
1.在Java中如何定义方法(类似于C语言中的函数)?
以下给出定义方法的三种形式:
//Java中程序最小执行单元是方法
public class demo61 {
public static void main(String[] args) {
myMethod1();
myMethod2(20,80);//实参--实际参数
System.out.println("调用带返回值的方法:"+myMethod3(20,80));
}
//1.简单的方法定义——方法名首字母小写更加规范
public static void myMethod1(){
System.out.println("调用简单方法");
return;//这句话可以省略不写
}
//2.带参数的方法定义
public static void myMethod2(int num1,int num2){//形参--形式参数
System.out.println("调用带参数的方法:"+(num1+num2));
}
//3.带返回值的方法的定义
public static int myMethod3(int num1,int num2){
return num1+num2;
}
}
输出:
2.方法的重载是什么?如何定义重载的方法?
方法重载:在同一个类中,在一个类的多个方法中可以用同一个名字作为方法名
如:求不同个数的int类型变量的和(参数个数不同),再如:求不同类型变量(如double与int)的和(参数类型不同),都能用sum来命名方法。
简单来说,就是一个类中的同名方法的形参(也就是方法定义中圆括号里面的定义的形参)必须不一样(类型,个数,先后顺序)
下面给出方法重载的案例:
public class demo62 {
public static void main(String[] args) {
int sum = sum(1, 0);//ctrl+alt+V自动补齐左边的数据:int sum =
}
//以下方法构成重载关系
public static int sum(int a, int b) {
return a + b;
}
public static int sum(int a, int b, int c) {
return a + b + c;
}
public static double sum(double a, double b) {
return (a + b);
}
public static double sum(int a, double b) {
return (a + b);
}
public static double sum(double a, int b) {
return (a + b);
}
}
需要注意的是,方法的重载与返回类型无关,也就是说,如果方法名与形参都一样,只是返回类型不一样(如一个是int一个是byte),不构成重载关系,在IDEA中会报错。
程序在调用方法时会根据传过去的参数判断应该使用哪一个方法。
3.什么是基本数据类型?什么是引用数据类型?他们在方法中的使用各有什么区别?为什么在方法中为变量赋值后输出我的变量值并没有改变?
基本数据类型:如int,double,boolean,char
引用数据类型:其他,如int[],String,变量名存储的是存储数据的地址(引用地址)
在方法中,基本数据类型的形参实参相互不影响,引用数据类型形参实参相互关联:因为用的是同一处地址
以下是演示代码:
两个不同数据类型的变量在方法中进行赋值操作时的区别。
public class demo63 {
public static void main(String[] args) {
//方法调用时是存在栈内存中的,方法开始就是入栈,方法结束就出栈
System.out.println("main方法入栈,a,b初始值皆为true");
boolean a=true;
System.out.println("基本数据类型a在调用change方法前:"+a);
change(a);
System.out.println("基本数据类型a在调用change方法后:"+a);
boolean[] b={true};
System.out.println("引用数据类型b在调用change方法前:"+b[0]);
change(b);
System.out.println("引用数据类型b在调用change方法后:"+b[0]);
System.out.println("main方法出栈");
}
public static void change(boolean a){
System.out.println("change a 方法入栈");
//这里的false赋值给了栈内存中change方法内的变量名a
//不影响栈内存中main方法内的变量a
a=false;
System.out.println("基本数据类型a在change方法中时:"+a);
System.out.println("change a 方法出栈");
}
public static void change(boolean[] b){
System.out.println("change b 方法入栈");
b[0]=false;
System.out.println("引用数据类型b在change方法中时:"+b[0]);
System.out.println("change b 方法出栈");
}
}
输出结果: