java基础之七->局部变量成员变量、引用类型、this、static

前俯后继
• 阅读 2883

局部变量和成员变量

局部变量

1、定义在方法中的变量称之为局部变量
2、作用域:从定义的文章开始到整个方法结束
3、注意:局部变量只能在当前方法中使用,其他地方无法使用
4、局部变量不包含默认值,如果没有使用变量的话,可以不赋值

成员变量

1、定义在方法外,类内的变量叫做成员变量
2、作用域:在整个类体内
3、成员变量包含默认值

package com.msbline.oop;
public class VarDemo {
    //成员变量
 int age = 20;
    public void test(){
        System.out.println(age);
        age = 10;
        System.out.println(age);
        int age = 30;
        System.out.println(age);
    }
    public void show(){
        //局部变量
        int a = 10;
        String name = "zhangsan";
        System.out.println(age);
    }
}

引用类型

java基础之七->局部变量成员变量、引用类型、this、static

内存分析

此处只是简单说法,详情还需jvm详细讲解
java基础之七->局部变量成员变量、引用类型、this、static
java基础之七->局部变量成员变量、引用类型、this、static

构造方法

创建对象的时候默认会调用构造方法来创建对象,(在堆中开辟空间),可以完成成员变量的某些初始化操作
构造方法语法:
方法名称:必须跟类的名称保持一致
访问修饰符:控制访问权限
形参:可以用户自定义添加,跟方法的普通参数一样
方法体:完成对象的初始化功能

注意:
1、创建完类之后,如果没有手动调用构造方法,会有一个默认的无参构造方法供调用
2、当用户自定义了构造方法之后,默认的无参构造方法就不能使用了,必须要手动定义无参构造方法
3、同一个类中可以包含多个构造方法
java基础之七->局部变量成员变量、引用类型、this、static
java基础之七->局部变量成员变量、引用类型、this、static
java基础之七->局部变量成员变量、引用类型、this、static

package com.msbline.oop;
public class Teacher {
    String name;
    int age;
    //有参构造方法
    public Teacher(String name, int age) {
        this.name = name;
        this.age = age;
    }
    //无参构造函数
    public Teacher() {
    }
    public void teach(){
        System.out.println("上课");
    }
    public static void main(String[] args) {
        Teacher teacher = new Teacher("jack",25);
        System.out.println(teacher.name);
        System.out.println(teacher.age);
    }
}

重载

在一个类中可以包含多个重名方法,但是注意方法的参数列表不能相同,构造方法亦是如此
1、参数个数不同
2、参数类型不同
3、参数顺序不同

package com.msbline.oop;
public class Teacher {
    public void teach(int classNumber){
        System.out.println("上课");
    }
    public void teach(String className){
        System.out.println("上课");
    }
    public static void main(String[] args) {
    }
}

this

java基础之七->局部变量成员变量、引用类型、this、static
注意:在构造方法中调用其他构造方法,必须位于方法的第一行

public class ThisDemo {
    String name;
    int age;
    public ThisDemo(String name) {
        this.name = name;
    }
    public ThisDemo(String name, int age) {
        this(name); //调用构造方法的写法,且必须位于第一行
        this.age = age;
    }
    public void test1(){
        System.out.println("test1");
    }
    public void test2(){
        System.out.println("test2");
        //        this.test1();
        test1();
    }
    public static void main(String[] args) {
        ThisDemo demo = new ThisDemo("zhangsan",29);
        System.out.println(demo.name);
        System.out.println(demo.age);
    }
}

static

注意:
1、静态变量不能在方法中定义,静态方法中定义也不行,静态变量只能属于类
2、非静态方法可以调用静态方法,静态方法不能直接调用非静态方法(除非通过new对象来调用)
3、一般工具类中的方法定义为static
java基础之七->局部变量成员变量、引用类型、this、static
java基础之七->局部变量成员变量、引用类型、this、static

java基础之七->局部变量成员变量、引用类型、this、static

