• 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

  • 相关阅读:
    20145216 史婧瑶《信息安全系统设计基础》第一周学习总结
    20145216史婧瑶《信息安全系统设计基础》第0周学习总结
    20145216《java程序设计》课程总结
    20145216史婧瑶《Java程序设计》第10周学习总结
    20145216史婧瑶《Java程序设计》第五次实验报告
    20145216史婧瑶《Java程序设计》第四次实验报告
    20145216史婧瑶《Java程序设计》第9周学习总结
    20145216史婧瑶《Java程序设计》第三次实验报告
    20145216史婧瑶《Java程序设计》第8周学习总结
    20145220韩旭飞第五周博客
  • 原文地址:https://www.cnblogs.com/bclshuai/p/10509517.html
Copyright © 2020-2023  润新知