一、封装相关的问题
1、构造方法
构造方法的作用:给数据(成员变量)进行初始化值。
构造方法的特点:
1、没有具体的返回值类型,连void也没有
2、和该实体类名相同
3、没有具体的返回值,return;
4、该类创建对象,不能用该类的引用去直接调用构造方法
Student s = new Student();
class Student{
private String name;
private int age;
public Student(){
name = "张三";
age = 23;
//return;
}
}
2、构造方法重载的问题
1、构造方法的重载
A:方法名相同(构造方法的方法名和类名一致)
B:和返回值无关,只和参数列表有关
2、构造方法的注意事项
A:如果你没有给出有参构造和无参构造,那么系统会自动给出一个无参构造
B:如果你创建类有参构造,而没有指定无参构造,系统不会再给出无参构造。
建议:当我们去创建构造方法的时候,要给出无参构造
3、
class Student{
private String name = "张三";
private int age = 23;
public Student(){
}
public Student(String name,int age){
this.name = name;
this.age = age;
}
}
4.构造方法和SetXxx方法赋值的两种区别
构造方法:用来初始化成员变量的
SetXxx:修改构造方法进行初始化的成员变量的值。
能用构造方法进行修改成员变量的值么?
不行。当我们去new对象的时候,其实是重写创建的一个新的对象。已经不是原来的那个对象了。
5、创建对象产生的步骤
A:实体类的字节码文件(Student.class),进方法区。
B:创建该类的一个引用
C:在堆的内存中开辟一个该实体类的空间,创建该实体类的对象
D:对该实体类进行一个默认初始化值
E:如果有显示初始化,做显示初始化(在成员变量进行直接赋值)
F:构造方法进栈,对成员变量,显示初始化(重新赋值)。
G:把地址值赋值给该类的应用
6、static 关键字
作用:是共享数据(变量,方法)。
当字节码文件加载到方法区中,分为两部分:静态区和非静态区。
静态区存储的都是带static,非静态区存储的都是不带static。
7、static 关键字的特点
1、可以被共享
2、随着类的加载而加载
3、优先于对象存在
4、可以通过类名.调用。也可以通过对象名.调用。但是如果是静态一般都用类名.调用。
8、static的注意事项
* a:在静态方法中是没有this关键字的
* 如何理解呢?
* 静态是随着类的加载而加载,this是随着对象的创建而存在。
* 静态比对象先存在。
* b:静态方法只能访问静态的成员变量和静态的成员方法
* 静态方法:
* 成员变量:只能访问静态变量
* 成员方法:只能访问静态成员方法
* 非静态方法:
* 成员变量:可以是静态的,也可以是非静态的
* 成员方法:可是是静态的成员方法,也可以是非静态的成员方法。
9、静态变量和成员变量的区别
A:所属位置
静态变量:类的
成员变量:对象
B:内存位置不同
静态变量:方法区中静态区
成员变量:堆内存中
C:生命周期不同
静态变量:随着类的加载而加载,随着类的消失而消失
成员变量:随着对象的创建而产生,随着对象的消失而消失
D:调用不同
静态变量:类名.调用
成员变量:对象名.调用
10、工具类
1、如果让我们自己去写工具类,我们该工具类中的所有方法都是静态的。
2、如果一个类中的所有的方法都是静态,那么我们要去私有构造方法。
为什么要去私有构造方法?
防止其他类创建该工具类对象。
11、Math类
1、如何获取1-100之间的随机数
(int)(Math.random() * 100) + 1 //0.0 - 1.0 //random()它是Math类中的一个方法,使用获取随机数
2、以后如果学到获取范围的,一般都是:包头不包尾
|
|