final关键字
1 final关键字
1.1 final修改类、方法、变量
在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。下面就从这三个方面来了解一下final关键字的基本用法。
(1)修饰类
当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。
(2)修饰方法
子类无法覆盖该方法;
(3)修饰变量
对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。重新赋值会出现错误。
1.2 final深入理解
(1)final修饰会在编译时替换常量
String a = "hello2";
final String b = "hello";//被final修饰的常量字符串
String d = "hello";
String c = b + 2;
String e = d + 2;
System.out.println((a == c));//true
System.out.println((a == e));false
因为b被final修改,所以b不可以再指向其他常量字符串,b的值就固定了。所以在编译阶段,c就被优化为字符常量“hello2”,a/c同时指向常量池中字符串“hello2”。而e会在堆上上创建对象。创建的是
(2)使用方法返回时不会在编译时被优化替换
public class Test {
public static void main(String[] args) {
String a = "hello2";
final String b = getHello();
String c = b + 2;
System.out.println((a == c));//false
}
public static String getHello() {
return "hello";
}
}
只有在编译期间能确切知道final变量值的情况下,编译器才会进行这样的优化。
(3)final修饰的引用变量指向的对象内部变量可以变
public class Test {
public static void main(String[] args) {
final MyClass myClass = new MyClass();//指向的对象不能变
System.out.println(++myClass.i);//对象内部的变量值可以变
}
}class MyClass {
public int i = 0;
}
1.3 final 和static的区别
final修饰的变量,表示只能在定义或者构造函数中初始化赋值,赋值后不能修改。不同的对象可以初始化为不同的值。Static则表示一个类创建的所有对象都共享这一个静态变量,任何一个对象对这个共享变量进行修改,其他对象使用该变量时值都会是改变后的值。
MyClass myClass1 = new MyClass();
MyClass myClass2 = new MyClass();
System.out.println(myClass1.i);//i不同,两个对象有两个final值
System.out.println(myClass2.i);
System.out.println(myClass1.j);//j相同,静态变量只第一次创建对象时初始化值;
System.out.println(myClass2.j);
class MyClass
{
public final double i = Math.random();//final变量
public static double j = Math.random();//静态变量
自己编了一个股票监控软件,有如下功能,有兴趣的朋友可以下载;
(1) 个股监测。监测个股实时变化,可以监测个股大单交易、急速拉升和下降、主力入场和出场、股票最高点和最低点提醒。检测到最高点、最低点、主力进场点、主力退场点、急速拉升点、急速下跌点,给出语音或者声音提醒,不用再时刻看着大盘了,给你更多自由的时间;
(2) 大盘监测。监测大盘的走势,采用上证、深证、创业三大指数的综合指数作为大盘走势。并实时监测大盘的最高点和最低点、中间的转折点。
(3) 股票推荐。还能根据历史数据长期或短期走势进行分析,对股市3千多个股票进行分析对比,选出涨势良好的股票,按照增长速度从大到小排序,推荐给你涨势良好的股票;
下载地址:
1.0.3版本(修复大盘指数崩溃缺陷)下载地址:
链接:https://pan.baidu.com/s/1BJcTp-kdniM7VE9K5Kd3vg 提取码:003h
更新链接:
https://www.cnblogs.com/bclshuai/p/10621613.html