Java笔记:变量、构造器

原帖地址:http://www.cnblogs.com/EvanLiu/archive/2013/06/07/3123194.html

本篇笔记主要是成员变量、局部变量、构造器


1.成员变量和局部变量


1)成员变量:类范围内定义的变量


成员变量有(1)类Field(有static修饰的),从这个类的准备阶段开始存在到这个类被完全销毁
            访问方式:类.类Field    或    实例.类Field
         (2)实例Filed(没有static修饰的),从这个类的实例被创建开始存在,到这个实例被完全销毁
            访问方式实例.实例Field


如果通过实例.类Field的方式来修改类Field的值,那么其它实例来访问这个类Field时也将获得这个被修改过的值。


eg:



package cn.it.lsl;
class Person{
public String name;
public static int age;
}
public class PersonTest {
public static void main(String[] args) {
System.out.println(Person.age);
//类.类Field
Person p = new Person();
System.out.println(p.age);
//实例.类Field
p.name = "张三";
p.age
= 15;
System.out.println(p.name
+ "," + p.age);
System.out.println(Person.age);
//同一个类中的实例访问类Field的时候,实际上访问的是该类的同一个Field,即用一块内存区
Person p2 = new Person();
System.out.println(p2.age);
}
}


2)局部变量:方法里定义的变量


局部变量可以分为:形参,方法局部变量,代码块局部变量


在局部变量中,除了形参外,必须给方法布局变量和代码块局部变量指定初始化参数。


在方法里面,局部变量和成员变量可以同名,这样会导致局部变量覆盖成员变量,如果需要在方法里面调用被覆盖的成员变量,则可以使用this(实例Field)或类名(类Field)来作为调用者。


eg:



package cn.it.lsl;

public class Variable {
private String name = "zhangsan";
private static int age = 15;
public static void main(String[] args) {
// TODO Auto-generated method stub
int age = 16;
System.out.println(age);
System.out.println(Variable.age);
}
}


3)成员变量内存图



4)局部变量定义后,系统并未为这个变量分配内存块,直到等到程序为这个变量赋值的时候,系统才为局部变量分配内存空间。因为局部变量不属于任何类或者实例,所以它是被保存在方法的栈内存中的。


2.构造器


1)构造器用于在创建对象的时候进行初始化。如果程序中没有显示的提供任何构造器,那么系统会为该类提供一个默认的无参构造。


2)当程序中显示的提供了自定义的构造器了,那么系统就不会提供默认的构造器了。构造器可以重载,一个类中,有多个构造器,构造器的参数列表不同,就是构造器的重载。


3)如系统中有多个构造器,系统通过new关键字调用构造器时,系统将根据传入的实参列表来决定调用哪个构造器。


4)如果一个构造器执行体完全包含了另一个构造器执行体,可以通过this来调用相应的构造器。


使用this调用另一个构造器只能在构造器中使用,而且必须在构造器内第一条语句。系统会根据this后面参数列表来调用对应构造器。



package cn.it.lsl;

public class Constructor {
public String name;
public int age;
public String school;

public Constructor(){

}

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

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

public static void main(String[] args){
Constructor c
= new Constructor("zhasngan",15);
System.out.println(c.name);
System.out.println(c.age);
Constructor c1
= new Constructor();
System.out.println(c1.name);
System.out.println(c1.age);
Constructor c2
= new Constructor("zhasngan",15,"fj");
System.out.println(c2.name);
System.out.println(c2.age);
System.out.println(c2.school);
}
}


 

本文链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值