package com.msbline.oop;
public class StaticDemo {
    String name = "zhangsan";
    static int age = 10;
    public static void main(String[] args) {
        StaticDemo staticName = new StaticDemo();
        //使用对象进行调用
        System.out.println(staticName.name);
        System.out.println(staticName.age);
        //使用类进行调用
        //        System.out.println(StaticName.name);
        System.out.println(StaticDemo.age);
    }
}
点赞
收藏
评论区
推荐文章
Karen110 Karen110
4年前
一篇文章带你了解JavaScript作用域
在JavaScript中,对象和函数也是变量。在JavaScript中,作用域是你可以访问的变量、对象和函数的集合。JavaScript有函数作用域:这个作用域在函数内变化。一、本地JavaScript变量一个变量声明在JavaScript函数内部,成为函数的局部变量。局部变量有局部作用域:它们只能在函数中访问。JS://codeherecann
小万哥 小万哥
2年前
C++中static关键字的作用
static是什么在最开始C中引入了static关键字可以用于修饰变量和函数,后来由于C引入了class的概念,现在static可以修饰的对象分为以下5种:成员变量,成员函数,普通函数,局部变量,全局变量static的作用修饰成员变量static修饰成
Wesley13 Wesley13
3年前
java成员变量的初始化
类变量(static变量,不需要实例化对象也可以引用)实例变量(非static变量,需要实例化对象)局部变量(类的成员函数中的变量)初始化方式:构造函数初始化变量声明时初始化代码块初始化java自动初始化(在构造函数执行之前执行) java保证所有变量被使用之前都是经过初始化的(声明并且定义过,被赋值
Jacquelyn38 Jacquelyn38
4年前
你所知道的JS变量作用域
变量的作用域,指的是变量在脚本代码中的可读、可写的有效范围,也就是脚本代码中可以使用这个变量的区域。在ES6之前,变量的作用域主要分为全局作用域、局部作用域(也称函数作用域)两种;在ES6及其之后,变量的作用域主要分为全局作用域、局部作用域、块级作用域这3种。相应作用域变量分别称为全局变量、局部变量、块级变量。全局变量声明在所有函数之外;局部变量是在函数体内
Stella981 Stella981
3年前
Javascript 变量 var与不var的区别
1.在函数作用域内加var定义的变量是局部变量,不加var定义的就成了全局变量。使用var定义var a  'hello World';function bb(){    var a  'hello Bill';    console.log(a);   }bb()   // 'hello Bill'conso
Stella981 Stella981
3年前
Rust学习笔记#2:变量声明、绑定与引用
!(https://oscimg.oschina.net/oscnet/up2a26b061f3ae6214fc3a12b58a2ad0e8433.JPEG)变量声明基础知识Rust中的变量分局部变量和全局变量两种,且必须先声明后使用,常见的声明语法为://声明局部变量,使用let关键字letva
Wesley13 Wesley13
3年前
Java深究之final、finally、finalize三者的区别
       在java中final、finally、finalize三者在写法上很相近,但是实际含义和作用却是相差甚远。本文主要是来深层的研究下这三者的用法以及之间的区别1.final属性:java中的关键字,修饰符作用:用于修饰类、成员方法、变量(成员变量、局部变量)用法:如果类被声明为final,那么该类就不能再派生出新的子类
Stella981 Stella981
3年前
ASMSupport局部变量的实现
局部变量的实现git@osc地址(http://git.oschina.net/wensiqun/asmsupport)在字节码层面,每一个方法都有一个局部变量数组,用来存储当前方法的参数,在方法内声明的变量,如果是非静态方法还要存储当前方法实例的引用this。在我们平时使用java的时候,这个局部变量的大小是在源码编译成class的时候就
Wesley13 Wesley13
3年前
Java连载7
一、变量1.注意点:在同一个“作用域”中,变量名不能重名,但是变量可以重新赋值。2.什么是作用域?答:描述的是变量的有效范围,在范围之内是可以被访问的,只要出了作用域就无法访问(也就是在大括号里面才行)3.关于变量的分类(1)局部变量:在方法体中声明的变量;(2)成员变量:在方法体外声明的变量。4.在不同的作用域中,变量名是可
Wesley13 Wesley13
3年前
C语言面试题大汇总之华为面试题 Eddy整理
1、局部变量能否和全局变量重名?  答:能,局部会屏蔽全局。要用全局变量,需要使用"::";局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。2、如何引用一个
Wesley13 Wesley13
3年前
OC常量、变量、属性及其特性
1.ObjectiveC中声明常量使用关键字const。如:constdoublePI3.1514;2.ObjectiveC中变量可以分为成员变量、局部变量和全局变量(用的很少,尽量不要用)。//————————常量—————————————————//方法一:definekDetailKey  
前俯后继
前俯后继
Lv1
寒灯思旧事,断雁警愁眠。
文章
4
粉丝
0
获赞
0