区块链技术博客
www.b2bchain.cn

final知识点总结求职学习资料

D0b2wT.gif

本文介绍了final知识点总结求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

  final从字面上理解含义为“最后的,最终的”。在Java中也同样表示出此种含义。
  final可以用来修饰变量(包括类属性、对象属性、局部变量和形参)、方法(包括类方法和对象方法)和类。

一、 final修饰类:

  final修饰类即表示此类已经是“最后的、最终的”含义。因此,用final修饰的类不能被继承,即不能拥有自己的子类。
  如果试图对一个已经用final修饰的类进行继承,在编译期间或发生错误。

二、 final修饰方法:

  final修饰的方法表示此方法已经是“最后的、最终的”含义,亦即此方法不能被重写(可以重载多个final修饰的方法)。
  此处需要注意的一点是:因为重写的前提是子类可以从父类中继承此方法,如果父类中final修饰的方法同时访问控制权限为private,
  将会导致子类中不能直接继承到此方法,因此,此时可以在子类中定义相同的方法名和参数,此时不再产生重写与final的矛盾,而是在子类中重新定义了新的方法。

 1 public class B extends A {  2   3     public static void main(String[] args) {  4   5     }  6   7     public void getName() {  8           9     } 10 } 11  12 class A { 13  14     /** 15      * 因为private修饰,子类中不能继承到此方法,因此,子类中的getName方法是重新定义的、 16      * 属于子类本身的方法,编译正常 17      */ 18     private final void getName() { 19          20     } 21  22     /* 因为public修饰,子类可以继承到此方法,导致重写了父类的final方法,编译出错 23     public final void getName() { 24      25     } 26     */ 27 }

  被final修饰的方法不能被重写,可以被继承
  static final修饰的方法与其同理

三、 final 修饰变量:

  final修饰的变量表示此变量是“最后的、最终的”含义。一旦定义了final变量并在首次为其显示初始化后,final修饰的变量值不可被改变。
  这里需要注意以下几个问题:
    1、final修饰的变量,无论是类属性、对象属性、形参还是局部变量,这些变量都是需要进行显示初始化(即为其显示指定初始值)。
    2、final修饰变量的初始化时机可以有两个:
      1)、显示初始化
      2)、在对象构造完毕前即可。
    3、对于final修饰的成员变量来说,可以直接在声明时赋值,也可以在构造函数中赋值。
    4、对于final修饰的静态变量来说,可以在声明时赋值,也可以在静态构造代码块中赋值。
    5、对于final修饰的局部变量来说,可以在声明时赋值,也可以先声明,在随后赋值。(把它当作对象还未构造完毕)。
  ege:
final知识点总结
  无论对于基本数据类型还是引用数据类型,final修饰的变量都是首次显示初始化后值都不能修改。对于基本数据类型,很好理解。对于引用数据类型,引用变量指向的是实际对象的存储地址,因此,其值不能修改并不意味着其所指向的对象内容不能修改
  ege:
final知识点总结
final知识点总结
  总得来说对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。

四、final修饰变量后导致的“宏替换”/”宏变量”问题

  Java 中宏变量/宏替换指的是在java代码中在编译期某些变量能够直接被其本身的值所替换,编译到.class文件中。因此,编译后的.class文件中已经不存在此变量了。
  在String类型的变量中,有时候经常遇到如下情况:

public class Test {  2   3     public static void main(String[] args) {  4   5         String country = "China";  6         String name = "qqyumidi";  7   8         String userInfo = country + name;  //编译后此处依然是country和name变量  9         String user = "China" + "qqyumidi";  //编译后此处直接变成Chinaqqyumidi 10  11     } 12 }

  在上述代码中的第9行,编译后的变量结果直接为Chinaqqyumidi。而第8行代码中,由于country和name都是普通的变量,编译器无法在编译时直接确定userInfo的值,因此此处编译后结果不直接是Chinaqqyumidi。
  但是,如果希望第8行中的代码在编译期直接就能表示为Chinaqqyumidi,就需要用到final修饰符对country和name变量进行修饰。
  原因:final修饰符修饰的变量由于其本身的特性,在编译期就能直接确定其值,且此值不可变。在编译过程中,可以直接将其变量直接转换成其值本身去表示。

