java基础03
java基础03
0x00 函数
函数和方法没有本质的区别,函数接收参数,进行一些处理,返回一些值
public static void sum(int a,int b){
return a+b;
}
int a=sum(3,4);//a=7;
函数参数类型不匹配的时候,java会自动上类型转换,比如 要求double ,你传int 没问题的 反过来不行 ,如果需要people类的对象,你给他student 对象(student继承implement people) 没问题的。反过来不行 从事帮你把 窄范围的变成宽范围的。
java 函数 永远只能传递值???? **(基本数据类型传递值,管理对象的变量,实际值是一个地址/引用,通过传递这个地址/引用,使得接受这个值的参数也可以管理这个对象) **
从下面这个例子我们可以看出一个对象变量,实际是结构体的指针变量 而非结构体变量,如果是结构体变量,那么 1 不需要new这个类似malloc 分配内存空间的过程 2 作为参数传递后,就不可能被函数内部的参数修改。而恰恰与上述不符。
//该程序运行结果是19
public class Main {
public static void main(String arg[]){
Person a=new Person(20);
fun(a);
System.out.println(a.age);
}
public static void fun(Person x){
x.age=19;//x
x=new Person(21);
}
}
class Person{
public int age;//仅仅为了掩饰所以让对象的属性直接暴露出来,不符合面向对象的封装思想。
Person(int age){
this.age=age;
}
}
函数参数是函数内部的本地变量, 本地变量的作用域是对应的大括号,离开就没了。
只有类的成员变量会被默认初始化