字符串与基本数据类型的转换和静态非静态的区别

news2024/7/4 21:49:42

字符串与基本数据类型的互转

  • 字符串转基本数据类型

    • 包装类.parseXxx(字符串)

      注意:

      除了char类型之外,其他7个包装类都有parseXxx开头的方法,可以将字符串转成相应的基本数据类型;

      例如:Integer类中有parseInt;

      Double类中有parseDouble;

      ......

  • 基本数据类型转字符串

    • String.valueOf(基本数据类型);

静态示例:
public class TestController {

    public static void main(String[] args) {

        zhuanHuan();

    }


    //基本数据类型和字符串的互相转换
    public static void zhuanHuan(){
        String s = "123";
        int i = 222;

        String is = String.valueOf(i);
        System.out.println(is);

        int si = Integer.parseInt(s);
        System.out.println(si);
    }


}

上面代码 zhuanhuan 方法是静态方法,那么不用static可行吗?

非静态示例:
public class TestController {

    public static void main(String[] args) {
        TestController tc = new TestController();
        tc.zhuanHuan();
    }

    // 基本数据类型和字符串的互相转换
    public void zhuanHuan() {
        String s = "123";
        int i = 222;

        String is = String.valueOf(i);
        System.out.println(is);

        int si = Integer.parseInt(s);
        System.out.println(si);
    }
}
结果:

以上两种方式都可以使代码正常运行,并输出:

222

123

静态和非静态方法的区别是什么?

静态方法和非静态方法在Java中有几个显著的区别,主要涉及到它们的调用方式、内存分配和访问权限等方面:

  1. 调用方式

    • 静态方法通过类名直接调用,例如 ClassName.methodName()。在静态方法内部,不能直接访问类的实例变量和实例方法,因为它们是与类本身关联而非特定实例。
    • 非静态方法则需要通过对象实例来调用,例如 objectName.methodName()。非静态方法可以直接访问类的实例变量和其他非静态方法。
  2. 内存分配

    • 静态方法在类加载的时候就被加载到内存中,随着类的加载而加载,可以通过类名直接访问。
    • 非静态方法属于对象级别,只有在创建对象实例后,才会分配内存给非静态方法,通过对象实例来访问。
  3. 访问权限

    • 静态方法可以访问类中的静态成员(静态变量和静态方法),但不能直接访问类的非静态成员。因为静态方法在类加载时已经存在,而非静态成员是属于对象的。
    • 非静态方法可以访问类中的所有成员,包括静态成员和非静态成员。
  4. 设计用途

    • 静态方法通常用于工具类、辅助类中的方法,这些方法不依赖于对象的特定状态,仅仅根据传入的参数进行操作。
    • 非静态方法通常用于描述对象的行为或状态变化,依赖于对象的实例变量。

总结来说,选择使用静态方法还是非静态方法取决于你的需求和设计目标:静态方法适合不依赖于对象实例状态的通用操作,而非静态方法则适合于需要访问和修改对象状态的情况。

示例:

假设我们有一个 Car 类,每个汽车对象有自己的品牌和当前速度。我们可以定义两种方法来比较静态方法和非静态方法的用法:

public class Car {
    private String brand;
    private int speed;

    // 构造方法
    public Car(String brand, int speed) {
        this.brand = brand;
        this.speed = speed;
    }

    // 非静态方法:加速
    public void accelerate(int amount) {
        this.speed += amount;
        System.out.println(this.brand + " 加速后速度为 " + this.speed);
    }

    // 静态方法:比较两辆车的速度
    public static void compareSpeed(Car car1, Car car2) {
        if (car1.speed > car2.speed) {
            System.out.println(car1.brand + " 的速度更快");
        } else if (car1.speed < car2.speed) {
            System.out.println(car2.brand + " 的速度更快");
        } else {
            System.out.println(car1.brand + " 和 " + car2.brand + " 的速度相同");
        }
    }

    public static void main(String[] args) {
        Car car1 = new Car("Toyota", 100);
        Car car2 = new Car("Honda", 120);

        // 调用非静态方法
        car1.accelerate(20);
        car2.accelerate(10);

        // 调用静态方法
        Car.compareSpeed(car1, car2);
    }
}

在这个例子中:

  • Car 类有两个实例变量 brand 和 speed,分别表示汽车的品牌和当前速度。
  • accelerate(int amount) 方法是一个非静态方法,它修改了当前汽车对象的速度,并输出加速后的速度信息。
  • compareSpeed(Car car1, Car car2) 方法是一个静态方法,用于比较两辆车的速度,并输出比较结果。

