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

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

  • 字符串转基本数据类型

    • 包装类.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() 不依赖于特定对象的状态,而是通过参数传入的对象来比较它们的速度,适合通用的比较操作。

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

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java小王子呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值