1、this关键字

this:代表当前对象,就是代表所在函数所属类的引用。哪个对象调用了this所在的函数,this就代表哪个对象。

this关键字也可以用于在构造函数中调用其他构造函数,此时要注意,this();要定义在函数的第一行,因为初始化动作要先执行。

class Person
{
private String name;
private int age;
Person()
{
name = "baby";
age = 1;
System.out.println("person run");
}
Person(String name)
{
this();
this.name = name;
}
Person(String name,int age)
{
this.name = name;
this.age = age;
}
public void speak()
{
System.out.println(this.name+":"+this.age);
}
}

在Person这个类的Person(String name)这个构造函数中,用this关键字进行了初始化,this();这条语句先调用Person();这个构造函数,执行完毕后再执行this();后面的语句。

2、static关键字

(1) static关键字的特点:

① static 是一个修饰符,用于修饰成员。

② static 所修饰的成员,被所有对象共享。

③ static 优先于对象存在,被static所修饰的成员随着类的加载就存在了。

④ static 所修饰的成员多了一种调用方式,不需要创建对象,可以直接用类名调用。类名.静态成员

⑤ static 所修饰的成员是共享数据,称作静态变量,对象中存储的是特有数据,称作成员变量。

(2) 静态变量和成员变量的区别

①生命周期不同,成员变量随着对象的创建而存在,随着对象的消失而消失。而静态变量随着类的加载而存在,优先于对象存在,随着类的消失而消失。

②调用方式不同,成员变量只能被对象调用,静态变量还能够被类名所调用。

③别名不同,静态变量又叫类变量,成员变量又叫实例变量。

④数据存储位置不同,静态变量存储在内存的方法区(也叫共享数据区)的静态区内,成员变量存储在堆内存的对象中。

(3) 静态使用注意事项

①静态方法只能访问静态成员,非静态方法既可以访问静态成员也可以访问非静态成员。

②静态方法中不能使用this和super关键字。

③主函数是静态的。

(4) 静态什么时候用?

①静态变量,分析对象,当多个对象中均存储这个变量,而且该变量无需改动,这时该变量可以被static所修饰。只要存储的数据值是不同的,就必须存储在对象中,是特有变量。如果存储的数据是相同的,则对象无需修改,直接使用即可,为静态变量。

②静态函数,函数是否用静态来修饰,只需参考一点,该函数是否访问了类中的特有变量,若访问了特有变量则函数是非静态的,若函数中只访问静态变量,该函数可以被静态修饰,也可不用静态修饰。但是若不用静态修饰,在调用时需要先创建对象,此对象的创建时无意义的。

(5) 静态代码块

被static所修饰的代码块称为静态代码块,随着类的加载而执行,只运行一次,可用于给类进行初始化。

关键字static和this的更多相关文章

  1. C++ 不能在类体外指定关键字static

    C++ static 函数的问题 近日读 C++ primer 中static 一章 , 有这么一句话, “静态成员函数的声明除了在类体中的函数声明前加上关键字static 以及不能声明为const  ...

  2. Java关键字--static

    在Java中,将关键字static分为三部分进行讨论,分别为Java静态变量.Java静态方法.Java静态类 Java Static Variables Java instance variable ...

  3. 关键字 static

    A. 面向过程: 1. 静态全局变量:在全局变量前,加上关键词static,该变量就被定义成为一个静态全局变量. 1.1. 特点: |该变量在全局数据区分配内存: |未经初始化的静态全局变量会被程序自 ...

  4. Java之关键字static和final的使用

    static 在Java中声明属性.方法时,可使用关键字static来修饰. 1.static变量       按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或 ...

  5. [JAVA关键字] static & final

    JAVA十分常见的关键字static & final 总的来说final表示常量,即不可更改的:而static表示静态,即全局的 1. final 类:不能被继承 2. final 方法:能被 ...

  6. JAVA基础知识(2)--关键字static的使用

    在Java类中声明属性.方法和内部类时,可使用关键字static作为修饰符,static标记的属性和方法可以由整个类进行共享,因此static修饰的属性称为类成员或者称为类方法:static修饰的方法 ...

  7. C语言关键字static的绝妙用途

    为什么要说static妙,它确实是妙,在软件开发或者单片机开发过程中,大家总以为static就是一个静态变量,在变量类型的前面加上就自动清0了,还有就是加上static关键字的,不管是变量还是关键字, ...

  8. C/C++中关键字static的用法及作用

    本文将主要从static在C和C++共有的作用及C++特有的作用两个方面进行解析. 在C和C++中共有的作用 隐藏(对变量.函数均可) 当同时编译多个文件时,所有未加static前缀的全局变量或全局函 ...

  9. Java开发笔记(五十五)关键字static的用法

    前面介绍嵌套类的时候讲到了关键字static,用static修饰类,该类就变成了嵌套类.从嵌套类的用法可知,其它地方访问嵌套类之时,无需动态创建外层类的实例,直接创建嵌套类的实例就行.其实static ...

  10. Java 关键字 static

    关键字static作用如下: 1. 为某个基本数据类型或对象分配单一的存储空间. 2. 实现某个属性或方法与类关联.在类被加载后类名可以直接调用静态成员方法(下面简称静态方法)或者访问静态成员变量(下 ...

随机推荐

  1. Linux type命令

    用途说明 type命令用来显示指定命令的类型.一个命令的类型可以是如下几种: alias 别名 keyword 关键字,Shell保留字 function 函数,Shell函数 builtin 内建命 ...

  2. 对hbase的学习

    HBase,是Hadoop DataBase. 面向列的分布式数据库, 思想来源于Google的BigTable思想,它的目标是在廉价硬件构成的集群上管理超大规模的稀疏表. Hbase的物理结构 HB ...

  3. SQL 变量

    1.变量可以暂时储存数据 --定义变量:  declare @xxx int --变量赋值:  set @xxx=1  select @xxx=3 --变量的使用:  print @xxx 2.--全 ...

  4. Node.js高级编程读书笔记Outline

    Motivation 世俗一把,看看前端的JavaScript究竟能做什么. 顺便检验一下自己的学习能力. Audience 想看偏后台的Java程序员关于前端JavaScript的认识的职业前端工程 ...

  5. 给table行换色

    <script language="javascript"> //假设Table的ID为angel $("#angel tr").click(fun ...

  6. AndroidStudio开发出现Warning:Gradle version 2.10 is required. Current version is 2.8. If u

    Warning:Gradle version 2.10 is required. Current version is 2.8. If using the gradle wrapper, try ed ...

  7. Event List

    Created by John Boteler on 2015.01.16 Go to start of metadata   About The current up-to-date list of ...

  8. EDIUS校正颜色轮的方法

    小伙伴平时肯定能在网络上看到各种各样的视频吧,它们有的搞笑,有的炫酷,有的教育......那么你们有没有想过做出带有自己创意的视频呢?其实这个愿望很容易实现的,学好一款视频编辑软件就可以了.今天小编就 ...

  9. testNG设置测试的执行顺序

    在java类中,设置Test的执行顺序可以使用priority,或者enabled等属性.但是在testng.xml中,需要设置它的 preserve-order="true" 另 ...

  10. MSSQL 生成拼音码

    MSSQL 生成拼音码 /*============================================================================== 名称:fn_G ...