JavaSE-构造方法,static关键字,创建对象

构造方法

作用:创建对象,给对象中的成员进行初始化

特点:

(1)方法名与类名相同

(2)没有返回值类型,没有void

(3)没有具体的返回值

面向对象

举例

class Demo {
static int i=1, j=2;
static {
display(i); **//**在类加载进内存时就会执行
}
public static void main(String[] args) {
display(j);
}
public static void display(int n) {
System.out.println(n);
}
}

通过调用display()完成

创建一个对象的步骤

Student s = new Student();

(1):加载Student.class文件进内存
(2):在栈内存为s开辟空间
(3):在堆内存为学生对象开辟空间
(4):对学生对象的成员变量进行默认初始化
(5):对学生对象的成员变量进行显示初始化
(6):通过构造方法对学生对象的成员变量赋值
(7):学生对象初始化完毕,把对象地址赋值给s变量

static关键字

特点:

(1)随着类的加载而加载

(2)优先于对象而存在

(3)被类的所有对象共享

关于static,其实就是说明了类的权限,如果某个成员变量是被所有对象共享的,那么他就应该被定义为静态的

静态修饰的内容一般我们称其为:与类相关的,类成员。

注意事项:

在静态方法中没有this关键字,因为静态是随着类的加载而加载,this是随着对象的创建而存在,静态比对象先存在。

静态方法只能访问静态的成员变量和成员方法。

总结:静态只能访问静态,非静态都可以访问。

静态变量和成员变量的区别

A:所属不同
静态变量属于类,所以也称为类变量
成员变量属于对象,所以也称为实例变量(对象变量)
B:内存中位置不同
静态变量存储于方法区的静态区
成员变量存储于堆内存
C:内存出现时间不同
静态变量随着类的加载而加载,随着类的消失而消失
成员变量随着对象的创建而存在,随着对象的消失而消失
D:调用不同
静态变量可以通过类名调用,也可以通过对象调用
成员变量只能通过对象名调用

随机数举例

import java.util.Scanner;
public class GuessNumberGame {
 public static void main(String[] args) {
 int num = (int) (Math.random() * 100 + 1);
 Scanner scanner = new Scanner(System.in);
 System.out.println(“游戏开始,你一共有5次机会\n请在1—100之间(包括1和100)猜一个数:”);
 int frequency=5;
 int x=-1;
 for (int i = 1; i <=frequency; i++) {
 int n = scanner.nextInt();
 if (n > num) {
 System.out.println(“猜大了”);
 } else if (n < num) {
 System.out.println(“猜小了”);
 } else {
 System.out.println(“恭喜你猜对了!”);
 x=1;
 break;
 }
 if (i < frequency) {
 System.out.println(“你还有” + (frequency - i) + “次机会!\n请再猜一个数:”);
 }
 }
 if(x!=1){
 System.out.println(“Game Over”);
 }
 }
 }