Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Java系列:关于关键字this和static

Java系列:关于关键字this和static

作者头像
小Bob来啦
发布于 2022-01-17 12:36:16
发布于 2022-01-17 12:36:16
21900
代码可运行
举报
运行总次数:0
代码可运行

在C语言中,我们经常会遇到指针,也常常被指针所困扰,毕竟它经常惹程序员头疼。那么在Java中我们便方便多了,只是因为有了this.

那么this到底能给我们带来多大的便利呢?接下来让我们一起康康。

static作为静态的单词,在Java中又有着怎样的妙用呢?

这里主要给大家讲解this的调用方法和注意事项以及static的妙用。

一、This调用方法

关于this,首先它是一个关键字,是不能当作变量名来使用的;在我们的使用过程中,this一般代表当前对象的一个引用,那么何为当前对象呢?当前变量指的是我们当前在调用的类中方法或属性的对象。

To:this.属性名表示访问本对象自己的属性;this.方法名表示调用当前对象自己的方法。

在上面我们也看到this的两种简单用法,即访问本类属性变量和调用本类方法。

1.访问本类属性

当对象的一个属性被方法或者构造器的参数屏蔽时,我们就会用到this.属性来进行调用。

实例如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package self6;

public class Person {
  String name;
  int age;

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

  public static void main(String[] args) {
    Person p1 = new Person("bob",1);
    Person p2 = new Person("xiaobob",11);
    System.out.println("输出name:"+p1.name+"和年龄"+p1.age);
    System.out.println("输出name:"+p2.name+"和年龄"+p2.age);
  }
}

运行结果如下:

2.调用本类方法

这里我们简单将调用构造函数和方法放在了一起,但是我们要知道的是构造函数并不是方法!

使用this关键字调用本类的构造函数需要注意的有:this关键字可以调用类的重载构造函数;this关键字必须位于构造函数的第一行。

调用构造函数实例如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package self6;

public class Person{
  String name;
  int age;

  public Person(int age){
    this.age=age;
  }
  public Person(String name){
    this(1);
    this.name=name;
  }
  public static void main(String[] args){
    Person p1 = new Person("bob");
    Person p2 = new Person("bob1");
    System.out.println("输出name:"+p1.name+"和年龄:"+p1.age);
    System.out.println("输出name:"+p2.name+"和年龄:"+p2.age);
  }
}

运行结果:

调用本类方法实例如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Student{
  public void eat(){
    System.out.println("执行eat");
  }
  public void talk(){
    this.eat():
    System.out.println("执行talk");
  }
}

二、注意事项

  1. this关键字不能用于静态方法和静态块
  2. 我们知道main方法也是静态的,所以在main方法中是不能有this的

三、static关键字

按照字面意思,static是静态的意思,在Java中,我们最常用的便是用static修饰变量和方法,下面将会讲到与之相关的用法:

  1. 修饰变量也称为修饰静态变量
  2. 静态变量被所有的对象所共享,在内存中只有一个副本
  3. 当且仅当在类初次加载时会被初始化
  4. 静态变量属于类
  5. 通过类名就可以调用静态变量
  6. 也可以通过对象名.静态变量调用(建议使用)

说到静态变量,我们在Java中也会经常说到实例变量,那么它们又会有怎样的区别呢?

区别如下:

  • 静态变量属于类,该类不产生对象,通过类名就可以调用静态变量
  • 实例变量属于该类的对象,必须产生该类对象,才能调用实例变量
  • 静态变量随着类的加载存在于方法区中
  • 实例变量随着对象的建立存在于堆内存中
  • 静态变量在程序开始时创建,在程序结束时销毁
  • 实例变量在对象创建的时候创建,在对象被销毁的时候销毁

说完静态变量,这里我们来了解一下静态方法,我们将用static修饰的方法称之为静态方法,也叫类方法。在静态方法中我们是不能访问类的非静态成员变量和非静态的成员方法;而且在静态方法中是不能出现this关键字的;使用的两种方法:1.通过类名调用;2.通过对象名.静态方法调用。

静态块:

静态方法在类加载时执行,并且只执行一次;静态代码块在类中可以出现多个。

关于静态块、匿名构造函数和构造函数在Java中的执行顺序我们可以用程序来演示出来:‍

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package self7;

public class staticdend {
  int age;
  String name;
  
  public staticdend() {
    age=10;
    name="Bob";
    System.out.println("这是构造函数");
  }
  static {
    System.out.println("这是静态块");
  }
  {
    System.out.println("这是匿名构造函数");
  }
  public static class Test{
    public static void main(String[] args)
    {
      staticdend p1 = new staticdend();
      staticdend p2 = new staticdend();
      staticdend p3 = new staticdend();
      staticdend p4 = new staticdend();
    }
  }
}

运行结果:

