7. JavaSE-构造函数 & this & static关键字

构造函数:

1. 函数名和类名相同,不用定义返回值类型、没有具体的返回值

2. 其实就是在创建对象时调用的函数,创建对象都必须经过构造函数初始化

3. 当使用自定义构造函数的时候,必须在写一个默认的构造函数

构造函数和普通函数区别:

1. 构造函数是在对象创建时进行调用,对对象进行初始化

2. 普通函数是在对象创建后,需要该函数时才进行调用

3. 构造函数仅在对象创建时调用一次

4. 普通函数可以重复的调用

5. 构造函数可以调用普通函数,而普通函数不能调用构造函数

6. 构造函数可以写return, 但是注意不要写return value;

什么时候使用构造函数:

在描述事物时,该事物一存在就具备了一些内容,这些内容都定义在构造函数中

构造函数重载:

和普通函数重载同,即函数的参数个数或者类型不同,函数名完全相同

重写:

函数名和参数个数及类型完全相同,具体实现内容不同

this关键字:

1. 当成员变量和局部变量重名,可以使用this关键字来区分

2. 本质上:this就代表对象(当前对象),即this就是所在函数所属对象的引用

简单而言,就是哪个对象调用this所在的函数,this就代表哪个对象

3. this关键字也用于在构造函数中调用其他的构造函数

注意:只能定义在构造函数的第一行,因为初始化动作要先执行

Static关键字:

1. 数据被static修饰之后,数据将保存在堆内存中。

2. 在类中,所有对象共享的数据,一般初始化为静态数据

3. 静态数据在对象实例化之前就已经初始化在堆内存里面了。即随着类的加载而初始化

4. Static修饰的成员被所有对象共享

5. Static优先于对象存在,因为static的成员随着类的加载就已经存在了

6. Static修饰的成员可以被对象调用,也可以被类名直接调用(类名.静态成员)

7. Static修饰的数据是共享数据,对象中存储的是特有数据

成员变量&实例变量&静态变量:

1. 成员变量也叫做实例变量;静态变量也叫做类变量

2. 成员变量随着对象的存在而存在,随着对象的消亡而消亡;

3. 静态变量随着类的加载而存在,随着类的消失而消失

4. 成员变量只能被对象调用,静态变量既可以被对象调用也可以被类调用(强烈不推荐

使用对象调用,因为静态成员先于对象存在)

5. 成员变量数据存储在堆内存的对象中,因此也叫做对象的特有数据

6. 静态变量数据存储在共享数据区,所以也叫对象的共享数据。

内存分类:本地方法区、寄存器、共享数据区(方法区)、堆、栈

静态方法只能访问静态成员(成员变量和成员方法),非静态方法既可以访问静态成员也能访问非静态

静态方法中不可以使用this或者super关键字,因为静态方法是由类名调用的,不依赖于对象,因此不能使用this,而构造方法是非静态的,因此不能使用super关键字

主函数:

1. 主函数是静态的

2. 主函数特殊之处:格式固定、被jvm虚拟机所识别和调用

3. 主函数是public,权限必须是最大的

4. 主函数必须是static,因为主函数不需要由对象来调用

4. 主函数必须是void,没有具体的返回值

5. Main:函数名,不是关键字,只是一个jvm识别的固定的名字

6. String[] args:args是主函数的参数列表,是一个数组类型的参数,而且元素都是字符串类型。

什么时候使用static修饰符?

1. 静态变量:当分析对象中所具备的值都是相同的,则这个成员就可以被静态修饰。只要数据在

对象中是不同的,就是对象的特有数据,必须存储在对象中,是非静态的;如果是相同的数据,

对象不需要修改,只需要使用即可,不需要存储在对象中,定义成静态的。

2. 静态函数:函数是否用静态修饰,只参考一点,该函数功能是否有访问到对象的特有数据。简

单点说,从源代码看,该功能是否需要访问非静态成员,如果需要,该功能就是非静态的;如

果不需要,就可以将该功能定义成静态的,当然,也可以定义成非静态,但是非静态需要被对

象调用,而仅创建对象访问非静态方法没有访问特有数据的方法,该对象的创建时没有意义的。

静态代码块:

1. 随着类的加载而执行,而且只执行一次(注意:类只加载一次,即使执行两次创建对象,也不会

执行两次,因为只加载一次)

2. 作用:用于给类进行初始化

3. 例如

class StaticCode

{

static int age = 0;

static {

age = age + 20;

}

static void show()

{

System.out.println(age);

}

}

class StaticCodeDemo

{

public static void main(String[] args)

{

StaticCode.show();

}

}

静态代码块使用比较少,一般在类中全是静态成员的时候可能会需要静态代码块。

构造代码块:

1. 定义在类中没有被static修饰的代码块,即为构造代码块

2. 与静态代码块不同,构造代码块可以给所有对象进行初始化,每次创建对象都会执行,在调用构造方法之前执行;注意与构造方法的差别,构造方法是用来给对应的对象进行针对性的初始化。

局部代码块:

1. 定义在方法中

2. 用于限定局部变量的生命周期

7. JavaSE-构造函数 & this & static关键字

时间: 2024-11-07 20:52:05

7. JavaSE-构造函数 & this & static关键字的相关文章

PHP延迟静态绑定:static关键字

