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

原文地址:https://www.cnblogs.com/bclshuai/p/10509517.html