欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > 字符串与基本数据类型的转换和静态非静态的区别

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

2024/12/22 13:42:08 来源:https://blog.csdn.net/wys0127/article/details/140126568  浏览:    关键词:字符串与基本数据类型的转换和静态非静态的区别

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

  • 字符串转基本数据类型

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

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com