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

Java中的this,final,static关键字

作者头像
fanfan
发布于 2022-05-06 11:50:54
发布于 2022-05-06 11:50:54
36800
代码可运行
举报
文章被收录于专栏:编程思想之路编程思想之路
运行总次数:0
代码可运行

最近写程序发现关键字对程序影响很大,希望对大家有所帮助。

1,this关键字:this关键字只能在方法内部使用,有三种使用方式

     第一种,返回对当前对象的引用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Person {
     .......
      public Person getPerson(){
          ......
            return this}
}

      第二种情况,利用this去调用方法或者域,表示调用该方法的对象,此时,this等同于其他引用对象

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Person{
       private int i;
       Persorn(int i){
              this.i = i;
       }
}

       第三种情况,   利用this在构造器中调用构造器方法,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Person{
      
      private int i;
      private String s;
       Person(int i){
           this.i = i;
        }
       Person(int i,String s){
            this(i);
            this.s = s;
      }
}

2,final关键字,可用来修饰域,方法,和类

   第一种情况,final修饰类,表示最终类,不可以被继承,final类里的方法默认为final方法,不可以被覆写

   第二种情况,final修饰方法,方法不能被覆写,private方法默认为final方法。java早期为效率问题引出final方法,但现在发现存在诸多毛病,不推荐使用

   第三种情况,final修饰域,final修饰域又分为修饰基本类型域和修饰对象

           final修饰基本类型域,一旦初始化,数值保持不变

           final修饰引用类型域,一旦初始化,则引用对象的地址不再发生变化,但是对象的内容可以改变

3,static关键字,可用来修饰域,方法,代码块和类

static:可修饰域,方法,代码块和类

    第一种情况,static修饰内部类,成为静态内部类

    第二种情况,static修饰代码块,这与初始化有关,在初始化时总是先初始化静态域

    第三种情况,static修饰域,表示一个类中只存在一份这样的静态域,不论该类创建了多少个对象,静态域只有一份,没有拷贝

     第四种情况,static修饰方法,在static修饰的方法中只能调用静态域,静态方法中不能出现this,和super关键字,而且静态方法和静态域可以使用类名或者对象去调用,而非静态的只能使用对象去调用

在代码中验证this,static,final,关键字

Person.java文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Person {
    
    //展示了this的三种用法

    public int age;
    public String name;

    public Person(int age) {
        this.age = age;
    }
    public Person(int age,String name){
        this(age);
        this.name = name;
        
    }
    
    public Person getPerson(int age ,String name){
        this.changAge();
        return this;
    }
    
    private void changAge(){
        age++;
    }
    
}

MainActivity.Java文件,final修饰的域和final修饰的对象,以及static修饰的域和static修饰的变量

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class MainActivity extends Activity {


    private int i = 1;
    private final int j = 2;
    private static final int k = 3;

    private Person person1 = new Person(1,"June");
    private final Person person2 = new Person(3,"Nay");
    private static final Person person3 = new Person(4,"Saly");


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    private void changField(){
        i++;//Correct,没有任何关键字修饰的基本类型数据,数值可以改变
//        j++;//Error,final修饰的基本类型数据,一经初始化,数值不能再发生改变
//        k++;//Error,同上,与域j不同处在于,k为static修饰,只有一份,不进行拷贝
        person1 = new Person(4,"Tom");//Correct
        person1.age++;//Correct
        person1.name = person1.name+"j";//Correct
//        person2 = new Person(5,"Jane");//Error,final修饰的对象地址不能发生改变
        person2.age++;//Correct,final修饰的对象内容可以发生改变
        person2.name = person2.name + "h";//Correct,final修饰的对象内容可以发生改变
        person3.age++;//Correct
        person3.name = person3.name + "h";//Correct

    }

}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-12-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
final和static关键字
  static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。   被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。   只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。 用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它
Mister24
2018/05/14
6720
Java中static、final关键字【详解】
静态成员变量(被static修饰,属于类、加载一次、内存中只有一份)。直接用 类名 访问即可,因为类只有一个,所以静态成员变量在内存区域中也只有一份,所有的对象都可以共享该变量。
寻求出路的程序媛
2024/03/25
6520
Java中static、final关键字【详解】
Java中final和static关键字总结
final修饰的类不可被继承,例如java.lang.Math就是一个 final类,不可被继承。
lyb-geek
2018/07/26
5280
Java常见关键字总结:static,final,this,super
这次复习的知识点是面向对象的关键字static,final,this,super,一些注意的点和知识点。
用户7886150
2020/12/13
5580
Java static关键字与static{}语句块
6)访问静态常量,如果编译器可以计算出常量的值,则不会加载类,例如:public static final int a =123;否则会加载类,例如:public static final int a = math.PI。
全栈程序员站长
2022/09/09
5010
Static关键字的使用
用来修饰成员变量和方法,被修饰的成员是属于类的,而不单单是属于某个对象的,也就是说,可以不靠对象来调用。
一只胡说八道的猴子
2020/09/27
4420
Static关键字的使用
Java中的final关键字详解
子类可以在父类的基础上改写父类内容,比如,方法重写。那么我们能不能随意的继承API中提供的类,改写其内容呢?显然这是不合适的。为了避免这种随意改写的情况,Java提供了final 关键字,用于修饰不可改变内容。 final: 不可改变。可以用于修饰类、方法和变量。
共饮一杯无
2022/11/28
3330
Java基础系列(八):static关键字
如果把域标记为static,每个类中只有一个这样的域,而这个类的每一个对象都有自己的一份拷贝。例如,如果需要给每一个用户赋予一个唯一的标识,我们可以这么做:
山禾说
2019/01/21
4560
Java中的static关键字解析
  static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一。下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列举了一些面试笔试中常见的关于static的考题。以下是本文的目录大纲:
