------- android培训、java培训、期待与您交流! ----------
一.构造方法:
1.当实例化一个类的对象时,JVM会自动调用本类的一个方法:构造方法;
2.定义类时,可以不定义构造方法,编译器会自动添加一个无参,什么都不做的构造方法;
3.如果类中定义了构造方法,编译器就不会添加任何构造方法了;
4.构造方法的格式要求:
1).构造方法名必须与类名一致;
2).构造方法不能定义“返回值类型”,甚至是void;
3).构造方法不能返回一个具体的值,但内部可以使用return;语句;
注意:
1).以下代码可以编译通过:
class Student(){
public void Student(){ //普通成员方法,不是构造方法;
}
}
2).以下代码不能通过编译:
class Student(){
public student(){ //构造方法必须同类名一致,包括大小写;
}
}
5.一个类中可以定义多个“构造方法”,但每个构造方法的形参列表不能完全相同,叫:构造方法的重载;
例如:
</pre><pre class="java" name="code">class Student
{
private String name;
private int age;
//可以编译通过,此方法,被当成是"普通成员方法"
void Student(){
System.out.println("我只是个普通成员方法");
}
//此方法,才是构造方法;
Student(){
System.out.println("Student类的无参构造方法......");
}
Student(String n){
name = n;//作用:相当于setName()方法
System.out.println("Student类的String的构造方法......");
}
Student(int n){
age = n;//作用:相当于setAge()方法
System.out.println("Student类的int的构造方法......");
}
Student(String name,int age){
this.name = name;
this.age = age;
}
//一些get和set方法;
void setName(String name){
this.name = name;
}
String getName(){
return this.name;
}
void setAge(int age){
this.age = age;
}
int getAge(){
return this.age;
}
}
class Demo
{
public static void main(String[] args)
{
Student stu = new Student();//调用无参的构造方法
stu.setName("张学友");
stu.setAge(22);
Student stu2 = new Student("张三");//调用String的构造方法
Student stu3 = new Student(20);//调用int的构造方法
Student stu4 = new Student("刘德华",20);
System.out.println(stu4.getName() + "----" + stu4.getAge());
}
}
6.在一个构造方法中可以调用另一个构造方法,使用this关键字;
7.构造方法可以调用“成员方法”,但“成员方法”不能调用构造方法;
构造方法也可以调用其它构造方法;
二.static关键字:
1.static关键字:静态的,全局的。
2.可以修饰“成员变量”和“成员方法”。被static修饰的成员变量存储在方法区的“静态存储区”,只有
一份拷贝,被多个对象共享
3.特点:
1).随着类的加载而加载
2).优先于对象存在
3).被类的所有对象共享
4).可以通过类名调用,也可以通过对象名调用;
如:
class Const
{
static double PI = 3.14159;
static String schoolName = "黑马程序员-北京校区";
}
class Demo
{
public static void main(String[] args)
{
//用PI值,只需要通过类名就可以直接使用了
System.out.println("获取PI值:" + Const.PI);
}
}
4.static关键字注意事项:
1).在静态方法中是没有this关键字的
2).静态方法只能访问静态的成员变量和静态的成员方法
三.静态变量和成员变量的区别:
1.所属不同
1).静态变量属于类,所以也称为为类变量
2).成员变量属于对象,所以也称为实例变量(对象变量)
2.内存中位置不同
1).静态变量存储于方法区的静态区
2).成员变量存储于堆内存
3.内存出现时间不同
1).静态变量随着类的加载而加载,随着类的消失而消失
2).成员变量随着对象的创建而存在,随着对象的消失而消失
4.调用不同
1).静态变量可以通过类名调用,也可以通过对象调用
2).成员变量只能通过对象名调用