 1 public class Test {  2   3     public static void main(String[] args) {  4   5         final String country = "China";  6         final String name = "qqyumidi";  7   8         String userInfo = country + name;  //编译后此处直接是Chianqqyumidi  9  10     } 11 }

  final从字面上理解含义为“最后的,最终的”。在Java中也同样表示出此种含义。
  final可以用来修饰变量(包括类属性、对象属性、局部变量和形参)、方法(包括类方法和对象方法)和类。

一、 final修饰类:

  final修饰类即表示此类已经是“最后的、最终的”含义。因此,用final修饰的类不能被继承,即不能拥有自己的子类。
  如果试图对一个已经用final修饰的类进行继承,在编译期间或发生错误。

二、 final修饰方法:

  final修饰的方法表示此方法已经是“最后的、最终的”含义,亦即此方法不能被重写(可以重载多个final修饰的方法)。
  此处需要注意的一点是:因为重写的前提是子类可以从父类中继承此方法,如果父类中final修饰的方法同时访问控制权限为private,
  将会导致子类中不能直接继承到此方法,因此,此时可以在子类中定义相同的方法名和参数,此时不再产生重写与final的矛盾,而是在子类中重新定义了新的方法。

 1 public class B extends A {  2   3     public static void main(String[] args) {  4   5     }  6   7     public void getName() {  8           9     } 10 } 11  12 class A { 13  14     /** 15      * 因为private修饰,子类中不能继承到此方法,因此,子类中的getName方法是重新定义的、 16      * 属于子类本身的方法,编译正常 17      */ 18     private final void getName() { 19          20     } 21  22     /* 因为public修饰,子类可以继承到此方法,导致重写了父类的final方法,编译出错 23     public final void getName() { 24      25     } 26     */ 27 }

  被final修饰的方法不能被重写,可以被继承
  static final修饰的方法与其同理

三、 final 修饰变量:

  final修饰的变量表示此变量是“最后的、最终的”含义。一旦定义了final变量并在首次为其显示初始化后,final修饰的变量值不可被改变。
  这里需要注意以下几个问题:
    1、final修饰的变量,无论是类属性、对象属性、形参还是局部变量,这些变量都是需要进行显示初始化(即为其显示指定初始值)。
    2、final修饰变量的初始化时机可以有两个:
      1)、显示初始化
      2)、在对象构造完毕前即可。
    3、对于final修饰的成员变量来说,可以直接在声明时赋值,也可以在构造函数中赋值。
    4、对于final修饰的静态变量来说,可以在声明时赋值,也可以在静态构造代码块中赋值。
    5、对于final修饰的局部变量来说,可以在声明时赋值,也可以先声明,在随后赋值。(把它当作对象还未构造完毕)。
  ege:
final知识点总结
  无论对于基本数据类型还是引用数据类型,final修饰的变量都是首次显示初始化后值都不能修改。对于基本数据类型,很好理解。对于引用数据类型,引用变量指向的是实际对象的存储地址,因此,其值不能修改并不意味着其所指向的对象内容不能修改
  ege:
final知识点总结
final知识点总结
  总得来说对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。

四、final修饰变量后导致的“宏替换”/”宏变量”问题

  Java 中宏变量/宏替换指的是在java代码中在编译期某些变量能够直接被其本身的值所替换,编译到.class文件中。因此,编译后的.class文件中已经不存在此变量了。
  在String类型的变量中,有时候经常遇到如下情况:

public class Test {  2   3     public static void main(String[] args) {  4   5         String country = "China";  6         String name = "qqyumidi";  7   8         String userInfo = country + name;  //编译后此处依然是country和name变量  9         String user = "China" + "qqyumidi";  //编译后此处直接变成Chinaqqyumidi 10  11     } 12 }

  在上述代码中的第9行,编译后的变量结果直接为Chinaqqyumidi。而第8行代码中,由于country和name都是普通的变量,编译器无法在编译时直接确定userInfo的值,因此此处编译后结果不直接是Chinaqqyumidi。
  但是,如果希望第8行中的代码在编译期直接就能表示为Chinaqqyumidi,就需要用到final修饰符对country和name变量进行修饰。
  原因:final修饰符修饰的变量由于其本身的特性,在编译期就能直接确定其值,且此值不可变。在编译过程中,可以直接将其变量直接转换成其值本身去表示。