PHP5.3中引入了延迟静态绑定的概念.该特性最明显的标志就是新关键字static.static类似于self,但它指的是被调用的类而不是包含类.在本例中,它的意思是调用Document::create()将生成一个新的Document对象,而不是试图实例化一个DomainObject对象. 因此,现在在静态上下文中使用继承关系. abstract class DomainObject{ public static function create(){ return new static();

[javase学习笔记]-7.12 static关键字的使用场景

这一节我们来看一下在我们开发的过程中,在什么时候我们要用到static关键字进行静态修饰. 我们这里所说的静态,无非就是两种,一种是静态变量,一种是静态函数,我们分这两种情况进行说明static关键字的使用场合. 一.静态变量 我们在7.8节中对static关键字特点和7.9节中成员变量与静态变量区别进行学习的时候就已经很明确的指出了静态变量是共享数据,而对象中封装的特有数据. 因此我们可以这样解释:当分析对象中所具备成员变量的值是相同的,且不需要对象做修改,这时这个成员变量就可以被static

(转)Java中的static关键字解析

转载: http://www.cnblogs.com/dolphin0520/p/3799052.html 一.static关键字的用途 在<Java编程思想>P86页有这样一段话: "static方法就是没有this的方法.在static方法内部不能调用非静态方法,反过来是可以的.而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法.这实际上正是static方法的主要用途." 这段话虽然只是说明了static方法的特殊之处,但是可以看出static关键

Java基础-学习笔记(九)——static关键字

1.静态成员变量 程序中的类,只是在描述其对象的属性和成员,并没有产生实际对象,只有通过new关键字才能产生出对象,这时系统才会分配内存空间给对象,其方法才能供外部调用. 每生成一个对象,都会在内存中给它分配一个单独的空间,有时候我们希望无论产生多少对象,某些某些特定的数据在内存空间里只有一份,我们只需要在这种数据面前加上statice关键字即可.静态变量在某种程度下与其他语言中的全局变量比较类似.并且,我们可以不需要产生实例对象,直接使用类名来调用,如下代码所示 1 class Chinese

关于java的static关键字

通常来说,当你创建类时,就是在描述那个类的对象的外观与行为.除非你用new创建那个类的对象,否则,你实际上并未获得任何东西.当你用new来创建对象时,数据存储空间才被分配,其方法才供外界调用. 但是有两种情形,用上述方法是无法解决的.一种情形是,你只需要为某特定数据分配一份存储空间,而不去考虑究竟要创建对少个对象,还是甚至根本就不需要创建任何对象.另一种情形是,你希望某个方法不与包含它的类的任何对象关联在一起.也就是说,即使没有创建对象,也能够调用这个方法. 通过static关键字,可以满足这两

关于 Java 中的 static 关键字

Java中的 static 关键字,确实是一个关键的字(key word),今天就来总结一下它的用法,说说为什么关键. Java中的 static 关键字主要是用来做内存管理的.理解了这句话才能够比较深入地理解static. static 可以修饰: 变量(所谓 class variable) 方法(所谓 class method) 代码块(所谓 block) 内部类(所谓 nested class) 凡是被 static 修饰的这四种元素,都属于class的元素,即类的,而不是类的实例的. 1

static关键字与方法区和类加载

1.static的作用 答:将成员变量或方法存储进方法区.因为方法区能保证数据只存在一份,只会加载一次(类加载器加载类的时候才加载一次) 注:static Object obj = new Object();方法区存储的是obj这个引用变量,而不是Obejct这个被创建的对象,对象依旧存储在堆中.只不过由于statcic 引用变量一直存在,导致堆中这个对象一直没法被回收. 注:一定要区分什么叫变量!什么叫对象!方法区明文说的是:存储静态变量和静态方法.是变量,即引用变量,不是对象. java中对

static关键字(二)

上一篇static关键字,自认为比较详细了.不懂的可以留言.下面接着讲: 静态最终成员变量: 就是同时被final和static修饰的类的成员变量.其跟仅用final修饰的成员变量类似.除了可以在定义或者说在首次声明的时初始化,只能在静态块中初始化.(大家注意我用绿色标记出来的一句话) 那我们比较学习一下下面的两种情况,大家记忆好: 1:只有final修饰的成员变量的初始化问题 (1)首次定义要被final修饰的的变量的时候,就初始化: (2)若首次定义final修饰的成员变量的时候,没有初始化

【C#基础】static 关键字用法小结

静态变量 当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用. 有时候,我们希望无论是否产生了对象或无论产生了多少对象的情况下,某些特定的数据在内存空间里只有一份,例如所有的中国人都有国家名称,每一个中国人都共享这个国家名称,不必在每一个中国人的实例对象中都单独分配一个用于代码国家名称的变量.例子: protected void Page_Load(object sender,

static关键字用法

java中static关键字可用于修饰: 1.属性:表示该属性变量在类被加载时即被创建并初始化,类加载过程只进行一次,因此静态变量也只被创建一次 2.方法:静态方法为类的公有方法,可直接用‘类名.方法名'访问,静态方法不可访问本类中的非静态成员,子类不可 将父类的静态方法覆盖为非静态的,反之亦然.此外,静态方法中不能使用this关键字 3.代码块:静态初始化代码块,在类被加载时执行一次,可用于类的初始化 具体实例: 1)下面的例子中,静态变量staticVar,只在类第一次加载时被创建并初始化,