- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
例子:
System.out.println(new Date());
现在显然这是一个更大程序的一部分,但您可以看到它的作用。现在,我运行一次编译器,然后运行程序。然后,无需再次编译程序,我运行它并更新日期。这可能看起来很愚蠢,但是如何在不更新字节码的情况下更新日期呢?
根据我对所读内容的理解,Java 编译器获取我的源代码并将其编译为字节码,该字节码保存在类文件中。 JIT 将此代码转换为机器代码并运行。但是,Date 对象的状态不会保持不变吗?显然不是。我只是对它如何变化感到困惑。
最佳答案
Answer by Mureinik是正确的。在您的代码中定义的对象在 run-time 处构造, 不是 compile-time .
Compilation就像让工程师审查建筑师的建筑计划,然后写出更详细的规范。尚未 build 建筑物。我们现在已经完全准备好 build ,但直到施 worker 员到达现场的“运行时”,我们才真正 build 任何东西。
在这个比喻中,您的 source code是建筑师的图纸。工程师更详细的规范是bytecode由 Java 编译器发出。 JVM运行你的应用程序的字节码是施 worker 员去现场工作。
另一种思考方式:
此外,您永远不应该使用 Date
类。该类和最早版本的 Java 中的其他遗留日期时间类很糟糕,充斥着糟糕的设计选择。多年前,现代 java.time 类取代了它们。
java.time 类使用 factory methods用于实例化而不是 constructors和 新
。
Instant.now() // Capture current moment in UTC.
OffsetDateTime.now( ZoneOffset.UTC ) // Capture current moment in UTC.
ZonedDateTime.now( ZoneId.of( "Africa/Casablanca" ) ) // Capture current moment as seen though the wall-clock time used by the people of a particular region (a time zone).
LocalDate.of( 2018 , Month.JANUARY , 23 ) // A date-only value, without time-of-day and without time zone.
关于java - Java 中如何在不重新编译程序的情况下更新 Date 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53244770/
这个问题在这里已经有了答案: multiple definition error c++ (2 个答案) 关闭 3 年前。 我遇到了一些编译问题,这里是详细信息: 假设我声明了一些数据结构 my_d
我正在尝试使用 lessfs 并了解它如何使用 mhash 来生成其加密指纹,所以我正在查看 mhash 以了解它如何处理哈希算法,因此我正在尝试运行中提供的一些示例程序,但我遇到了并发症和错误 我试
所以我有一个编译程序,但我有两个小问题。该程序将十六进制转换为十进制和二进制,并将其显示在这个可爱的小 GUI 中。 问题: 我想将二进制文件放入一个数组中,然后在连续的 5 个小框窗口之间传输。转换
这可能是一个很难用我实际提供的信息进行故障排除的问题,但我希望有人至少能够为我指出一个可能的方向。 我正在尝试安装 HTK ( http://htk.eng.cam.ac.uk/ ),根据 this页
我用客户端松鼠在oracle 11g中创建了一个简单的过程,这是代码 create or replace procedure EXAMPLE_P is begin 1+2; end;/ 在执行
$2有 C 文件的路径。 问题是当我编译一个有错误的文件时,它会显示错误。我不想显示错误,我只想说:“$2 无法编译。”有什么想法吗? cc $2 if test ! $? = 0
我使用安装了 Advanced Tomato 的华硕路由器(基于 ARMv7 proc)在它上面作为我的 ARMv7 开发者平台。我安装编译器 (gcc - 5.4.0-1)加上来自 OpenWRT
我想在 Linux 上用 twitter 库编译一个 C++ 程序。 我目前使用 twitcurl 作为 twitter API 库并安装了 g++ 以及官方网站上列出的所有必要文件和包:http:/
我正在尝试编译使用 libdl 库中的 API 的示例代码: #include #include #include int main(int argc, char **argv) { v
我看到很多人提示 -O3 选项: GCC: program doesn't work with compilation option -O3 Floating Point Problem provid
有如下代码: #include #include int main(void){ CURL *curl; CURLcode res; curl = curl_easy_init();
我们有一个非常重要的应用程序,但到目前为止还没有源代码。该应用程序是用 COBOL 编写的,编译版本在我们的生产系统中并正在运行。 但是,我们需要迁移到新服务器和新的 cobol 编译器。我们的印象是
我正在尝试使用一些 curl 代码来测试库,但我无法编译它:( 我正在使用 Clion (Cmake + gcc),我有一个 libcurl.a、一个 libcurl.dll 和一个 libcurl.
我使用 mingw(Windows 8 64 位,MinGW 20120426)在 Windows 上用 clang 构建了 llvm: ./configure --disable-docs --en
我在 ubuntu 下写了一个程序,其中包含 gtkmozembed.h。我在编译程序时遇到问题。下面是使用 gtkmozembed 的程序的最简单形式。 #include #include #i
我在 Ubuntu 上使用 GNAT 编译了一个 Ada 程序。 之后,我尝试使用该程序进行几次测试,它运行正常。 但是当我将它上传到我的 Apache (UNIX) 网络服务器并尝试运行该程序时,没
我正在尝试通过批处理文件使用 MinGW 编译器运行我的程序。但是当我尝试启动它时,它什么也没说。 代码如下: g++ -o Learning.exe Main.o pause 当我打开 .exe 文
我在 Windows 8 计算机 (x64) 上使用 VS2012 编写了一个 Windows 窗体应用程序,我希望它在 Windows XP x86 上运行。当我尝试运行该程序时出现错误“...不是
我在运行 ArchLinux 的系统上使用 clang 版本 4.0.0,它一直运行良好,但最近我无法再编译使用某些 STL header 的程序了! 详细信息: clang --version 的输
我有程序 main.cpp 调用其他 C++ 程序 file1.cpp、file2.cpp 和 message.txt 请问如何使用 g++ 在 Linux Ubuntu 中编写编译命令,主要不是“v
我是一名优秀的程序员,十分优秀!