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”);
}
}
}