1.首先正确的认识一下final, 一个final修饰的叫"终态", 而这种终态很特殊, 它指的是:"当这个变量被赋值之后成为终态". 那么,当一个被赋值之后的final修饰变量, 将不可再被赋新值. (先理解)
2.而static表示静态变量, 说穿了,你需要知道JAVA如何为一个类创建内存空间--我们知道类有空间,类产生的实例(对象)有空间,方法有空间,变量有空间, 当static修饰时, 这个变量会在类分配内存时就被分配内存了, 所以你知道,你可以不用产生对象就使用静态变量.
3.
public class Test0
{
private static final String str1;
public Test0(String str)
{
str1=str;
System.out.println(str1);
}
public static void main(String[] args)
{
Test0 t=new Test0("hello world");
Test0 tt=new Test0("world hello");
}
}
这段代码的构造方法里的str1会报错,而去掉string定义时的static和final中的任何一个都可以通过?static和final为什么不能同时存在?
我们来看看, 被static修饰,又被final修饰,首先它是一个静态变量, 那么在类分配时就会分配内存, 实际上这个String就被初始化了,既然初始化了, 那么也就有值了, 而一个终态被赋值变量将不能再被赋值, 那么自然就报错了
4.static final 同时修饰的变量必须初始化,它其实是代表一个常量。
分享到:
相关推荐
JavaSE024static与final使用陷阱续..pdfJavaSE024static与final使用陷阱续..pdfJavaSE024static与final使用陷阱续..pdfJavaSE024static与final使用陷阱续..pdfJavaSE024static与final使用陷阱续..pdfJavaSE024static...
java 中static和final的定义及其用法
static and final.
static 可以修饰初始化代码块扩充内容三、final(最终的,最后的)1.final可以修饰变量2.final可以修饰方法3.final可以修饰类总结abstract、static、final可以修饰的内容abstract、static、final是否可以修饰构造...
34. private static final int ENERGY_TO_EAT = 1; 35. 36. /** 37. * Energy gained when a full meal is eaten. 38. */ 39. private static final int ENERGY_IN_A_FULL_MEAL = 10; 40. 41. /** 42. * ...
在使用netty做 openssl 中使用 netty-tcnative-boringssl-static 在 linux-x86_64/osx-x86_64/windows-x86_64 分别对cpu 不同平台支持,但是在鲲鹏arm 处理上缺没有相关支持,导致在arm64 服务器上,没法运行比如 ...
1.static修饰一个属性字段,那么这个属性字段将成为类本身的资源,public修饰为共有的,可以在类的外部通过test.a来访问此属性;在类内部任何地方可以使用.如果被修饰为private私有,那么只能在类内部使用.
Java初学者要看看了,Java修饰符轻松搞定!
java中final与static的用法
自己总结了一下java中static、final、abstract和interface的用法
static、this、super、final的JAVA用法
JAVA(static、finalの使用).doc
Java程序设计实验11-static、super、final、代码块.docxJava程序设计实验11-static、super、final、代码块.docxJava程序设计实验11-static、super、final、代码块.docxJava程序设计实验11-static、super、final、...
java 关键字final和static
JAVA访问控制 、 static和final.mp4
ffmpeg-git-arm64-static.tar.xz官方安装包,支持麒麟、飞腾安装和部署。共享。
java中final和static讲解及实例
Java编程中static和final关键字的陷阱.pdf
自己总结的java中final和static的区别,请大家提出宝贵意见。