JAVA 构造方法 静态方法

347 阅读3分钟
原文链接: www.shsxt.com

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

注意事项: 
1.没写构造方法 
系统则会提供一个无参的构造方法 
2.写了有参的构造方法 
系统不会提供无参的构造方法 
所以在 写有参的构造方法时 最好把无参的也写上

Car c1 = new Car("奥迪",4);修改这个代码属性是不能在下一行直接写上c1 = new Car("奔驰",4);这个代码的 这样无异于谋杀上一行代码 并且浪费内存空间 
我们可以这样c1.name = "奔驰"; 
c1.num = 4;通过赋值的操作来解决 
这样修改 相对于上面的方法 更加灵活 更加节省空间 
我们创建一个圆形的类 并且计算它的周长 和面积

class Circular{
     private int radius;   //半径
}
public Circular(int radius){
    this.radius = radius;
}
public int getRadius(){
    return this.radius;
}
public int setRadius(){
    return this.radius;
}
public double getLength(){
    return this.2 * π * radius;
}
public double getArea(){
    return (this.π*radius)^2;
}

可以看到这里我在半径int radius的前面加上了private 
private其实就是把构造方法私有化 
也可以看到在Radius前面加上了getset 
get其实是获取的意思 
set是修改

静态变量 
静态变量的调用: 
1:静态对象时刻使用对象去调用的(不推荐) 
2:用类名去调用

public static void main(String[] args) {
        Star g1 = new Star();
        g1.name = "张国荣";
        g1.country = "中国";
        g1.sayHi();

        Star g2 = new Star();
        g2.name = "成龙";
        g2.country = "中国";
        g2.sayHi();
    }
}

class Star{
    String name;      //姓名
    String country;   //国籍

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

用一张图片具体表达一下 
这里写图片描述
内存表现步骤 
1.类加载到方法区 
2.加载到方法区的同时 静态变量被加载到方法区的静态区 
3.main入栈 
4.在堆内存中创建 对象 
5.把地址赋值给main函数的 对象保存 
6.main函数出栈 
7.程序结束

静态变量与成员变量的区别: 
1.所属不同: 
成员变量: 属于对象的 又叫对象变量(实例变量) 
静态变量:属于类 又叫类变量

2.内存中的存储位置: 
成员变量: 存储在堆内存 
静态变量: 存处在方法区的静态区

3.加载到内存中的时机(生命周期的不同): 
成员变量: 随着对象的创建而创建 
静态变量: 随着类的加载而存在

4.调用方法不同 
成员变量: 只能使用对象去调用 
静态变量: 可以用对象去调用 一般用类名去调用

静态方法 
静态方法也叫类方法

在成员方法中 可以使用 成员变量和静态变量 
静态成员方法中 不能使用成员变量 只能使用静态变量 
简单点就是静态方法只能用静态变量

有关java静态代码块和构造方法相关文章可以阅读上海尚学堂《判断java静态代码块和构造方法的执行顺序