当前位置: 代码迷 >> 综合 >> static和this关键字
  详细解决方案

static和this关键字

热度:61   发布时间:2023-09-05 18:31:01.0

讲之前给大家多讲下:java类中的构造方法
构造方法的结构:
[修饰符列表] 构造方法名 (形参){
构造方法体
}
2:对于构造方法来说,返回值类型不需要指定,并且也不能写void
只要写void,那么这个方法就成为普通方法了
3:构造方法的方法名必须和类名相同
4:构造方法的作用和调用
作用1:通过构造方法的调用,可以创建对象 作用2:创建对象的同时,初始化实例变量空间
调用:new 构造方法名 (实参列表)
8:调用执行结束有返回值吗?
都有返回值,就是其类本身 User u = new User() 返回了一个User类型的(对比:int i = 2),所以不需要写返回值
但是这个“return 值”这样的语句不用写,构造方法结束的时候自动返回值
9:当一个类中没有定义构造方法,系统会默认提供一个无参的构造方法
10:当一个类显示的将构造方法定义出来了,系统不会默认提供无参的构造方法

  • 在类加载的时候,只加载了代码片段,没来得及创建对象。所以实例变量并未初始化
  • 实例变量必须先有对象,才有实例变量
  • 实例变量默认值是在构造方法执行过程中完成的

this关键字

  • public class ThisTest {
    int num = 10;//实例变量
    public static void main(String[] args) {
    //System.out.println(num);意思:访问当前对象的num 程序出错,因为没有当前对象(this)
    //想访问num必须创建对象 引用.num来访问
    }
    }
    this关键字
    *this为一个引用,是一个变量,this变量保存的内存地址指向自身,this存储在jvm堆内存的java对象内部
    *有多少个对象就有多少个this,因为创建多少个对象就有多少不同的引用
    *this可以出现在“实例方法”中,this指向正在执行这个动作的对象(this)代表当前对象
    *this多数情况可以省略不写
    *this不能使用在带有static的方法中
    this可以用在哪里?
    *可以用在实例方法中,表示当前对象
    *可以使用在构造方法中,通过当前的构造方法来调用其它构造方法 形式:this(实参)

static关键字

什么时候成员变量声明为:实例变量呢?
–所有对象都有这个属性,且不同对象的属性具体值是不同的 例如:学生对象 属性:身高,体重等
*什么时候成员变量声明为:静态变量呢?
–所有对象都有这个属性,且所有对象的这个属性值是一样的
*静态变量在类加载时候初始化,内存在方法区中开辟。访问的时候不需要创建对象,直接使用:类名.变量名 来访问

–public class Chinese {
/*身份证 姓名 国籍
*实例变量 几个对象就有几个实例变量(每个人都有自己的身份证 姓名 国籍),分析这种方法的缺点
*/
String id;
String name;
/因为每个中国人的国籍都是中国 如果采用实例变量的话,每个对象都要创建中国这个属性(内存空间浪费)
没必要让每个对象都保留一份“国籍”内存
所以把国籍定义成:静态变量
/
static String country = “中国”;
//静态变量,静态变量在类加载时候初始化,不需要创建对象,内存就开辟了
*可以使用static关键字来定义:**************“静态代码块”
1:语法格式
static{
java语句;
}
2:静态代码块在类加载时执行,并且只执行一次
3:静态代码块在一个类中可以存在多个,并且遵循自上而下的顺序执行
4:作用
–和具体需求有关 例如:要求在类加载时刻执行代码,完成日志记录
–静态代码块是java为程序员准备的一个特殊的时刻,这个时刻被称为:类加载时刻。若
在此希望执行一段特殊的程序,可以放到静态代码块中。
5:通常在静态代码块当中完成预备工作 例如:初始化连接池,解析XML配置文件

  相关解决方案