main 方法中,我们创建了两辆车 car1car2,分别是 Toyota 和 Honda,初始速度分别是 100 和 120。然后我们调用了它们的非静态方法 accelerate() 来加速,并调用了静态方法 compareSpeed() 来比较它们的速度。

这个例子展示了静态方法和非静态方法的不同用法和调用方式:

  • 非静态方法 accelerate() 可以直接访问和修改对象的实例变量(速度),适合描述对象的行为(汽车加速)。
  • 静态方法 compareSpeed() 不依赖于特定对象的状态,而是通过参数传入的对象来比较它们的速度,适合通用的比较操作。

这种区分使得代码更具有结构性和灵活性,能够更好地描述对象的行为和类级别的操作。

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

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

相关文章

Unity 动画事件

Unity中的动画事件是一种在动画播放过程中触发自定义行为的方法。动画事件允许开发者在动画的特定时间点执行代码&#xff0c;例如播放声音、改变游戏状态或触发其他动画。以下是使用Unity动画事件的一些关键点&#xff1a; 动画事件的创建&#xff1a;在Unity的Animation窗口…

Hadoop3:Yarn的Tool接口案例

一、需求 依然以wordcount案例为基础&#xff0c;进行开发 我们知道&#xff0c;用hadoop自带的example.jar执行wordcount 命令如下 hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount -D mapreduce.job.queuename…

973. 最接近原点的 K 个点-k数组维护+二分查找

973. 最接近原点的 K 个点-k数组维护二分查找 给定一个数组 points &#xff0c;其中 points[i] [xi, yi] 表示 X-Y 平面上的一个点&#xff0c;并且是一个整数 k &#xff0c;返回离原点 (0,0) 最近的 k 个点。 这里&#xff0c;平面上两点之间的距离是 欧几里德距离&#…

【Rust入门教程】hello world程序

文章目录 前言Hello World程序运行总结 前言 对于学习任何一种新的编程语言&#xff0c;我们都会从编写一个简单的Hello World程序开始。这是一个传统&#xff0c;也是一个开始。在这篇文章中&#xff0c;我们将一起学习如何在Rust中编写你的第一个程序&#xff1a;Hello Worl…

干货分享|如何将前端代理服务器(BFF)接入身份认证(2)

续集2 前篇文章在前面发布&#xff0c;同学们可以自行找一下。 本篇文章将继续通过实例来详细讲解如何将前端代理服务器&#xff08;BFF&#xff09;接入身份认证。我们将使用一个示例应用来演示 BFF 与身份认证的集成过程。 1&#xff09;在 Keycloak 中新建一个安全领域 …

红队工具Finger 安装具体以步骤-示例centos

1.git clone https://github.com/EASY233/Finger.git 如果没有 yum install git 2.pip3 install -r requirements.txt 找到finger所在的文件夹 可以用find -name "Finger"进入文件中配置命令 前提要安装python yum install python-pip33.python3 Finger.py -h

中国AI产业迎来标准化大跃进,程序员们准备好了吗

中国AI产业迎来标准化大跃进&#xff0c;程序员们准备好了吗&#xff1f; 程序员们&#xff0c;你们是否已经感受到了人工智能技术的浪潮&#xff1f;现在&#xff0c;中国工信部联合其他部门发布了《国家人工智能产业综合标准化体系建设指南&#xff08;2024版&#xff09;》&…

龙迅LT8641UXE HDMI四进一出切换开关,支持标准HDMI 2.0内置MCU

龙迅LT8641UXE描述&#xff1a; Lontium LT8641UX HDMI2.0开关具有符合HDMI2.0/1.4规范的4&#xff1a;1开关&#xff0c;最大6Gbps高速数据速率&#xff0c;自适应均衡RX输入和预先强调的TX输出支持长电缆应用&#xff0c;没有XTAL板上节省BOM成本。LT8641UX HDMI2.0开关自动…

如何获取音频伴奏

如何获取音频伴奏 在今天的互联网上,有许多好听的音乐.面对这些音乐,我们有时需要伴奏音频,许多音频在网站上可以查找到,但有些不行,今天,我们要通过audacity软件截取音频伴奏. 下载audacity软件 audacity-64.exe 访问密码&#xff1a;8221 或官方网站(访问较慢) 选择简体…

LLM指令微调Prompt的最佳实践(二):Prompt迭代优化

