Java System.getenv 和 System.getProperty 区别

news2024/9/21 1:17:12

在这里插入图片描述
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
在这里插入图片描述

  • 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~

  • 专栏导航

    • Python系列: Python面试题合集,剑指大厂
    • Git系列: Git操作技巧
    • GO系列: 记录博主学习GO语言的笔记,该笔记专栏尽量写的试用所有入门GO语言的初学者
    • 数据库系列: 详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 运维系列: 总结好用的命令,高效开发
    • 算法与数据结构系列: 总结数据结构和算法,不同类型针对性训练,提升编程思维

    非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

    💖The Start💖点点关注,收藏不迷路💖

    📒文章目录

        • System.getenv()
          • 示例
          • 特点
        • System.getProperty()
          • 示例
          • 特点
        • 比较
        • 选择使用哪一个
        • 一些注意事项


System.getenv()System.getProperty() 是Java中两种不同的方法,用于获取不同类型的环境信息。它们有各自的用途和适用场景。

System.getenv()

System.getenv() 用于获取操作系统的环境变量。环境变量是通过操作系统设置的,它们可以影响应用程序的行为,但它们在Java应用程序启动之后通常不能改变。

示例
public class Main {
    public static void main(String[] args) {
        // 获取环境变量的值
        String path = System.getenv("PATH");
        System.out.println("PATH: " + path);

        String javaHome = System.getenv("JAVA_HOME");
        System.out.println("JAVA_HOME: " + javaHome);
    }
}
特点
  1. 作用范围:环境变量是全局的,通常会在操作系统级别设置,并且可以影响多个进程。
  2. 不可变性:在Java程序运行时,几乎不可能动态改变环境变量的值。
  3. 典型用例:获取系统路径、配置信息、操作系统相关信息等。

System.getProperty()

System.getProperty() 用于获取Java系统属性。系统属性是由Java虚拟机(JVM)维护的,并且通常可以在程序启动时或者运行时通过代码设置。

示例
public class Main {
    public static void main(String[] args) {
        // 获取Java系统属性的值
        String userDir = System.getProperty("user.dir");
        System.out.println("User Directory: " + userDir);

        String javaVersion = System.getProperty("java.version");
        System.out.println("Java Version: " + javaVersion);

        // 设置和获取自定义属性
        System.setProperty("myProperty", "myValue");
        String myProperty = System.getProperty("myProperty");
        System.out.println("My Property: " + myProperty);
    }
}
特点
  1. 作用范围:系统属性是JVM级别的,通常会在JVM启动时设置,并且只影响当前JVM实例。
  2. 可变性:可以在运行时通过System.setProperty()动态改变系统属性。
  3. 典型用例:获取JVM相关信息(例如Java版本、用户目录),配置应用程序行为等。

比较

特性System.getenv()System.getProperty()
作用范围操作系统环境变量,全局作用JVM系统属性,作用于当前JVM实例
典型用例获取操作系统路径、环境配置信息获取JVM相关信息、应用程序配置
可变性运行时几乎不可变可以在运行时动态设置和改变
示例变量PATH, JAVA_HOME, HOSTNAME, COMPUTERNAMEjava.version, user.dir, os.name, 自定义属性

选择使用哪一个

  • 使用 System.getenv() 当你需要访问操作系统级别的环境变量时,例如获取系统路径、用户信息等。
  • 使用 System.getProperty() 当你需要获取或者设置JVM相关的属性时,例如用户目录、Java版本,或者你需要在运行时配置某些属性。

一些注意事项

  • 安全性:访问系统属性和环境变量需要适当的权限。在受限的执行环境(例如Java沙箱)中,这些操作可能会被禁止。
  • 跨平台:某些环境变量和系统属性可能在不同操作系统上有所不同。所以在编写跨平台代码时需要特别注意。

通过理解 System.getenv()System.getProperty() 的区别和用途,你可以更有效地使用它们来获取和操作环境和系统属性信息。


🔥🔥🔥道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

💖The End💖点点关注,收藏不迷路💖

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2107399.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

全新界面,原生Mac和Linux支持的WinBox 4 发布了!

简介 WinBox 4 终于来了!!​ ​ 适用于 Windows、macOS 和 Linux的原生程序。(不需要开wine之类的软件了) 更现代化的软件界面,终于不是上个世纪的风格了。 支持深色模式,不能亮瞎狗眼了。 官方&#…

echarts多个环形图