继续干Java~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员Bob 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java:关于Static静态关键字的那些小事
前言 在Java中,静态 Static关键字使用十分常见 本文全面 & 详细解析静态 Static关键字,希望你们会喜欢 目录 1. 定义 一种 表示静态属性的 关键字 / 修饰符 2. 作用 共用、
Carson.Ho
2019/02/22
4510
Java中static、final关键字【详解】
静态成员变量(被static修饰,属于类、加载一次、内存中只有一份)。直接用 类名 访问即可,因为类只有一个,所以静态成员变量在内存区域中也只有一份,所有的对象都可以共享该变量。
寻求出路的程序媛
2024/03/25
4570
Java中static、final关键字【详解】
Java学习笔记_零基础系列(十四)Java中的static关键字(上)
static是java语言中的关键字,表示“静态的”,它可以用来修饰变量、方法、代码块等,修饰的变量叫做静态变量,修饰的方法叫做静态方法,修饰的代码块叫做静态代码块。
牛仔码农
2021/08/10
3810
Java static 关键字
静态变量和静态方法能够通过类名来访问,不需要创建一个类的对象来访问该类的静态成员,所以static修饰的成员又称作类变量和类方法。静态变量与实例变量不同,实例变量总是通过对象来访问,因为它们的值在对象和对象之间有所不同。
await
2021/09/09
3030
Java零基础学习之路(十)Java中static关键字
static是java语言中的关键字,表示“静态的”,它可以用来修饰变量、方法、代码块等,修饰的变量叫做静态变量,修饰的方法叫做静态方法,修饰的代码块叫做静态代码块。在java语言中凡是用static修饰的都是类相关的,不需要创建对象,直接通过“类名”即可访问,即使使用“引用”去访问,在运行的时候也和堆内存当中的对象无关。
挨踢小子部落阁
2023/03/15
5590
Java零基础学习之路(十)Java中static关键字
Java中的 static
如果我们需要频繁引用某一个类下的方法,比如 ​​java.lang.Math​​​ 类下相关的数据计算类,或者是用于进行单元测试的 ​​org.junit.Assert​​ 类下各种用于断言的方法,就可以采用静态引用,从而可以省去对前边类名的重复书写。
头发还在
2023/10/16
1670
java学习笔记(基础篇)—关键字static和final
a)所有类实例共享 b)使用静态变量 类名.变量名 c)静态变量是属于这个类,非静态变量是属于对象 d)代码加载到内存静态变量就已经存在了 e)static变量和实例变量的区别: i)static变量对于每个类而言在内存中只有一个,能被类的所有实例所共享; 实例变量对于每个类的每个实例都有一份,它们之间互不影响; ii)Java虚拟机在加载类的过程中为static变量分配内存, 实例变量在加载完类后创建对象时分配内存; iii)static变量存在方法区,实例变量存在堆区; v)static变量可以直接通过类名访问, 实例变量通过引用类型变量访问;
chlinlearn
2019/07/24
3530
Java基础(十):关键字static、代码块、关键字final
冬天vs不冷
2025/01/21
1390
Java基础(十):关键字static、代码块、关键字final
Java关键字(三)——static
  我们说Java是一种面向对象编程的语言,而对象是把数据及对数据的操作方法放在一起,作为一个相互依存的整体,对同类对象抽象出其共性,便是Java中的类,我们可以用类描述世间万物,也可以说万物皆对象。但是这里有个特殊的东西——static,它不属于对象,那么为什么呢?
IT可乐
2018/07/24
8720
Java关键字系列 -- static
在Java代码中,static使用的是比较多的一个关键字,今天就来总结一下static的用法。首先写一段囊括static用法的代码:
叫我阿柒啊
2022/05/09
3020
构造方法、封装、关键字(this、static)和代码块的介绍
构造方法在初始化一个类的对象时进行调用,它没有返回值,方法名与类名相同,而成员方法是则是由对象主动调用,它有返回值,表现为对象的操作行为。
java架构师
2019/05/08
4320
构造方法、封装、关键字(this、static)和代码块的介绍
第31节:Java基础-类与对象
Java基础-类与对象,方法的重载,构造方法的重载,static关键字,main()方法,this关键字,包,访问权限,类的继承,继承性,方法的重写,super变量。
达达前端
2019/07/03
3490
第31节:Java基础-类与对象
JAVA17/JAVA21 内部类.final.static.关键字
是内部类的简化写法。它的本质是一个 带具体实现的 父类或者父接口的 匿名的 子类/实现类。
张哥编程
2024/12/13
680
Java基础--static关键字
不管是平时阅读源代码,还是笔试、面试中,static关键字还是经常被问道,这篇文章主要来重新复习一下该关键字。
河岸飞流
2019/08/08
5000
Java基础--static关键字
Java关键字final、static总结与对比
Java关键字final有“不可改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。
chenchenchen
2022/03/09
9290
Java关键字final、static总结与对比
从 static 关键字深入理解 java对象初始化顺序
最近在阅读 ThreadLocal 源码的时候,发现一段很有意思的代码,代码片段如下:
猿芯
2020/12/03
4290
从 static 关键字深入理解 java对象初始化顺序
Java关键词总结
final修饰可以保证安全性,比如数组的长度属性,String类,这些都是final修饰的,保证不可变
闲花手札
2021/08/24
3070
static 关键字的用法
在 Java 中,static 关键字是一个重要的修饰符,用于表示类级别的成员。了解 static 的用法有助于更好地管理内存和提高代码的效率。以下是 static 关键字的几种主要用法:
繁依Fanyi
2024/10/28
1100
技术分享|static(静态)关键字的特点和用法
考虑篇幅问题,Java基础系列的「关键字static与final」部分将分两次进行梳理,本次主要总结「static关键字」。
用户8639654
2021/07/26
5060
Java常见关键字总结:static,final,this,super
这次复习的知识点是面向对象的关键字static,final,this,super,一些注意的点和知识点。
用户7886150
2020/12/13
5530
相关推荐
Java:关于Static静态关键字的那些小事
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验