qq_44039494
2021-03-29 10:46 阅读 41
已采纳

为什么要new对象?明明可以直接全都声明为static直接调用啊

今天看了自己做的学生管理系统,发现自己硬是有面向过程编程的程序,反思后,反问自己,为什么java在编程时要new对象,而不直接用static

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

5条回答 默认 最新

  • 已采纳
    qq_37083863 三岁丫 2021-03-29 11:04

    就算你是 static 也是需要 new 的。而且如果把所有的属性都变为 static 的话,会把类让类加载过程变得很慢,让类变得很臃肿。而且你遇到的场景特别的简单,所以可以将全局共享同一个属性,但是如果在并发情况下,如果所有线程共享一个属性,那么就会出问题。

    就比如学生管理系统里面肯定有 Student 的吧,如果你的 Student 中所有的属性都是 static 的话,那么所有的线程都会修改同一个类,就会产生不能预料的结果,所以不是所有的属性都可以设置为 static。

    你能产生这种想法,根本的原因就是业务场景简单、没有思考过并发情况。

    点赞 评论 复制链接分享
  • a1767028198 a1767028198 2021-03-29 11:10

    。。。。

    真不知道老铁你怎么做完你这个学生管理系统的;

    假设学生的姓名属性是static field,通过静态方法设置姓名,第一个叫张三,第二个叫李四,你再去看张三那个对象,他姓名还是张三嘛?

    点赞 评论 复制链接分享
  • DRACULAX05 DRACULAX05 2021-03-29 11:34

    不考虑业务问题,你的想法也是不可行的

    一个在堆空间,一个在栈空间,静态变量存储在栈空间,程序的栈空间是有限的,堆空间要大得多,而且堆有自动回收机制

    点赞 评论 复制链接分享
  • qq_37160824 所爱失吗 2021-03-29 12:38

    学生管理系统,你全弄静态的,那你怎么同时存在两个学生的信息呢

    点赞 评论 复制链接分享
  • zhangxin0w0 BCS-点心 2021-03-29 13:32

    反问一个问题:为什么Java是面向对象的语言?

    点赞 评论 复制链接分享

相关推荐