echarts图表集 var dataValue [{name:今日待分配方量,value:49}, {name:今日已分配方量,value:602}, {name:今日完成方量,value:1037}]var piedata1 [{name: 1#拌和机,value: 20},{name: 2#拌和机,value: 22},{name: 3#拌和机 ,value: 17},{name: 4#拌和机,value: 18},{name…

品牌做渠道开发有何意义,重要性在哪里?

品牌做渠道开发,就是为了把企业的产品和服务,传递给目标消费者,从而建立并维护了一系列的分销渠道。 渠道开发不仅涉及了销售渠道(电商平台、线下实体店、分销商、代理商)等,还包括制定渠道策略&#xff0…

【区块链 + 人才服务】基于 FISCO BCOS 联盟链的电子证书认证平台 | FISCO BCOS应用案例

传统电子证书认证存在一些弊端,比如由于数据权限过于集中,可能存在私自篡改数据的问题,从而导致数据不可信。其次,因为数据存储于中心服务器,存在单点故障或易被不法分子恶意攻击的风险,造成数据完整性的问…

最新!《第七届人力资源共享服务中心研究报告》重磅来袭 | 附下载

9月5日,“ALL IN 2024 人力资源服务展-上海站”在上海跨国采购会展中心隆重举办。展会上,由人力资源智享会(以下简称“智享会”)与法大大联合出版的《第七届人力资源共享服务中心研究报告》正式发布。该报告立足行业变革趋势、对话…

基于Android Studio的行程记录APK开发指南(三)---界面设计及两种方法获取用户位置

前言 本系列教程我们来看看如何使用Android Studio去开发一个APK用于用户的实时行程记录 第一期:基于Android Studio的用户行程记录APK开发指南(一):项目基础配置与速通Kotlin-CSDN博客第二期:基于Android Studio的行程记录APK开发指南(二):…

2024年SRM管理系统盘点合集,助力企业选型!

本文将盘点六款主流的SRM管理系统,助力企业选型! 想象一下这样一个场景,企业的采购部门每天都在为寻找合适的供应商、管理采购订单以及确保物资及时供应而忙碌。如果没有一个有效的 SRM 管理系统,就如同在黑暗中摸索,效…

Transforms的常见用法

文章目录 一、封装函数与普通函数的用法区别二、Image.open()打开图片的格式三、ToTensor打开图片格式四、ToTensor使用五、Normalize归一化使用六、Resize的使用七、Compose - Resize 使用八、RandomCrop() 随机裁剪用法 一、封装函数与普通函数的用法区…

Android Camera系列(二):TextureView+Camera

两岸猿声啼不住,轻舟已过万重山—李白 Android Camera系列(一):SurfaceViewCamera Android Camera系列(二):TextureViewCamera Android Camera系列(三):GLS…

2024霸王餐小程序cps,h5公众号小程序开源版系统搭建开发,外卖霸王餐小程序系统源码

目录 前言: 一、霸王餐小程序的操作是怎么样的? 二、霸王餐系统后台 三、怎么搭建部署? 前言: 霸王餐项目基于美团和饿了么平台开发的小程序。 一、霸王餐小程序的操作是怎么样的? 1、进入小程序后选择自己要下单的店铺&am…

MongoDB 向 PostgreSQL 宣战

上周 MongoDB 发布了一份亮眼的季度财报,盘后股价涨幅超过 18%。 值得一提的是,MongoDB 的 CEO Dev Ittycheria 特别提到 MongoDB 正在借助自己的数据库服务 Atlas 从 PostgreSQL 那里挖角。原话是举了一个博彩网站的例子: “Initially, th…

Hvv结束了,裁员提上日程

《Java代码审计》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484219&idx1&sn73564e316a4c9794019f15dd6b3ba9f6&chksmc0e47a67f793f371e9f6a4fbc06e7929cb1480b7320fae34c32563307df3a28aca49d1a4addd&scene21#wechat_redirect Hvv陆陆续续结…

反常识!科研巨头扎堆夕阳行业?A股研发之王是它?

这是邢不行第 119 期量化小讲堂的分享 作者 | 邢不行 2023年华为研发费用再创新高,高达1600亿。 多年高研发投入让华为在一众领域遥遥领先。 研发费用占全年收入23% 遍观全球,各行各业巨头也极为重视研发。 2022年全球研发投入排名 细数它们的成功史…

严管下快速通道何在?

首先我们要清楚什么是快速通道? 其实就是一句话,是券商为高净值客户提供的一种特殊交易通道。可以提高你的交易速度,但是这里面又细分了很多。 但是VIP通道也就是快速交易通道其实里面还细分了很多种种类的,我们简单区分下&#x…

JavaEE:多线程进阶(CAS)

文章目录 CAS什么是 CASCAS 伪代码 CAS有哪些应用CAS的ABA问题什么是ABA问题ABA问题带来的BUG解决方案 CAS 什么是 CAS CAS: 全称Compare and swap,字面意思:”比较并交换“,一个 CAS 涉及到以下操作: 我们假设内存中的原数据V,旧的预期值A…

【Python报错已解决】`Provisional headers are shown Learn more`

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 引言:一、问题描述:1.1 报错示例:1.2 报错分析:1.3 解决思路&#xff…

软件测试面试如何正确谈薪

又是一波离职高峰,很多小伙伴已经开始投身跳槽的准备中了。大家选择跳槽无非是想增加自己的工资收入,所以面试过程中的谈薪环节就显得尤为重要,谈的好与不好,未来整个的薪资水平都可能受影响。 那面试中,当问到“你的…

SprinBoot+Vue二手回收微信小程序的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue3.6 uniapp代码 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平…

【C++】vector的简单模拟实现

目录 一、vector的基本实现机制: 二、vector的部分接口模拟实现: 1、构造与析构: 1、普通构造: 2、拷贝构造: 3、析构函数: 2、关于扩容: 1、reserve: 2、resize 3、增删查…

SpringCloud开发实战(六):Feign的最佳实践

目录 SpringCloud开发实战(一):搭建SpringCloud框架 SpringCloud开发实战(二):通过RestTemplate实现远程调用 SpringCloud开发实战(三):集成Eureka注册中心 SpringCloud开…