文章目录 1. 前言2. Prompt定义3. 迭代优化——以产品说明书举例3.1 产品说明书3.2 初始Prompt3.3 优化1: 添加长度限制3.4 优化2: 细节纠错3.5 优化3: 添加表格 4. 总结5. 参考 1. 前言 前情提要&#xff1a; 《LLM指令微调Prompt的最佳实践&#xff08;一&#xff09;&#…

时序约束(二): input delay约束和output delay约束

一、input delay约束 在千兆以太网数据收发项目中&#xff0c;RGMII的数据输入方式为DDR&#xff0c;源同步输入方式&#xff0c;可以用之前提到的分析模型进行约束。 在时序约束原理中我们提到&#xff0c;input delay约束的就是发射沿lunch到数据有效的延时&#xff0c;根据…

本地项目推送到gitlab仓库的保姆级教程

目录 1、安装git &#xff08;1&#xff09;Windows系统 &#xff08;2&#xff09;Linux系统 2、gitlab创建空白项目 3、创建密钥 4、将密钥添加到gitlab中 5、远程配置 &#xff08;1&#xff09;配置全局的用户和邮箱 &#xff08;2&#xff09;本地文件夹初始化 …

Rust: polars行遍历,从dataframe到struct及Bar设计比较

pandas提供了iterrows()、itertuples()、apply等行遍历的方式&#xff0c;还是比较方便的。 polars的列操作功能非常强大&#xff0c;这个在其官网上有详细的介绍。由于polars底层的arrow是列存储模式&#xff0c;行操作效率低下&#xff0c;官方也不推荐以行方式进行数据操作。…

序号不足两位前面补0

预期目标 原始效果 代码实现 {${(index 1).toString().padStart(2, 0)}. ${item.sentence}}要实现自动编号并确保显示为两位数的格式&#xff0c;可以在 {index 1} 的地方进行格式化。在 JavaScript 中&#xff0c;可以使用 String.prototype.padStart() 方法来补足数字到指定…

Webpack: Loader开发 (1)

概述 如何扩展 Webpack&#xff1f;有两种主流方式&#xff0c;一是 Loader —— 主要负责将资源内容翻译成 Webpack 能够理解、处理的 JavaScript 代码&#xff1b;二是 Plugin —— 深度介入 Webpack 构建过程&#xff0c;重塑 构建逻辑。 相对而言&#xff0c;Loader 的职责…

三个方法教大家学会RAR文件转换为ZIP格式

在日常工作当中&#xff0c;RAR和ZIP是两种常见的压缩文件格式。有时候&#xff0c;大家可能会遇到将RAR文件转换为ZIP格式的情况&#xff0c;这通常是为了方便在特定情况下打开或使用文件。下面给大家分享几个RAR文件转换为ZIP格式的方法&#xff0c;下面随小编一起来看看吧~ …

如何通过指纹浏览器使用代理IP?

1.指纹浏览器定义 指纹浏览器是 一种浏览器技术&#xff0c;它根据用户设备的硬件、软件和配置等特征生成唯一标识符&#xff08;称为“指纹”&#xff09;。此指纹用于识别和追踪用户身份&#xff0c;即使用户更改其 IP 地址或清除浏览器数据&#xff08;如缓存和 Cookie&…

美国抗攻击服务器有哪些可靠的解决方案

美国抗攻击服务器在面对日益严重的网络安全威胁时&#xff0c;需要采取一系列可靠的解决方案来确保服务器的稳定运行和数据安全。以下是一些科普性质的抗攻击服务器解决方案&#xff1a; 一、流量清洗与过滤 流量清洗是美国抗攻击服务器应对DDoS攻击的重要措施。当检测到异常流…

助力构建新型电力系统自主可控实时底座

近日&#xff0c;2024亚洲新型电力系统及储能展览会&#xff06;亚洲新型电力及储能论坛会在广州广交会展馆圆满落下帷幕&#xff01;科东软件携多款电力产品亮相展会,并在2024亚洲新型电力及储能论坛发表《“鸿道Intewell操作系统助力构建新型电力系统自主可控实时底座”》的主…

机器学习-EM算法

目录 一:最大似然估计 二:EM算法 加入隐变量 EM算法推导 1.Jensen不等式 点个赞呗!!! 一:最大似然估计 举个栗子:一个袋子里有很多个球,每次放回的取一个球,取了十次,其中有六次白球,4次黑球。那么就认为袋子里面取到白球的概率为6/10,黑球的概率为4/10。…