Java基础复习(六)

常见关键字总结

1、final关键字

final用来修饰类、方法和变量。
(1)final修饰的类不能被继承,而且final修饰的类中,所有成员方法会被默认为final方法,不允被继承重写。
(2)final修饰的方法不能被重写。
(3)final修饰的变量是常量,基本数据类型数值无法改变;引用数据类型。
    一般final有两种实现意义:一是将修饰的锁定,使其无法被修改;二是final定义提高效率,早期会将final方法转换为内嵌调用。如今不再需要。

2、static关键字

(1)修饰成员变量和成员方法:所修饰的成员变量和成员方法属于这个类,而不是属于这个类的单个对象,可以被类中所有对象共享。可以通过类来调用,不用创建对象。调用格式:类名.静态变量名 类名.静态方法名()

使用类的静态方法时,注意:
    一是在静态方法里只能直接调用同类中其他的静态成员(包括变量和方法),而不能直接访问类中的非静态成员。(因为,如果访问了类中的非静态成员,在调用静态成员时会由于没有创建对象无法调用非静态成员而报错。)
    二是静态方法不能引用this和super关键字。(因为静态方法在使用前不用创建任何实例对象,在静态方法调用时,this没有引用对象。)

(2)静态代码块:定义在类内部,类中方法的外部。静态代码块在非静态代码块之前执行(静态代码块 --> 非静态代码块 --> 构造方法),提高运行效率;并且无论创建多少个类的对象,静态代码块只会执行一次。

