java构造方法 静态变量小知识

一 构造方法
1 作用 :对对象的属性(成员变量)进行初始化的
2 写法:
(1)构造方法的方法名与类名相同(大小写必须一样)
(2) 没有返回值类型(连void都不写)
(3)没有返回值 没有return

(测试类 一个文件只有一个访问public)

public class Demo01 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //创建一个Person方法
        //构造方法是系统帮你调用的 在初始化对象时----有参  无参
        //无法自己来调用方法(不能使用对象点方法);
        Person p = new Person();
        //p.Person();
        p.sayHi();

        //测试有参的构造方法
        //理解 :初始化时后面的那对小括号
        //填参数调用有参的构造方法
        //没填参数反之调用无参 ,无参
        // 思考 为什么你这么理解
        //函数的重载 参数不同 :顺序 个数 参数类型
        //切记 参数的名字 不同 不是函数的重载
        //构造方法也属于 函数的重载
        Person p2 = new Person("王五",100);
        p2.sayHi();

    }

}

class Person{
    String name = "李四";
    int age = 28;
    //String name ;
    //int age;

    //构造方法(无参数的构造方法)
    public Person() {
        name="张三";
        age = 18;
        System.out.println("我是一个构造方法");
    }
    // 需求: 写一个有构造方法
    public Person(String name,int age){
        //给成员变量赋值
        this.name = name;
        this.age = age;

    }
    public void sayHi() {
        System.out.println(name+"......"+age);
    }
}

二 构造方法的注意事项
1 如果你没有写任何构造方法
那么系统会给你提供一个无参的构造方法
2 如果你写了有参的构造方法
建议你把有参的构造方法写上

public class Demo02 {


    public static void main(String[] args) {
        //这样修改对象的属性好么?
        //不好 为什么 好 为什么
        Car c1 = new Car("五菱宏光",4);
        //这样修改对象的 属性 属于谋杀
        //坏处 浪费了类存空间
        //c1 = new Car("长城汽车",5);
        //直接修改属性 相对于上面节省了空间
        c1.name="北京现代";
        c1.num = 100;
        c1.sayhi();
    }
}
class Car{
    String name;
    int num;
    public Car(){
        this.name="lanbjn";
        this.num=4;
    }
    //写个有参的构造方法
    public Car(String name,int num) {
        this.name = name;
        this.num = num;

    }
     public void sayhi() {

         System.out.println(name+"...."+num);
     }
}

举例
构建一个长方形的类
计算周长面积
要求
有构造方法 set、get 成员变量私有化

public class Demo03 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

    }

}
//起类名的时候尽量不要与系统重名
class Rect {
 private    int  hight;//高
 private   int   wight;//宽

 //构造方法
 //get set 方法
 //成员方法

 //wucan
 public Rect() {

 }

 //有参
public  Rect(int hight,int wight) {
     this.hight = hight;
     this.wight = wight;
 }
//get set 方法
public void setHight(int hight) {
    this.hight = hight;
}
public int  getHight() {
    return this.hight;
}
public void setWight(int wight) {
    this.wight = wight;
}
public int  getWight() {
    return this.wight;
}
//成员方法
//获取周长
//注意 不用 给周长面积传参数
//谁调用这个周长面积的方法 , 就计算谁的周长面积
public int getLength() {
    return (this.hight+this.wight)*2;
}
public int getAreo(){
    return (this.hight*this.wight);

}
}

三 静态变量-
静态变量的使用
1可以使用对象调用(不推荐)
2 静态变量用类名调用

静态变量的特点
1 随着类的加载而加载
2 创建优先于对象的存在
3 是类创建出来的对象共有(共享)的部分
4 可以使用类名去调用

好处
1 可以节省内存空间

应用场景
饮水机
静态变量 成员变量的区别
1 所属不同
成员变量:属于对象的 所以他叫对象变量又叫实例变量
静态变量:属于类的(依托于类)又叫类变量
2 内存中的存储位置不同
成员变量:存储与堆内存中
静态变量:存储方法区的静态区中
3 加载到内存中的时机不同(生命周期)
成员变量:随着对象的创建而创建

静态变量:随着类的加载而创建
4 调用的方法不同
成员变量:只能使用对象而调用

静态变量:可以使用对象而调用 但是一般使用类去调用
内存表现步骤

  public class Demo04 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        AVGirl g1 = new AVGirl();
        g1.name = "苍老师";
        AVGirl.country = "日本";
        g1.sayhi();

        AVGirl g2 = new AVGirl();
        g2.name = "小泽老师";
        //g2.country = "日本";
        AVGirl.country = "日本1";
        g2.sayhi();
    }

}
class AVGirl{
    String name;
    static String country;

    public void sayhi() {
        System.out.println(this.name+"....."+AVGirl.country);
    }
}

他们在内存中的表现
这里写图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值