java构造方法和静态变量解析

构造方法注意事项:
* 1.如果你 没写无参的构造方法系统会给你提供一个
* 2.如果只写了有参的构造方法 这是系统不再给你提供无参的构造 方法
* 3.写类的时候建议无参有参构造方法全写;

定义类书写顺序
* 成员变量—无参有参构造方法—Setget方法—成员方法

public class demo01 {
    public static void main(String[] args) {
         Car car = new Car();
          car.name = "法拉利";
          car.num = 911;
          car.sayHi();
          //现在使用有参构造方法创建对象
         Car c2 = new Car("SDK",10);
          System.out.println(c2.name);
          //在赋值成员的时候使用那种方法好 set方法 和 有参的构造方法 使用set 方法
           Car c3 = new Car("",11);
    }

“`
}

class Car {
String name;
int num;
//构造方法的重载也和函数一样只跟参数有关
// 无参构造方法
//当类中的成员变量需要计算的时候可以在构造方法中完成
public Car(){
System.out.println(“我是午餐的构造方法”);
}
public Car(String name,int num) {
//初始化成员变量
this.num = num;
this.name = name;
System.out.println(“我是有参的构造方法”);
}

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

public void fun() {
    System.out.println("哈哈");
}

}

静态变量和静态方法(使用static 修饰)
* 静态变量相当于共享变量
* 静态变量保存在方法区的静态区(共享区)
* 静态变量是共享的区间
* 静态变量如何调用
* 1.可以使用对象来调用
* 2.推荐 类名来调用
* 为什么静态变量要使用类名来调用
* 先有的类后有的对象
* 只要加载了.class文件就加载了静态变量(这是还没有对象产生)
* 静态变量 和 非静态变量的 区别
* 1.态的变量 类名调用方式不同 ;静和对象 调用 (推荐用类名调用)静态变量也叫类变量,非静态只能用对象调用(属于对象,对象变量)
* 2.内存中存在的位置不同 ; 静态变量在方法区的静态区,非静态变量在堆内存中
* 3.加载的方式不同 ;
* 静态变量:随着类的加载而加载
* 非静态变量:随着对象 的创建而创建(依赖对象)
* 4.生命周期不同
* 静态变量: 随着类的消失而销毁,相当于程序结束
* 非静态变量;随着对象 的创建而创建,随着对象的销毁而销毁
*
* 静态变量加载步骤
* 1.加载.class文件
* 2.main方法入栈
* 3.要创建AVGirl的对象,先要加载avgurl.class文件
* 4.avgirl.class中分为静态区和非静态区
* 这时候初始化静态变量country = null
* 5创建对象(在堆区开辟空间)
* 6.把对象地址赋值给girl变量保存
* 7 通过类名修改 类变量的值;
* 8sayhi方法入栈 打印
* 9 sayhi出栈
* 10.main入栈

public class demo03 {
public static void main(String[] args) {
AVGril g1 = new AVGril();
g1.name = “苍老师”;
AVGril.country = “日本”;
g1.sayHi();

 AVGril g2 = new AVGril();
 g2.name = "波多老湿";
AVGril.country = "北海道";
 g2.sayHi();
 g1.sayHi();
}

}

class AVGril {
String name;
static String country;

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

}

静态方法 ; 使用static修饰的方法
* 1.非静态方法 可以使用静态变量和非静态变量,可以使用静态方法和非静态方法
* 2.静态方法 只能使用静态变量只能使用静态方法

public class demo04 {
public static void main(String[] args) {
Man man = new Man();
man.fun();

}

}

class Man {
int num1 = 10;
static int num2 = 5;
//非静态方法可以访问静态变量 和 非静态变量
//静态方法 可以访问啥 (一加静态相当于 随着类改变,和对象没什么关系)
public void fun() {
System.out.println(this.num1 );
System.out.println(Man.num2 );
//调用静态方法(类方法)只要是静态的 使用类名去调
Man.sayHi();
}
public static void sayHi() {

}
public static void fun1() {

//静态方法中不能访问非静态变量,因为加载类 的时候还哦没有对象
//简单记 静态只能使用静态的
// System.out.println(this.num1);
System.out.println(Man.num2);
Man.sayHi();
}

}
“`静态变量的加载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值