class Parent{ static String name = "hello"; { System.out.println("parent block"); } static { System.out.println("parent static block"); } public Parent(){ System.out.println("parent constructor"); }
} class Child extends Parent{ static String childName = "hello"; { System.out.println("child block"); } static { System.out.println("child static block"); } public Child(){ System.out.println("child constructor"); }
} public class Test { public static void main(String[] args) { new Child();//语句(*) }
}

结果:
parent static block
child static block
parent block
parent constructor
child block
child constructor

(3)静态内部类(static修饰类的话只能修饰内部类)
(4)静态导包(导入类中的静态资源,1.5之后新特性):import static 连用指定导入某个类中的指定静态资源,不需要使用类名调用类中静态成员,可以直接使用类中静态成员变量和成员方法。

3、final关键字

final关键字修饰的无法再次改变,可以用来修饰类、方法、成员变量、局部变量。
final修饰的类可以继承其他类,但不可以被继承,即可以有父类但不能有子类;final修饰的方法不可以被重写覆盖;final修饰的变量,只能被唯一赋值一次,不能被重新赋值,修饰的对象不能改变。abstract和final不可以同时使用。

4、this关键字

this用于引用本类中的当前实例,即成员变量、其他成员方法、其他构造方法。

public void setUsername(String username) {this.username = username;}

5、super关键字

用于从子类访问父类的变量和方法。

public class Super {protected int number;protected showNumber() {System.out.println("number = " + number);}
}public class Sub extends Super {void bar() {super.number = 10;super.showNumber();}
}

使用 this 和 super 要注意的问题:
在构造器中使用 super() 调用父类中的其他构造方法时,该语句必须处于构造器的首行,否则编译器会报错。另外,this 调用本类中的其他构造方法时,也要放在首行。
this、super不能用在static方法中。

内部类

1、成员内部类:在方法外米娜定义的内部类。内部类调用外部类中的属性或方法,可以直接使用;外部类调用内部类的属性或方法必须现创建对象。

public class Test_inner {static String  str="外部类";public static class Inner{String str="内部类";public void print(){String str="print方法";System.out.println(str);System.out.println(this.str);System.out.println(Test_inner.str);}}
}public class main {public static void main(String[] args) {Test_inner.Inner inner = new Test_inner.Inner();inner.print();}
}

结果:
print方法
内部类
外部类

2、局部内部类:在方法内部定义,只能在方法内部调用局部内部类;再调用所在方法内的变量时,该变量必须是不可改变的。

//局部内部类格式:
public void methodOuter(){class Inner{String str="局部内部类";public void print(){System.out.println(str);}}
}//匿名内部类格式(省略类名):
Inner inner = new Inner(){public void print(){System.out.println("匿名内部类");}
}

Java基础复习(六)相关推荐

  1. Java基础复习笔记系列 九 网络编程

    Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...

  2. java基础(六章)

    java基础(六章) 一.for循环的使用场合 l  while循环--先判断,再循环 while(1.条件表达式){      //2.循环操作      //3.更改循环条件表达式 } l  do ...

  3. java基础(六)多线程/设计模式

    这辈子没办法做太多事情,所以每一件都要做到精彩绝伦! People can't do too many things in my life,so everything will be wonderfu ...

  4. Java校招笔试题-Java基础部分(六)

    导语   Java 面试题集2021版 Java基础部分六 62.ArrayList和LinkedList 有什么异同之处? 63.HashMap和HashTable的区别 64.List和Map的区 ...

  5. Java基础复习笔记系列 七 IO操作

    Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...

  6. Java实习生常规技术面试题每日十题Java基础(六)

    目录 1.在Java语言,怎么理解goto. 2.请描述一下Java 5有哪些新特性? 3.Java 6新特性有哪些. 4.Java 7 新特性有哪些. 5.Java 8 新特性有哪些. 6.描述Ja ...

  7. 2020604 Java基础复习

    2020/6/4 Java基础复习 Java特性和优势 1.简单性: Java是在C++的语法的基础再"减减".没有头文件,没有指针,也不用分配内存,所以相对来说比较简单; 2.面 ...

  8. Java基础复习-常用类

    Java基础复习-常用类 本文仅对学习过程中所缺java知识点的查缺补漏复习 String 代表字符串.Java程序中的所有字符串字面值(如"abc")都作为此类的实例实现. St ...

  9. Java基础(六)——多线程的基本使用与原理

    版本 说明 发布日期 1.0 发布文章第一版 2020-12-13 文章目录 前言 线程的创建 Thread类 通过继承Thread创建线程 通过实现Runnable接口创建线程 实现Callable ...

最新文章

  1. vue @click 绑定多个方法 执行顺序_Vue干货,学完这些就够用了
  2. rhel 5 检测软件awstats,cacti,ntop搭建
  3. Oracle Golden Gate 系列十一 -- 配置 GG DDL 同步 说明 与 示例
  4. JS ES6中export和import详解
  5. Android日志Log使用
  6. 分享一个数据产品的PRD
  7. 性能无敌的HikariCP数据库连接池实战(文末送书)
  8. python 执行js_Python爬虫之记录一次下载验证码的尝试
  9. Cygwin ssh
  10. 论文笔记_S2D.35-2017-IROS_利用CNNs联合预测RGB图像的深度、法线和表面曲率
  11. 采样次数不同平均值不一样_认知的不同,才有不一样的人生
  12. WindowsServer2008网卡驱动问题
  13. jboss mysql cluster_jboss之mod_cluster集群
  14. Tomcat服务器 和 HTTP协议
  15. Unity引擎中的C#语言学习的笔记(1)
  16. 电机控制系统使用标幺值的意义
  17. python安装pyserial
  18. V S自动关闭的问题
  19. 2018届春招面试回顾(一)
  20. 广州市南沙区2021-2022学年九年级第一学期期末考试英语试题

热门文章

  1. 在Android手机上使用油候插件Tampermonkey或者脚本猫
  2. MAU: A Motion-Aware Unit for Video Prediction andBeyond学习记录
  3. 洛谷P2151 [SDOI2009]HH去散步
  4. 安卓HttpURLConnection 进行http请求(传递数据 获取数据 主线程禁止网络请求)以get方式为例
  5. 02333自学考试《软件工程》真题及章节测试
  6. 基类、派生类的同名函数
  7. 如何关闭iOS系统自动更新?最新屏蔽升级描述文件下载
  8. 交大计算机专硕研究生经验贴,交大软件工程专硕经验帖
  9. 读取本地文件并打印输出
  10. 网易易盾,js逆向:★★★★★