成员变量和局部变量的区别?

  1. 在类中的位置不同

    • 成员变量:在类中方法外

    • 局部变量:在方法定义中或者方法声明上

  2. 在内存中的位置不同

    • 成员变量:在堆内存

    • 局部变量:在栈内存

  3. 生命周期不同

    • 成员变量:随着对象的创建而存在,随着对象的消失而消失

    • 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

  4. 初始化值不同

    • 成员变量:有默认初始化值

    • 局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。

  5. 注意事项:

    • 局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。

方法

方法就是函数,function,是为了完成特定功能的代码块

修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) {
        函数体;
        return 返回值;
}
  1. 定义函数可以将功能代码进行封装
  2. 便于对该功能进行复用
  3. 函数只有被调用才会被执行

    (当函数被调用的时候,jvm虚拟机会在内存中给该函数分配一块内存空间,该内存空间里面可以定义该函数所用到的一些变量,当方法执行完毕之后,该内存空间会被释放掉。)调用完成,函数执行完毕。
  4. 函数的出现提高了代码的复用性
  5. 对于函数没有具体返回值的情况,返回值类型用关键字void表示,那么该函数中的return语句如果在最后一行可以省略不写。

注意:

  1. 调用方法时可以不接受方法返回的值,且不会报错
  2. 函数中只能调用函数,不可以在函数内部定义函数。

方法重载

  1. 同一个类中,允许存在一个以上的同名的方法,参数个数,参数类型不同
  2. 与返回值类型无关,只看方法名和参数列表
  3. 虚拟机通过参数列表的不同来区分同名方法
  4.  public void repeatName () {
     
     }
     
     public void repeatName (int i) {
         
     }
     
     public void repeatName (double i) {
         
     }
    

形参

  1. 基本类型:形式参数的改变不影响实际参数

  2. 引用类型:传入一个类的对象,形参是该对象的一个引用,形式参数的改变直接影响实际参数

    1. 类名:需要的是该类的对象
    2. 抽象类:需要的是该抽象的类子类对象,用具体子类实现
    3. 接口:需要的是该接口的实现类对象,用具体子类实现
  3. String是引用类型,但不能进行地址传递


    //抽象类
    abstract class Person {
        public abstract void study();
    }

    class PersonDemo {
        public void method(Person p) {//p; p = new Student();  Person p = new Student(); //多态
            p.study();
        }
    }
    
    //定义一个具体的学生类
    class Student extends Person {
        public void study() {
            System.out.println("Good Good Study,Day Day Up");
        }
    }
    
    class PersonTest {
        public static void main(String[] args) {
            //目前是没有办法的使用的
            //因为抽象类没有对应的具体类
            //那么,我们就应该先定义一个具体类
            //需求:我要使用PersonDemo类中的method()方法
            PersonDemo pd = new PersonDemo();
            Person p = new Student();
            pd.method(p);
        }
    }


    //接口
    //定义一个爱好的接口
    interface Love {
        public abstract void love();
    }
    
    class LoveDemo {
        public void method(Love l) { //l; l = new Teacher();  Love l = new Teacher(); 多态
            l.love();
        }
    }
    
    //定义具体类实现接口
    class Teacher implements Love {
        public void love() {
            System.out.println("老师爱学生,爱Java,爱林青霞");
        }
    }
    
    class TeacherTest {
        public static void main(String[] args) {
            //需求:我要测试LoveDemo类中的love()方法
            LoveDemo ld = new LoveDemo();
            Love l = new Teacher();
            ld.method(l);
        }
    }

返回值

引用类型:

  1. 类:返回的是该类的对象
  2. 抽象类:返回的是该抽象类的子类对象
  3. 接口:返回的是该接口的实现类的对象
- 类

        class Student {
            public void study() {
                System.out.println("Good Good Study,Day Day Up");
            }
        }

        class StudentDemo {
            public Student getStudent() {
                return new Student();
            }
        }


- 抽象类

        abstract class Person {
            public abstract void study();
        }
        class PersonDemo {
            public Person getPerson() {
                //Person p = new Student();
                //return p;
                
                return new Student();
            }
        }
        class Student extends Person {
            public void study() {
                System.out.println("Good Good Study,Day Day Up");
            }
        }


- 接口

        interface Love {
            public abstract void love();
        }
        class LoveDemo {
            public Love getLove() {
                //Love l = new Teacher();
                //return l;
                
                return new Teacher();
            }
        }
        //定义具体类实现接口
        class Teacher implements Love {
            public void love() {
                System.out.println("老师爱学生,爱Java,爱林青霞");
            }
        } 

构造方法

给对象的属性赋初值

  1. 构造方法格式
    • 方法名与类名相同

    • 没有返回值类型,连void都没有

    • 没有具体的返回值

        public Student(){
            
        }
        public Student(String name1, int sge) {         //构造函数可以重载
            this.name1 = name1;
            this.sge = sge;
        }   
      
  2. 默认构造:建议自己给出无参构造
    • 如果你不提供构造方法,系统会给出默认构造方法
    • 如果你提供了构造方法,系统将不再提供

创建对象

Student s = new Student();

加载过程

  1. 加载Student.class文件进内存
  2. 在栈内存为s开辟空间
  3. 在堆内存为学生对象开辟空间
  4. 对学生对象的成员变量进行默认初始化
  5. 对学生对象的成员变量进行显示初始化
  6. 通过构造方法对学生对象的成员变量赋值
  7. 学生对象初始化完毕,把对象地址赋值给s变量

匿名对象

匿名对象:就是没有名字的对象。

匿名对象的应用场景:

  1. 调用方法,仅仅只调用一次的时候。
    • 好处:匿名对象调用完毕就是垃圾。可以被垃圾回收器回收。
  2. 匿名对象可以作为实际参数传递

Class s = new Class();
s.method();

new Class().method();
new Class().method(new Class());
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,064评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,606评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,011评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,550评论 1 269
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,465评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,919评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,428评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,075评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,208评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,185评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,191评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,914评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,482评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,585评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,825评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,194评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,703评论 2 339

推荐阅读更多精彩内容

  • 类是一个重要的C#编程概念,它在一个单元内定义了表示和行为。类提供了面向对象编程和面向组件编程所需的语言支持,是创...
    CarlDonitz阅读 806评论 0 2
  • C++基础2:类与对象 1. 认识类与对象 什么是类(class)?类(class)是类型(type),是用户自定...
    jdzhangxin阅读 2,240评论 0 7
  • 闻鸡起舞又一年 什么是健康?什么是健康的生活方式? 健康既包括身体健康也包括心理健康。健康的生活方式包括:充足的睡...
    一枚冰儿阅读 317评论 1 0
  • 这几年,某宝的势头太强了,最直观的一个表现是,人们的逛街时间已进入无孔不入,抽空刷个手机,包裹隔两天就送到了。 ...
    蔚蓝Life阅读 194评论 0 0
  • 不知不觉,清明伴着绵绵细雨来到我们身边。 当我们手捧鲜花,又一次走向那个埋葬着虽与我们天人相隔、却永远密不可分的先...
    祝方婷阅读 394评论 2 1