`
huangyongxing310
  • 浏览: 498976 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

java 运行顺序、注意事项总结、基础概念

    博客分类:
  • Java
阅读更多
java 运行顺序、注意事项总结、基础概念


注意事项总结:
1.静态变量是属于整个类的变量而不是属于某个对象的。
2.注意不能把任何方法体内的变量声明为静态(方法体内定义静态变量会报错)
3.在Java中,类是按需加载,只有当需要用到这个类的时候,才会加载这个类,并且只会加载一次
4.在生成对象的过程中,会先初始化对象的成员变量,然后再执行构造器。
5.静态变量和静态语名块都在类加载的时候完成,而不是生成对象时完成
6.访问静态常量,如果编译器可以计算出常量的值,则不会加载类。即如果A类的静态常量值是通过B类的静态常量赋值,则不加载,否则需要加载A类。
7.访问静态常量,如果编译器可以计算出常量的值(就是值不会变化的),则不会加载类,否则会加载类
8.创建对象引用不加载类.(一个类里面定义另一个类的引用),引用就是定义变量
9.静态方法和静态语名块不能调用非静态变量和非静态方法
10.类的构造器实际上也是静态方法,即使没有显示地声明为static
11.变量不能被重写(覆盖),如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法
12.使用父类类型的引用子类对象时(只能调用父类的方法和变量,子类的新方法和变量就不行了),该引用调用的是父类中定义的方法和变量



对象生成:
类加载->初始化static成员变量->执行static语句块->初始化对象的成员变量->执行非静态语句块->执行构造器生成对象

父类static成员变量->父类static语句块->子类static成员变量->子类static语句块->
父类非静态成员变量->父类非静态语句块->父类构造器->子类非静态成员变量->子类非静态语句块->子类构造器

父类初始化->父类构造器->子类初始化->子类构造器



对象初始化:
1)对于  char、short、byte、int、long、float、double等基本数据类型的变量来说会默认初始化为0(boolean变量默认会被初始化为false);
2)对于引用类型的变量,会默认初始化为null。String 默认值为null
3)如果没有显示地定义构造器,则编译器会自动创建一个无参构造器,但是要记住一点,如果显式地定义了构造器,编译器就不会自动添加构造器。



java类加载顺序
1.首先加载类,执行static变量初始化,接下来执行对象的创建
2.java虚拟机要求所有的静态变量必须在对象创建之前完成
3.java常量放在内存中常量池,它的机制与变量是不同的,编译时,加载常量是不需要加载类的



初始化顺序:
需要生成某个类的对象,Java执行引擎会先检查是否加载了这个类,如果没有加载,
则先执行类的加载再生成对象,如果已经加载,则直接生成对象。

类的加载过程中,类的static成员变量会被初始化,如果类中有static语句块,则会
执行static语句块。static成员变量和static语句块的执行顺序同代码中的顺序一致。



子类调用父类的静态方法时
(1)当子类没有覆盖父类的静态方法时,只加载父类,不加载子类
(2)当子类有覆盖父类的静态方法时,既加载父类,又加载子类



static{}语句块的执行次序
(1)当一个类中有多个static{}的时候,按照static{}的定义顺序,从前往后执行;(编写顺序执行)
(2)先执行完static{}语句块的内容,才会执行主调用语句;



继承:
子类继承父类的方法(静态的、非静态的)
子类继承父类的成员变量(静态的、非静态的)
子类不继承构造器



隐藏:
子类继承父类的成员变量,不能够继承父类的private成员变量,子类中出现了同名称的成员变量,则会发生隐藏现象
即子类的成员变量会屏蔽掉父类的同名成员变量,如果要在子类中访问父类中同名成员变量,需要使用super关键字来进行引用。
静态方法和静态变量都会进行隐藏



覆盖:
子类继承父类的方法,不能够继承父类的private成员方法,子类中出现了同名称的成员方法,则称为覆盖,
即子类的成员方法会覆盖掉父类的同名成员方法。如果要在子类中访问父类中同名成员方法,需要使用super关键字来进行引用。



隐藏与覆盖的理解:
隐藏是针对成员变量和静态方法的,而覆盖是针对普通方法的(所以成员变量(静态、非静态)和静
态方法是调用你的引用变量类型的)

覆盖只针对非静态方法,也就是说只有覆盖方法才会进行动态绑定,而隐藏是不会发生动态绑定的。
在Java中,除了static方法和final方法,其他所有的方法都是动态绑定



this、super不能用到静态方法中:
this、super不能用到静态方法中,this是对当前对象的引用,super是指父类对象的引用。
如果静态方法中有this和super那么当静态方法被加载到内存中,其中的this和super也被加载到内存中,
但是对象还没创建this和super还没被初始化,所以加载时会报错。



构造器:
如果父类的构造器都是带有参数的,则必须在子类的构造器中显式地通过super关键字调用父类的构造器并配以适当的参数列表

如果父类有无参构造器,则在子类的构造器中用super关键字调用父类构造器不是必须的,如果没有使用super关键字,
系统会自动调用父类的无参构造器。



重写(Overriding)与重载(Overloading)的理解:
如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。
子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。

如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。
Overloaded的方法是可以改变返回值的类型但同时参数列表也得不同。



接口与抽象类:
接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的,

实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法,
一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。

抽象类是据有一个或多个抽象方法的类,必须声明为抽象类。抽象类的特点是,不能创建实例。



方法调用的优先级:
优先级由高到低依次为:this.show(O)、super.show(O)、this.show((super)O)、super.show((super)O)。

先在本类中找有没有,再到父类中找,找到再看本类有没有重写,都没有再看参数变为父类(一级一级向上父类)找有没有
符合的方法,再参数变为父类到父类中找有没有(这样的顺序进行处理的)

分享到:
评论

相关推荐

    Java运行环境配置

    #### 二、Java运行环境的基本概念 1. **JDK (Java Development Kit)**:JDK是Java开发工具包,包含了Java编译器、文档生成工具、打包工具等,是开发Java应用程序的基础。 2. **JRE (Java Runtime Environment)**:...

    java学习资料及注意事项

    这份"java学习资料及注意事项"集合了多种资源,旨在帮助初学者快速掌握Java编程的基础知识和最佳实践。 首先,"Java开发者需坚守的十大基本准则.txt"可能是对Java开发人员至关重要的指导原则。这些准则可能包括但不...

    毕向东java基础总结(完整版).pdf

    为了使用Java进行开发,需要安装Java Development Kit (JDK),它包含了Java运行环境 (JRE) 和开发工具。JRE包括Java虚拟机 (JVM) 和必要的类库,用于运行Java程序。开发人员需配置环境变量,以便在任何目录下运行JDK...

    java知识点总结大全

    7. **学习Java注意事项**:学习Java时应注重基础,理解面向对象编程的概念,同时关注异常处理、内存管理和多线程等关键特性。 8. **Java语法格式**:Java遵循严格的语法规则,包括类定义、方法声明、访问修饰符等。...

    java 编程入门思考

    A.5.6 固有方法与程序片的注意事项 A.6 CORBA A.6.1 CORBA基础 A.6.2 一个例子 A.6.3 Java程序片和CORBA A.6.4 比较CORBA与RMI A.7 总结 附录B 对比C++和Java 附录C Java编程规则 附录D 性能 D.1 基本方法 D.2 ...

    Servelt运行原理以及注意事项

    在深入理解Servlet运行原理和注意事项之前,我们先简单回顾一下Servlet的基本概念。 Servlet生命周期分为四个阶段:加载与实例化、初始化、服务和销毁。当web服务器接收到请求时,会根据请求URL查找对应的Servlet,...

    韩顺平 java基础加强笔记整理

    - 注意事项:该方法对对象数组有效,但不支持基本数据类型的数组直接转换。 #### 六、枚举类 - **基本使用** - 枚举是一种特殊的类,用于定义一组固定的实例。 - 示例:定义性别枚举,如 `public enum Gender {...

    java 讲师笔记

    2.16 Java基础其他注意事项:学习过程中需要注意的其他事项,例如代码规范、性能优化建议等。 面向对象知识点: 3.1 类:类是Java语言中定义对象的模板或蓝图。 3.2 对象:对象是类的实例。 3.3 包:包是一种管理类...

    sqoop2 java API从oracle导数据到HDFS开发总结

    - **注意事项**:当在Windows环境下开发时,如果Windows用户名与启动sqoopserver的用户不同,则不能直接在Eclipse中运行程序。这是因为sqoopserver与客户端之间存在认证机制,需确保认证一致。 通过本文档的学习,...

    JAVA学习笔记.docx

    Java 是一种广泛使用的编程语言,本资源摘要提供了 Java 学习笔记的关键要点,涵盖了 Java 主函数解析、Java 学习注意事项、JDK 和 JRE 的区别、变量、运算符、控制结构、数组、排序、面向对象编程、继承、多态、...

    java异常学习总结

    本篇总结了Java异常的基本概念、分类及处理方式等内容,对于从事Java开发的技术人员具有重要的参考价值。 #### 二、Java异常处理机制详解 1. **异常处理的关键字:** Java中的异常处理主要通过`try`、`catch`、`...

    Thinking in Java 中文第四版+习题答案

    A.5.6 固有方法与程序片的注意事项 A.6.1 CORBA基础 A.6.2 一个例子 A.6.3 Java程序片和 A.6.4 比较CORBA与 A.7 总结 附录B 对比C++和 附录C Java编程规则 附录D 性能 D.1 基本方法 D.2 寻找瓶颈 D.2.1 安插自己的...

    JavaSE 基础知识总结

    **14.6 使用互斥锁的注意事项** 使用synchronized关键字或Lock接口提供的显式锁来控制对共享资源的访问。 #### 十四、标准I/O流与文件 **15.1 对文件的操作** 使用File类和相关的输入输出流类来操作文件。 **...

    Java初学者入门教学

    A.5.6 固有方法与程序片的注意事项 A.6 CORBA A.6.1 CORBA基础 A.6.2 一个例子 A.6.3 Java程序片和CORBA A.6.4 比较CORBA与RMI A.7 总结 附录B 对比C++和Java 附录C Java编程规则 附录D 性能 D.1 基本方法 D.2 ...

    java联想(中文)

    A.5.6 固有方法与程序片的注意事项 A.6 CORBA A.6.1 CORBA基础 A.6.2 一个例子 A.6.3 Java程序片和CORBA A.6.4 比较CORBA与RMI A.7 总结 附录B 对比C++和Java 附录C Java编程规则 附录D 性能 D.1 基本方法 D.2 ...

    Java开发环境的搭建——适合初学者

    - **注意事项**:在修改环境变量时,需要注意保持原有路径的完整性,避免删除原有的环境变量路径,同时确保新添加的路径顺序正确。 3. **验证安装** - 打开命令提示符窗口(可以通过搜索框输入“cmd”打开),...

    Java合软工具及教程

    一、Java合软基础概念 1. Java:Java是一种跨平台的编程语言,广泛应用于移动设备,特别是早期的非智能手机。Java ME(Micro Edition)是专门为嵌入式设备和移动设备设计的Java版本。 2. S40平台:诺基亚S40系列是...

    JAVA_Thinking in Java

    A.5.6 固有方法与程序片的注意事项 A.6 CORBA A.6.1 CORBA基础 A.6.2 一个例子 A.6.3 Java程序片和CORBA A.6.4 比较CORBA与RMI A.7 总结 附录B 对比C++和Java 附录C Java编程规则 附录D 性能 D.1 基本方法 D.2 ...

    Java学习手册.

    - **CLASSPATH**:指定Java运行时需要加载的类文件的位置。通常情况下,除了标准的类库外,还可能需要加载第三方库或其他自定义类库。 - **PATH**:包含JDK的bin目录,这样可以直接在命令行中调用Java相关的工具,如...

    Thinking in Java简体中文(全)

    A.5.6 固有方法与程序片的注意事项 A.6 CORBA A.6.1 CORBA基础 A.6.2 一个例子 A.6.3 Java程序片和CORBA A.6.4 比较CORBA与RMI A.7 总结 附录B 对比C++和Java 附录C Java编程规则 附录D 性能 D.1 基本方法 D.2 ...

Global site tag (gtag.js) - Google Analytics