 1 public class Test {  2   3     public static void main(String[] args) {  4   5         final String country = "China";  6         final String name = "qqyumidi";  7   8         String userInfo = country + name;  //编译后此处直接是Chianqqyumidi  9  10     } 11 }

  final从字面上理解含义为“最后的,最终的”。在Java中也同样表示出此种含义。
  final可以用来修饰变量(包括类属性、对象属性、局部变量和形参)、方法(包括类方法和对象方法)和类。

一、 final修饰类:

  final修饰类即表示此类已经是“最后的、最终的”含义。因此,用final修饰的类不能被继承,即不能拥有自己的子类。
  如果试图对一个已经用final修饰的类进行继承,在编译期间或发生错误。

二、 final修饰方法:

  final修饰的方法表示此方法已经是“最后的、最终的”含义,亦即此方法不能被重写(可以重载多个final修饰的方法)。
  此处需要注意的一点是:因为重写的前提是子类可以从父类中继承此方法,如果父类中final修饰的方法同时访问控制权限为private,
  将会导致子类中不能直接继承到此方法,因此,此时可以在子类中定义相同的方法名和参数,此时不再产生重写与final的矛盾,而是在子类中重新定义了新的方法。

 1 public class B extends A {  2   3     public static void main(String[] args) {  4   5     }  6   7     public void getName() {  8           9     } 10 } 11  12 class A { 13  14     /** 15      * 因为private修饰,子类中不能继承到此方法,因此,子类中的getName方法是重新定义的、 16      * 属于子类本身的方法,编译正常 17      */ 18     private final void getName() { 19          20     } 21  22     /* 因为public修饰,子类可以继承到此方法,导致重写了父类的final方法,编译出错 23     public final void getName() { 24      25     } 26     */ 27 }

  被final修饰的方法不能被重写,可以被继承
  static final修饰的方法与其同理

三、 final 修饰变量:

  final修饰的变量表示此变量是“最后的、最终的”含义。一旦定义了final变量并在首次为其显示初始化后,final修饰的变量值不可被改变。
  这里需要注意以下几个问题:
    1、final修饰的变量,无论是类属性、对象属性、形参还是局部变量,这些变量都是需要进行显示初始化(即为其显示指定初始值)。
    2、final修饰变量的初始化时机可以有两个:
      1)、显示初始化
      2)、在对象构造完毕前即可。
    3、对于final修饰的成员变量来说,可以直接在声明时赋值,也可以在构造函数中赋值。
    4、对于final修饰的静态变量来说,可以在声明时赋值,也可以在静态构造代码块中赋值。
    5、对于final修饰的局部变量来说,可以在声明时赋值,也可以先声明,在随后赋值。(把它当作对象还未构造完毕)。
  ege:
final知识点总结
  无论对于基本数据类型还是引用数据类型,final修饰的变量都是首次显示初始化后值都不能修改。对于基本数据类型,很好理解。对于引用数据类型,引用变量指向的是实际对象的存储地址,因此,其值不能修改并不意味着其所指向的对象内容不能修改
  ege:
final知识点总结
final知识点总结
  总得来说对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。

四、final修饰变量后导致的“宏替换”/”宏变量”问题

  Java 中宏变量/宏替换指的是在java代码中在编译期某些变量能够直接被其本身的值所替换,编译到.class文件中。因此,编译后的.class文件中已经不存在此变量了。
  在String类型的变量中,有时候经常遇到如下情况:

public class Test {  2   3     public static void main(String[] args) {  4   5         String country = "China";  6         String name = "qqyumidi";  7   8         String userInfo = country + name;  //编译后此处依然是country和name变量  9         String user = "China" + "qqyumidi";  //编译后此处直接变成Chinaqqyumidi 10  11     } 12 }

  在上述代码中的第9行,编译后的变量结果直接为Chinaqqyumidi。而第8行代码中,由于country和name都是普通的变量,编译器无法在编译时直接确定userInfo的值,因此此处编译后结果不直接是Chinaqqyumidi。
  但是,如果希望第8行中的代码在编译期直接就能表示为Chinaqqyumidi,就需要用到final修饰符对country和name变量进行修饰。
  原因:final修饰符修饰的变量由于其本身的特性,在编译期就能直接确定其值,且此值不可变。在编译过程中,可以直接将其变量直接转换成其值本身去表示。

 1 public class Test {  2   3     public static void main(String[] args) {  4   5         final String country = "China";  6         final String name = "qqyumidi";  7   8         String userInfo = country + name;  //编译后此处直接是Chianqqyumidi  9  10     } 11 }

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » final知识点总结求职学习资料
分享到: 更多 (0)
D0b2wT.gif

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们