技术标签: java中final double
1. final variable
final variable 就是一个常量,一旦被初始化就不可以被改变。
class Test1 {
final double PI = 3.14; //常量的名称最好大写
public Test1(){
PI = 3.14;
}
void test(){
System.out.println("PI is: " + PI);
}
public static void main(String[] args){
Test1 t = new Test1();
t.test();
}
}
输出:
PI is: 3.14
(1)Blank final variable
在声明时未初始化的 final variable 被称作 blank final variable, blank final variable必须在 构造函数中被初始化,否则会抛出编译错误。
class Test1 {
final double PI;
Test1(){
PI = 3.14; //在构造函数中初始化
}
void test(){
System.out.println("PI is: " + PI);
}
public static void main(String[] args){
Test1 t = new Test1();
t.test();
}
}
输出:
PI is: 3.14
(2)Uninitialized static final variable
在声明阶段未初始化的 static final variable 只能在静态代码块中被初始化
class Test1 {
static final double PI;
static {
PI = 3.14;
}
void test(){
System.out.println("PI is: " + PI);
}
public static void main(String[] args){
Test1 t = new Test1();
t.test();
}
}
输出:
PI is: 3.14
2. final method
final method 不能被覆盖。也就是说子类可以调用父类的 fianl method,但是不能覆盖它。
class Test {
static final double PI = 3.14;
final void test(){
System.out.println("PI is: " + PI);
}
}
class Test1 extends Test{
public static void main(String[] args){
Test1 t = new Test1();
t.test();
}
}
输出:
PI is: 3.14
3. final class
final calss 不能被继承
final class Test1 {
static final double PI = 3.14;
final void test(){
System.out.println("PI is: " + PI);
}
public static void main(String[] args){
Test1 t = new Test1();
t.test();
}
}
输出:
PI is: 3.14
PS:java.lang.String类为什么设计成 final 的?首先,先得清楚 final 这个关键字。
final的出现就是为了为了不想改变,而不想改变的理由有两点:设计或者效率。final 修饰的类是不被能继承的,所以 final 修饰的类是不能被篡改的。
了解了这一点,我们再看看问题:
(1)从设计上讲,
A、确保它们不会在子类中改变语义。String类是final类,这意味着不允许任何人定义String的子类。换言之,如果有一个String的引用,它引用的一定是一个String对象,而不可能是其他类的对象。
B、String 一旦被创建是不能被修改的,因为 java 设计者将 String 为可以共享的,下面这段是源码中的注释:
(2)从效率上讲:
A、设计成final,JVM才不用对相关方法在虚函数表中查询,而直接定位到String类的相关方法上,提高了执行效率。
B、Java设计者认为共享带来的效率更高。
总而言之,就是要保证 java.lang.String 引用引用的对象一定是 java.lang.String的对象,而不是引用它的子孙类,这样才能保证它的效率和安全。
第一题: Linux采用什么版权方式发行?这种版权与通常的商业软件有何区别? 答:linux采用GPL(GPL是GNU General Public License的缩写,是GNU通用公共授权非正式的中文翻译。它并非由自由软件基金会所发表,亦非使用GNU通用公共授权的软件的法定发布条款一直有GNU通用公共授权英文原文的版本具有此等效力。)版
PAT - 10061006 换个格式输出整数 (15 分)让我们用字母 B 来表示“百”、字母 S 表示“十”,用 12…n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数。例如 234 应该被输出为 BBSSS1234,因为它有 2 个“百”、3 个“十”、以及个位的 4。输入格式:每个测试输入包含 1 个测试用例,给出正整数 n(<1000)。输出格式:每个测试用例的输出占一行,用规定的格式输出 n。输入样例 1:234
apk文件使用解压工具就能看到drawable等资源,但是有些游戏中的图片资源却是无法看到的。这个问题探索了许久……【1】图片资源不放置在drawable文件下,放在assets中(但是解压apk,同样能看到图片资源),以下说说使用方法。分析:Ⅰ)当图片资源放在drawable中的时候,能有相应的Id去解析:BitmapFactory.decodeResource(res, id)如果放置在as...
为什么写这篇文章?首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。 但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存。又或者是先删除缓存,再更新数据库,其实大家存在很大的争议。目前没有一篇全面的博客,对这几种方案进行解析。如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Sp...
关于科技发展英语作文(通用10篇)在平平淡淡的学习、工作、生活中,大家总免不了要接触或使用作文吧,写作文可以锻炼我们的独处习惯,让自己的心静下来,思考自己未来的方向。那么一般作文是怎么写的呢?下面是小编为大家整理的关于科技发展英语作文(通用10篇),欢迎大家借鉴与参考,希望对大家有所帮助。科技发展英语作文121st century is the century of technology.Nowa...
【实例简介】Android RSA加密解密文件【实例截图】【核心代码】AndroidRSA加密解密文件└── RSA├── AndroidManifest.xml├── assets│ ├── rsa_private_key.pem│ └── rsa_public_key.pem├── bin│ ├── AndroidManifest.xml│ ├── classes│ │...
filename为文件名-e (equal)-e filename, 判断文件是否存在-d (directory)-d filename,判断文件是否为目录-f (file)-f filename,判断文件是否为常规文件-L (link)-L filename,判断文件是否问链接文件-r (read)-r filename,判断文件是否可读-w (write)-...
为什么80%的码农都做不了架构师?>>> ...
2016下半年燕山大学计算机二级报名导读:2016下半年燕山大学计算机二级考试报名时间为6月18日开始至7月5日,报名费用为80元,考试时间为9月24日-25日,具体内容请看如下信息。想了解更多相关信息请持续关注我们应届毕业生考试网!各系及相关考生:2016年下半年全国计算机等级考试(以下简称“NCRE”)将于9月24日-25日举行。现就报名工作有关事项通知如下:一、级别及科目2016年下半年NC...
转载:https://blog.csdn.net/leiting_imecas/article/details/72367937tf定义了tf.app.flags,用于支持接受命令行传递参数,相当于接受argv。import tensorflow as tf#第一个是参数名称,第二个参数是默认值,第三个是参数描述tf.app.flags.DEFINE_string('str_name...
上传文件大致就是input 中的file添加一个id属性,获取到文件通过ajax传递到后台,后台通过params获取文件,后台接收文件,读取里面的内容,存到数据库当中,此处只把文件内容拼成一个大的字符串存到一个字段当中var upFiles = document.getElementById("fileid").files;var params = new FormData();para...
在Windows下使用redis1、服务器下载:redis官方下载地址在cmd中执行 通过配置文件启动redis服务器验证2、下载可视化工具:redis-desktop-manager3、如果可视化工具连接不上redis服务端。检查你是否设置了密码4、redis特性:Redis不支持自定义数据库的名字,每个数据库都以编号命名,开发者必须自己记录哪些数据库存储了...