对象创建的步骤,内存图,已及构造方法

对象创建的步骤

假设创建了一个手机类phone的对象,那么它经历了那些步骤呢?如下所示:
phone t=new phone();
1.加载phone.class文件进入内存;
2.在栈内存为t开辟空间;
3.在堆内存为手机对象开辟空间;
4.对手机对象的成员变量进行默认初始化;
5.对手机对象的成员变量进行显示初始化;
6.通过构造方法对手机对象的成员变量赋值;
7.手机对象初始化完毕,把对象地址赋值给t变量
内存图如下:
对象创建的步骤,内存图,已及构造方法

构造方法

含义:
一个与类同名的方法,对象的创建通过构造方法来完成,给对象中的成员进行初始化,每当类实例化一个对象时,类都会自动调用构造方法。
特点:
1.没有返回值,以及返回值类型(void都没有);
2.构造方法的名称要与本类的名称相同;
3.构造方法中可以为成员变量赋值
4.类中没有明确定义构造方法,编译器会自动创建一个无参默认构造方法;
5.类中定义了构造方法,系统将不会自动创建默认无参构造方法,如想使用,则需自己给出

代码示例:

package com.lian7.cn;

public class student {
    String name;
    int age;

    public student() {
    }

    public student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void write(){

        System.out.println("写作业");
    }
}

class test{
    public static void main(String[] args) {
        student t=new student("小明",13);
        System.out.println(t.getName());
        System.out.println(t.getAge()+"岁");
        t.write();
        System.out.println("----------------");
        student t1=new student();
        t1.name="小花";
        t1.age=9;
        System.out.println(t1.name);
        System.out.println(t1.age+"岁");
        t1.write();
    }
}


static关键字

特点:
1.随着类的加载而加载;
2.优先于对象存在;
3.被类的所有对象共享;
4.可以通过类名调用,也可以通过 对象来调用;
5.静态方法中没有this关键字,this随着对象的创建而存在,静态先于对象出现;
6.静态只能访问静态
静态变量与成员变量的区别
静态变量:
1.属于类,又叫类变量;
2.存储于方法区的静态区;
3.随着类的加载而加载;
4.即可以通过类名调用,也可以通过对象来调用;
成员变量:
1.属于对象,又叫实例变量;
2.存储于堆内存;
3.随着对象的创建而存在,随着对象的消失而消失;
4.只能通过对象名来调用

Math类的随机数

特点:
1.Math类在java.lang包下;
2.没有构造方法,它的成员都是静态的;
3.获取随机数的方法:public static double random();

代码示例:
猜数小游戏(数据范围自己随意设置)

package com.lian7.cn;

import java.util.Scanner;

public class cai {
    public static void main(String[] args) {

        Scanner sc=new Scanner(System.in);

        System.out.println("请输入数据范围:");
        int aa=sc.nextInt();

        int num=(int)(Math.random()*aa+1);
        System.out.println("请输入数字");
      
        for (int i = 1; i <=10; i++) {
            int userNum=sc.nextInt();
            int a=10-i;
            if(userNum>num){
                System.out.println("猜大了,您还剩"+a+"次机会");
            }else if (userNum<num){
                System.out.println("猜小了,您还剩"+a+"次机会");

            }else if (userNum==num){
                System.out.println("恭喜您,猜对了");
                break;
            }

        }

    }

}