关于static

本文解析了Java中主函数main为何被定义为静态(static)的原因,以及static关键字在类中的运用方式。阐述了静态方法无需实例化即可直接调用的优势,并解释了在不同场景下使用静态与非静态方法的区别。
static 静态,一上来就装入内存 
     main函数其实也是所在类的一个方法,就比如一个类是test,那么该类的main其实就是test.main(String[] args),众所周知如果一个方法不是静态的,则要先实例化该类,比如要这样 test t=new test(); 然后才能调用 test.main(); 
而这对于运行一个程序的主函数来说是不现实的,所以比如把main函数定义为static,使test.main()可以直接被调用。 

因为main就是这个类的主函数,入口,如果每次进这个入口的时候再去实例话然后再去调用这个入口方法,就很罗嗦 。

那么,为嘛这个类中的其他方法有些加了static,有些没加呢?

关于static ,main方法是static静态的(上面已经解释为什么了),只允许调用静态的方法,要么就是通过类去实例化一个对象去调用它的非静态方法。加上static只是为了方便调用,不加也无所谓。


此文个人笔记防老年痴呆。。。



### C++ `static_cast` 的使用方法及注意事项 #### 使用场景 `static_cast` 主要用于基本类型的转换以及具有继承关系的类之间的向上和向下转型。这种转换在编译期完成,因此效率较高[^3]。 #### 基本类型间的转换 当需要将一种数值类型转换成另一种时可以采用此方式: ```cpp int main() { double d = 10.7; int i = static_cast<int>(d); // 将double转为int, 结果i=10 float f = 98.6f; char c = static_cast<char>(f); // 浮点数到字符的转换 } ``` #### 指针或引用间的基础转换 对于存在父子关系的对象指针或者引用来说,也可以利用 `static_cast` 实现相互之间合理的转变: ```cpp class Base {}; class Derived : public Base {}; Derived derivedObj; // 向上转型总是安全的 Base& baseRef = static_cast<Base&>(derivedObj); // 下向转型需谨慎处理 Derived& anotherDerived = static_cast<Derived&>(baseRef); ``` 需要注意的是,在上述例子中如果 `baseRef` 并不真正指向一个 `Derived` 对象,则会发生未定义的行为。所以在不确定的情况下应该优先考虑使用 `dynamic_cast` 来代替 `static_cast` 完成此类操作[^4]。 #### 用户自定义类型转换 除了内置数据类型外,还允许程序员通过构造函数或是显式的转换运算符来指定如何实现两个不同类实例间的互换逻辑。此时同样适用 `static_cast` : ```cpp struct Distance { public: explicit Distance(int meters_) :meters(meters_){} operator string () const {return to_string(meters)+" m";} private: int meters; }; Distance dist(5); string strDist = static_cast<string>(dist); // 调用了Distance::operator string() ``` #### 注意事项 - **安全性**: `static_cast` 只能在相关联的数据类型间工作;尝试非法的操作会引发编译错误而不是运行异常。 - **无运行时检查**: 大部分情况下它只做简单的位模式复制而没有任何额外验证机制,这意味着一旦发生误用就可能造成难以追踪的问题。 - **避免过度依赖**: 应尽可能设计良好的接口以减少对类型转换的需求,因为频繁地运用它们往往暗示着程序结构存在问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值