博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA总结之关键字static和final
阅读量:7119 次
发布时间:2019-06-28

本文共 2428 字,大约阅读时间需要 8 分钟。

问题描述:

  Java中有两个修饰符关键字static和final,用来修饰成员变量和方法。其中static表示静态的意思,被这个关键字修饰的方法和变量,则表示在Java虚拟机加载类的时候就加载了这个变量和方法,并且它与对象无关,它直属于类;其中final表示最终的意思,被这个关键字修饰的方法,则表示这个方法不能被重写,被这个关键字修饰的变量,则表示这个变量不能被改变。static和final的区别,当你懂得它们的含义,就知道它们的区别了,其实它们是两个不同的概念,哪有区别之分。为了更清晰的解释它们的含义,下面附上测试代码:

1 package com.test; 2  3 public class Test { 4  5     /** 6      * @param args 7      * static和final关键字测试样例 8      */ 9     public static void main(String[] args) {10         // TODO Auto-generated method stub11         MyClass myClass1 = new MyClass();12         MyClass myClass2 = new MyClass();13         /*14          * 由于j被static关键字修饰,则表示变量j直属于类,不属于对象,所以这里变提示警告15          * 警告:The static field MyClass.j should be accessed in a static way16          */17         System.out.println("输出myClass1对象信息:");18         System.out.println("i = " + myClass1.i);19         System.out.println("j = " + myClass1.j);20         System.out.println("k = " + myClass1.k);21         System.out.println("输出myClass2对象信息:");22         System.out.println("i = " + myClass2.i);23         System.out.println("j = " + myClass2.j);24         System.out.println("k = " + myClass2.k);25         myClass1.setJ();26         /*27          * 当我们改变myClass1对象的变量j的时候,myClass2对象的变量j也被改变28          * 这更加体现了被static修饰的变量是直属于类的29          */30         System.out.println("输出myClass1对象信息:");31         System.out.println("i = " + myClass1.i);32         System.out.println("j = " + myClass1.j);33         System.out.println("k = " + myClass1.k);34         System.out.println("输出myClass2对象信息:");35         System.out.println("i = " + myClass2.i);36         System.out.println("j = " + myClass2.j);37         System.out.println("k = " + myClass2.k);38     }39     40 }41 42 class MyClass{    43      public final double i = Math.random();44      public static double j = Math.random();45      public double k = Math.random();46      47      /*这里会报错,并提示去掉i变量的final修饰48      The final field MyClass.i cannot be assigned49      public void setI(){50          i = 1.0;51      }*/52      53      public void setJ(){54          j = 1.0;55      }56 }

输出结果:

输出myClass1对象信息:i = 0.8121042271613893j = 0.7588637394635798k = 0.7289219433108298输出myClass2对象信息:i = 0.2939051021116923j = 0.7588637394635798k = 0.23782874599220116输出myClass1对象信息:i = 0.8121042271613893j = 1.0k = 0.7289219433108298输出myClass2对象信息:i = 0.2939051021116923j = 1.0k = 0.23782874599220116

 

转载于:https://www.cnblogs.com/atp-sir/p/6380756.html

你可能感兴趣的文章
<VirtualHost *:80>配置文件
查看>>
C++中的头文件
查看>>
EXCHANGE虚拟目录功能介绍
查看>>
ubuntu下rar文件解压后文件名乱码
查看>>
面试题整理_04
查看>>
CentOS 7.1.1503 varnish动静分离反代用户请求
查看>>
天坑-安装salt-api安装的正确姿势
查看>>
EAPS和RRPP比较
查看>>
解决uploadify在Firefox下丢失session的问题
查看>>
BGinfo配置
查看>>
比特币不是货币
查看>>
Maven多模块项目搭建
查看>>
Linux下手动挂载新增磁盘
查看>>
自定义单元格
查看>>
汇编实现时钟设置代码理解
查看>>
企业云存储 | 为什么越来越多的NAS用户转向企业云盘?
查看>>
linux查看某个时间段的日志
查看>>
Windows上的svn仓库迁移(visualSVN)
查看>>
java,andoid安卓去掉替换字符串中的空字符空格换行等
查看>>
微软的新一代web开发工具 - WebMatrix2
查看>>