`

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


 

本文链接

分享到:
评论

相关推荐

    Java变量笔记

    - **局部变量**:在方法、构造器或块中定义的变量。 - **实例变量**:在类体中声明但位于任何方法之外的变量。 - **类变量(静态变量)**:用 `static` 关键字修饰的变量。 - **参数**:传递给方法或构造器的值。 #...

    java笔记 java笔记

    - **局部变量**:在方法、构造函数或块内声明的变量。 - **成员变量**:在类体中声明的变量。 ##### 4.2 操作符 Java支持多种操作符,包括算术操作符、比较操作符、逻辑操作符等。 ##### 4.3 数字类型之间的转换 ...

    尚硅谷JAVA基础笔记吐血整理

    “尚硅谷JAVA基础笔记”涵盖了Java语言的基础知识,包括语言概述、基本语法、面向对象概念、封装、继承和多态,以及一些关键概念如形参与实参、属性与局部变量、构造器、this关键字、包和MVC设计模式的使用。...

    java读书笔记笔记笔记笔记笔记笔记

    "this"关键字在Java中用于引用当前对象,常用于构造器链、避免成员变量和局部变量的混淆,以及在匿名内部类中引用外部类的成员。这个PPT文件可能详细解释了this关键字的用法和应用场景。 3. **Execution_files** - ...

    java笔记整理(超详细) java笔记整理(超详细)

    - 构造器用于初始化新创建的对象,不能被重写(override),但可以重载(overload)。 - 私有的构造器可以防止其他类实例化,通常在单例模式中使用。 6. **重载和重写**: - 重载发生在同一类中,方法名相同,但...

    java全套笔记 来自狂神说java笔录.zip

    【Java笔记内容概览】 1. **基础语法**:涵盖变量、数据类型、运算符、流程控制(条件语句、循环语句)、数组、字符串等基础知识。 2. **面向对象**:讲解类、对象、封装、继承、多态等核心概念,以及构造函数、...

    达内java课程笔记

    4. 构造器和实例化过程:讨论了继承中构造器的使用和对象实例化的步骤。 5. 访问控制修饰符:讲解了Java中不同访问修饰符的作用范围。 **Java高级特性** 1. JavaBean:介绍了JavaBean的概念及其使用场景。 2. ...

    Java变量(学习笔记).pdf

    - 局部变量:存在于方法、构造器或块中,生命周期仅限于该方法、构造器或块的执行期间。局部变量必须在使用前初始化。 7. Java的命名规范: - 包名:所有字母小写,如`xxxyyyzzz`。 - 类名和接口名:每个单词首...

    小码哥-任小龙Java笔记-面向对象的全部笔记

    ### 小码哥-任小龙Java笔记-面向对象的核心知识点 #### 一、面向对象基础概念 **1. 成员变量** - **定义位置**:成员变量定义在类中但不在任何方法内,分为类成员变量(使用`static`修饰)和实例成员变量(不使用...

    韩顺平java笔记完整版

    韩顺平老师的Java笔记完整版应该涵盖了Java的基本概念、语法和核心特性。 1. **Java环境搭建**:学习Java首先需要安装Java Development Kit (JDK),配置好环境变量,包括JAVA_HOME、PATH和CLASSPATH,以便在命令行...

    个人java笔记

    这份“个人java笔记”可能是某位开发者在学习或实践中积累的知识结晶,旨在帮助读者理解和掌握Java编程的基础及进阶概念。 Java的核心特性包括: 1. **面向对象**:Java基于面向对象编程(OOP)原则,支持类、接口...

    java笔记,上课笔记

    - 变量的初始化总是在构造函数之前完成。 6. **集合Collection**: - Collection是Java集合框架的顶级接口,代表了一组独立的对象。 7. **迭代器Iterator**: - 迭代器是访问集合元素的标准方式,提供了`...

    Java 入门word笔记

    6. 构造器:构造器是特殊的方法,用于初始化新创建的对象。 7. 继承与多态:继承允许一个类(子类)继承另一个类(父类)的属性和方法。多态是对象的多种形态,允许子类对象替代父类对象。 8. 包(Package):包是...

    java.rar黑马java基础笔记

    - **Class类**:通过Class对象获取类的信息,如构造器、方法和字段。 - **动态调用方法**:在运行时动态地创建对象并调用其方法。 - **泛型擦除与反射**:理解泛型在编译后的表示及其与反射的关系。 6. **正则...

    JAVA笔记总结

    1. **设置Java环境变量**:为了运行Java程序,需要在计算机的系统环境变量中配置`JAVA_HOME`和`PATH`。`JAVA_HOME`应指向Java的安装目录,`PATH`应包含`JAVA_HOME/bin`,这样系统就能找到Java可执行文件。 2. **...

    java笔记(细节问题讲的很细)

    对象则是类的实例,通过构造器创建。 二、面向对象特性 1. 封装:隐藏内部实现细节,通过公共接口对外提供服务,提高代码安全性。 2. 继承:子类继承父类的属性和方法,实现代码复用,扩展新的功能。 3. 多态:...

    java笔记绝对干货

    以上内容是Java笔记中的核心部分,涵盖了从基础知识到进阶技术的多个层面。通过系统学习和实践,可以帮助开发者扎实地掌握Java编程,并具备解决实际问题的能力。在不断更新的技术环境中,Java依然保持着旺盛的生命力...

    java笔记整理(超详细).pdf

    Java笔记整理(超详细) Java语言有哪些特点: 1. 简单易学 2. 面向对象(封装,继承,多态) 3. 平台无关性(Java虚拟机实现平台无关性) 4. 可靠性 5. 安全性 6. 支持多线程 7. 支持网络编程并且很方便 8. 编译...

    李兴华java word版全部笔记

    2. **类与对象**:深入讲解类的构造器、访问修饰符、抽象类和接口、内部类以及如何创建和使用对象。可能还包括异常处理机制,这是编写健壮代码的关键。 3. **集合框架**:Java集合框架是处理对象集合的重要工具,...

Global site tag (gtag.js) - Google Analytics