Java团长
2018/08/06
7810
java final 关键字
http://blog.csdn.net/niguang09/article/details/6035813
bear_fish
2018/09/20
5850
Java并发关键字-final
final可以修饰变量,方法和类,用于表示所修饰的内容一旦赋值之后就不会再被改变,比如String类就是一个final类型的类。即使能够知道final具体的使用方法,final在多线程中存在的重排序问题很容易忽略,希望能够一起做下探讨。
Java架构师必看
2021/07/14
7280
java中static关键字的作用_Java:Java中static关键字作用
1、被static修饰的变量属于类变量,可以通过类名.变量名直接引用,而不需要new出一个类来
全栈程序员站长
2022/09/08
8240
深入理解java中的static关键字
static关键字是摆在刚入行编程语言的小白们面前的一道难题,为什么要用static?使用它有什么好处?修饰方法和修饰变量有什么区别?本文将就java中static关键字的使用方法及注意事项进行深入探讨,一是为了方便自己以后查阅,二也为了与大家交流分享学习的经验。
用户7886150
2020/12/13
1.8K0
Java中static关键字的作用与用法「建议收藏」
static是一个修饰符,用于修饰类的成员方法、类的成员变量,另外可以编写static代码块来优化程序性能。
全栈程序员站长
2022/09/08
4070
Java中static关键字的作用与用法「建议收藏」
static关键字
   对于static关键字的用法,主要分为三个部分,分别是静态变量、静态方法和静态类。 1.静态变量 静态变量(静态域)不是类的某个具体对象所有,而是类的所有对象共有的,静态变量既能够被对象调用,也可以用类来调用。 package StaticTest_4_3; public class StaticTest { public static int count = 3; public static void main(String[] args) { StaticTest test1 =
Mister24
2018/05/14
7230
JAVA17/JAVA21 内部类.final.static.关键字
是内部类的简化写法。它的本质是一个 带具体实现的 父类或者父接口的 匿名的 子类/实现类。
张哥编程
2024/12/13
730
Java关键字final、static总结与对比
Java关键字final有“不可改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。
chenchenchen
2022/03/09
9500
Java关键字final、static总结与对比
面试官:兄弟,说说Java的static关键字吧
读者乙在上一篇我去系列文章里留言说,“我盲猜下一篇标题是,‘我去,你竟然不知道 static 关键字’”。我只能说乙猜对了一半,像我这么有才华的博主,怎么可能被读者猜中了心思呢,必须搞点不一样的啊,所以本篇文章的标题你看到了。
沉默王二
2020/06/09
3380
一文吃透static关键字:从基础到实战
在编程的世界里,static关键字犹如一把神奇的钥匙,能够开启许多独特的功能和特性。无论是在 C、C++、Java 还是其他编程语言中,static关键字都占据着重要的地位。它的存在,让我们能够更高效地管理内存、实现数据共享以及优化代码结构。然而,static关键字的用法丰富多样,常常让初学者感到困惑,甚至让有经验的开发者也会偶尔犯错。本文将深入剖析static关键字在不同编程语言中的用法、作用和应用场景,帮助大家全面掌握这一强大的工具,从而编写出更加健壮、高效的代码。
用户11396661
2025/02/26
1090
一文吃透static关键字:从基础到实战
Java中static关键字的作用
static关键字主要有两种作用: 第一,为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关。 第二,实现某个方法或属性与类而不是对象关联在一起 具体而言,在Java语言中,static主要有4中使用情况:成员变量、成员方法、代码块和内部类 (1)static成员变量: Java类提供了两种类型的变量:用static关键字修饰的静态变量和不用static关键字修饰的实例变量。静态变量属于类,在内存中只有一个复制,只要静态变量所在的类被加载,这个静态变量就会被分配空间,因此就可以被使用了。对静态
程序员互动联盟
2018/03/16
1.2K0
相关推荐
final和static关键字
更多 >
LV.0
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验