`

JAVA 主动调用与被动调用

    博客分类:
  • Java
阅读更多

public class Test {
    static {
        System.out.println("***");
    }
    public static final String a = "sss";

  //final static double a = Math.random();

}
public class Test1 {
    public static void main(String[] args) {
        System.out.println(Test.a);

    }

}
输出为:        sss

Test使用的是Test1的static final修饰的字段,编译时,成为Test常量的一部分,可以认为编译时成为Test自己的,Test1属于被动使用,不会执行初始化代码,所以Test1的static不会被执行。


下面这六种情形符合主动使用的要求:
1 、当创建某个类的新实例时(或者通过在字节码中执行new指令;或者通过不明确的创建、反射、克隆或者反序列化)。
2、当调用某的类的静态方法时(即在字节码中执行invokestatic指令时)。
3、当使用某个类或接口的静态字段,或者对该字段赋值时(即在字节码中,执行getstatic或putstatic指令时),用final修饰的静态字段除外,它被初始化为一个编译时的常量表达式。

类的成员变量在执行期间才能得到值的,访问此成员也可是对此类的主动调用。比如:final static double a = Math.random();  
4、当调用api中的某些反射方法时,比如类class中的方法或者java.lang.reflect包中的类方法。
5、当初始化某个类的子类时,(某个类初始化时,要求它的超类已经被初始化了)
6、当虚拟机启动某个被表明为启动类的类(即含有main方法的那个类)




java虚拟机实现必须在每个类或接口首次主动使用时初始化。
使用一个非常量的静态字段只有当类或者接口的确声明了这个字段的时候才是主动调用;
类中声明的字段可能会被子类引用;接口中声明的字段可能会被子接口或者实现了这个接口的类引用。对于子类、子接口和实现了接口的类来说,就是被动调用--使用它们并不会触发它们的初始化。

分享到:
评论

相关推荐

    调用FtpClient类上传文件(java)

    其他提及的jar文件(如ojdbc14.jar、jsp-api.jar、dom4j-1.6.1.jar、log4j-1.2.14.jar)可能与特定的应用场景有关,但不是直接用于FTP操作。 以下是一个简单的使用`FtpClient`上传文件的Java代码示例: ```java ...

    通过主动和被动扫描自动识别Java和.NET应用程序中的反序列化问题

    本文将深入探讨Java和.NET应用程序中的反序列化问题,并提供主动和被动扫描的方法来检测这些问题。 首先,理解反序列化漏洞的基础是关键。当一个应用程序接受来自不可信源的序列化数据时,如果没有正确地验证这些...

    Java实现调用FTP进行上传下载

    通过以上步骤,您现在应该了解了如何使用Java调用FTP进行文件的上传和下载。这个过程不仅可以应用于单个文件,还可以扩展为批量操作,例如遍历目录并将所有文件上传或下载。理解并熟练掌握这些基本操作对于任何涉及...

    java 调用ftp上传、下载文件到服务器

    在Java编程中,FTP(File ...总之,通过Java调用FTP服务进行文件上传和下载是一个常见的任务,可以通过Apache Commons Net等库轻松实现。理解这些基本步骤和概念将有助于你在实际项目中更高效地管理远程文件系统。

    java调用ftp服务端实现上传文件

    Java调用FTP服务端实现文件上传是网络编程中常见的任务,尤其在文件共享、数据迁移等场景下。FTP(File Transfer Protocol)是一种基于TCP协议的文件传输协议,它允许客户端和服务器之间进行文件的上传和下载。在这...

    浅谈Java中对类的主动引用和被动引用

    浅谈Java中对类的主动引用和被动引用 Java 中的类引用可以分为两种:主动引用和被动引用。理解这两种引用机制对于 Java 程序的正确执行和优化至关重要。 一、主动引用 主动引用是指在 Java 程序中明确地使用某个...

    JMS调用IBM MQ监听模式

    标题“JMS调用IBM MQ监听模式”涉及的是Java消息服务(Java Message Service,简称JMS)与IBM WebSphereMQ(通常简称为IBM MQ)之间的交互,特别是在消息监听模式下的应用。这种模式允许应用程序被动地接收来自MQ的...

    ftpclient和servlet调用

    FTPClient还支持被动模式,这对于通过防火墙或NAT进行文件传输非常有用。 Servlet是Java Web应用程序的一部分,它负责处理HTTP请求并生成响应。在Web服务器中运行,Servlet可以处理用户的各种交互,包括文件上传和...

    基于java的FTP客户端设计与实现

    本项目"基于Java的FTP客户端设计与实现"旨在利用Java语言构建一个能够连接到FTP服务器,实现登录、文件上传和下载等功能的客户端程序。 首先,要实现FTP客户端,我们需要理解FTP的工作原理。FTP基于TCP/IP协议,...

    java编写的FTP客户端程序

    5. **被动模式与主动模式**:FTP有两种传输模式,主动模式和被动模式。主动模式中,服务器主动建立数据连接,而被动模式中,客户端建立数据连接。Java FTPClient默认使用被动模式,更适用于防火墙和NAT环境。 6. **...

    java API操作FTP上传下载

    FTP有两种工作模式:主动模式(Active)和被动模式(Passive)。被动模式适用于防火墙或NAT环境,通常推荐使用。可以调用`setPassiveMode(true)`来开启被动模式。 3. **文件上传**: 使用`FTPClient`的`storeFile...

    JAVA本地监听与远程端口扫描(源代码+论文).zip

    这是一个被动的过程,因为服务器等待客户端的主动连接。 远程端口扫描则涉及到从一台计算机(扫描器)向另一台计算机(目标)发送网络请求,以确定哪些端口是开放的。这是网络安全评估、漏洞检测和系统审计中常用的...

    java ftp 下载 源程序 FTPClient

    FTPClient是一个流行的Java库,它提供了与FTP服务器交互的接口,使得开发者能够轻松地执行各种FTP操作。下面将详细阐述Java FTP下载的基本原理、FTPClient库的使用方法以及如何实现FTP文件下载。 FTP是一种标准的...

    Javaftp 客户端

    4. **主动模式与被动模式**:FTP有两种工作模式,主动模式下,服务器主动建立数据连接;被动模式下,客户端创建数据连接,常用于防火墙或NAT环境。 5. **文件传输模式**:ASCII模式和二进制模式,前者用于文本文件,...

    java实现ftp文件的上传、下载、删除源码

    2. **主动模式与被动模式**: FTP有两种工作模式:主动模式和被动模式。主动模式下,服务器主动发起数据连接,而被动模式则由客户端创建数据连接。在Java中,可以通过`setPassiveMode(true)`切换到被动模式,这在...

    java Ftp上传下载

    7. **被动模式与主动模式**:FTP有两种模式,被动模式和主动模式。被动模式适合防火墙或NAT环境,服务器会提供一个随机端口给客户端连接,而主动模式则是客户端主动连接服务器指定的数据端口。 8. **异常处理**:...

    Java实现的FTP连接与数据浏览程序

    5. **被动模式与主动模式**:FTP有被动模式和主动模式两种数据传输模式。主动模式中,FTP客户端打开一个数据连接到服务器;而在被动模式下,服务器打开一个数据连接到客户端。被动模式常用于防火墙或NAT环境,以解决...

    JAVA实现FTP协议中的服务器和客户端\\

    FTP有两种工作模式:主动模式和被动模式,主要区别在于数据连接的建立方式。 Java提供了一个名为`java.net.Socket`的类来处理网络连接,但直接使用它并不能直接实现FTP协议。因此,我们需要使用第三方库或Java内置...

    Java实现FTP文件上传和下载

    总结,Java实现FTP文件上传和下载涉及的主要知识点包括:FTP协议基础,Apache Commons Net库的使用,FTPClient对象的配置与操作,以及相关的文件流处理和错误处理机制。理解并熟练掌握这些内容,将有助于你在实际...

    SDK对接解码器接口调用及Demo使用流程(宇视科技).pdf

    SDK 对接解码器接口调用及 Demo 使用流程 本文档主要介绍了宇视科技的 SDK 对接解码器接口调用及 Demo 使用流程,旨在帮助开发者快速了解和使用宇视科技的 SDK 产品。 一、 接口调用流程 SDK 对接解码器接口调用...

Global site tag (gtag.js) - Google Analytics