zoukankan      html  css  js  c++  java
  • 构造方法&静态Static

    构造方法:

    概述:

    1.构造方法:构造函数,构造器,Constructor

    2.作用:用于给对象中的成员变量赋值。

    3.构造方法的格式:

    修饰符  类名{

    方法体

    }

    4.构造方法格式的说明:

     1.构造方法的方法名称,必须和类名一模一样,连大小写都一样。

    2.构造方法没有返回值类型,连void也没有

    3.构造方法没有return语句, 如果一定需要return语句,就写一个return

    构造方法其他说明:

    构造方法不需要手动调用,由JVM虚拟机在  创建对象的时候自动调用

    对象本身不能调用构造方法

    构造方法只能调用一次

    class Demo01_构造方法 {
        public static void main(String[] args) {
            Person p = new Person();
            System.out.println(p.getName() + "..." + p.getAge());
    
            //Person p2 = new Person();这是创建第二个对象;同一个对象只能调用一次构造方法
            //p.Person();编译报错,构造方法不能通过对象名称手动调用
        }
    }
    
    class Person {
        private String name;
        private int age;
    
        public Person() {
            name = "张三疯";
            age = 123;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getName(){
            return name;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public int getAge() {
            return age;
        }
    }

    构造方法的注意事项:构造方法分为有参构造方法和无参构造方法

    如果类中没有手动的写构造方法,那么系统会默认提供一个构造方法(无参构造方法)。

    如果类中已经手动写了构造方法,那么系统不会再默认提供构造方法了。

    构造方法可以重载

    class Demo02_构造方法的注意事项 {
        public static void main(String[] args) {
            Person p1 = new Person("张三疯", 123);
            System.out.println(p1.getName() + "..." + p1.getAge());
    
            Person p2 = new Person("李四光", 124);
            System.out.println(p2.getName() + "..." + p2.getAge());
    
            Person p3 = new Person();
            System.out.println(p3.getName() + "..." + p3.getAge());
        }
    }
    
    class Person {
        private String name;
        private int age;
        /*
        public Person() {
            System.out.println("自己定义的空参构造执行了!!!");
        }
        */
    
        public Person() {
        
        }
    
        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getName(){
            return name;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public int getAge() {
            return age;
        }
    }

     构造方法和set方法的比较:

    1.构造方法和set方法都是用来给成员变量赋值。

    区别:构造方法是在创建对象的同时,由jvm自动调用执行,用于给属性赋值,只能执行一次。

    Set方法是在创建对象之后,由对象手动调用,用于给属性修改值,可以调用多次。

    静态:

    静态的作用就是将程序中多次要用的变量用static修饰,这样这个变量就成了一个常量,以后要使用这个变量时,直接调用被staitc修饰的那个就好了,这样子节省了内存空间,而且便于修改,维护。

    静态的加载时机:随着类被加载到内存中去,就直接在静态区开辟了存储静态变量的内存空间

    静态变量优先于对象而存在。

    静态变量被所有该类对象所共享。

    静态变量可以被类名直接打点调用,不需要创建对象 

    静态方法:在方法的声明上,加上static关键字的方法,就是静态方法。

    静态方法不能访问非静态的变量:原因:静态方法在静态方法区,非静态变量在普通变量区,静态方法区里找不到非静态变量,所以不能访问。同理,静态方法不能访问非静态方法。

    静态变量和非静态变量的区别:

    概念上,所属不同:

    非静态变量属于对象

    静态变量属于类,类对象。

    内存空间不同,存储位置不同:

    非静态变量属于对象,所以存储在堆内存中,静态变量属于类,存储在方法区的静态区中。

    内存时间不同,声明周期不同:

    非静态变量属于周期,所以生命周期和对象相同,随着对象的创建而存在,随着对象的消失而消失。

    静态变量属于类,所以生命周期和类相同,随着类的加载而存在,随着类的消失而消失。

    访问方式不同:非静态变量只能通过对象来访问,静态变量可以通过类名打点来调用,也可以通过对象来调用。

  • 相关阅读:
    python 协程
    python中基于descriptor的一些概念
    python remove del pop 的区别
    python 装饰器 和面向切面编程(AOP)
    python yield详解
    Python的列表推导式,字典推导式,集合推导式使用方法
    python 垃圾回收机制
    (5) etcd 介绍、经典适用场景、安装、配置、测试
    grafana 安装配置
    open-falcon 安装配置
  • 原文地址:https://www.cnblogs.com/ywzbky/p/10603033.html
Copyright © 2011-2022 走看看