构造方法都是隐式的static方法吗?

QFaArfWk3FrPzvz 2015-05-28 09:50:01
那如果一个java程序有很多很多类,那static的方法岂不是一上来就要占用内存空间,难道程序启动的时候不会很慢吗?
...全文
1113 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
寸辰 2018-07-05
  • 打赏
  • 举报
回复
Class的装载包括3个步骤:加载(loading),连接(link),初始化(initialize)
static 阶段是属于 link阶段,而且你要明白一个事情,静态化的是方法的内容而非方法的执行

之前详细讲过这个问题
https://blog.csdn.net/cun_chen/article/details/50363149
北漂的菜小白 2018-07-04
  • 打赏
  • 举报
回复
程序启动都是这样加载的啊,类多可能会慢点吧,对JVM进行调优也许能会加快启动
北漂的菜小白 2018-07-03
  • 打赏
  • 举报
回复
我也是个新手,看到了就参与下讨论,可能不太对,构造方法是对对象进行初始化的,但他不是静态块,静态块对所有的static修饰的属性、方法、类进行初始化,而且构造方法是new一个对象,他每次生成对象的内存地址都是不同的,静态块初始化的类,方法,或者属性,只有一个内存地址,只要有权限,都可以访问,但是使用者A改变这个内存地址所对应的值以后,使用者B访问时,就是改变后的值了
verejava 2018-07-03
  • 打赏
  • 举报
回复
Java 面向对象 之 构造方法

http://www.verejava.com/?id=16992731753535
walkuere 2018-07-03
  • 打赏
  • 举报
回复
你在第一次接触一个类的时候,会对static变量赋值初始化,如果赋值是函数还会执行,在创建该类第一个对象之前
  • 打赏
  • 举报
回复
再多的static也并不会拖慢多少启动速度,计算金运算速度多快啊,,,
zhiyuan_v587 2018-06-22
  • 打赏
  • 举报
回复
使用static修饰的方法或者属性,是全类共有的,属于类信息,被加载在 方法区,只会加载一次。
使用new 关键字创建的实例,一般会在堆空间创建,常量池技术除外。
matthew_leung 2018-06-21
  • 打赏
  • 举报
回复
并不是,使用static关键字的都无法进行实例化,所以每一个类的构造方法都不是隐式static关键字的。
如果他使用了static关键字就无法是用new关键字了啊
这样一来不就冲突了吗?
static 关键字修饰的方法直接被一般方法调用,但是一般方法是通过对象实例化调用。
a363722188 2018-06-21
  • 打赏
  • 举报
回复
引用 3 楼 sen_linzhiwang 的回复:
[quote=引用 2 楼 finemi 的回复:]
谁给你说的构造方式是static的,构造方法是用于初始化对象的,当实例化类为一个对象时才会调用构造方法。

另外有静态块,同样用来做初始化的工作的,但是他也不是程序一启动就执行的,而是当你实例化一个类或者调用类的某个静态成员时执行

正是如此,只会实例化是才会调用执行。[/quote] 明明说了 实例化或者被调用的时候 好不好
a363722188 2018-06-21
  • 打赏
  • 举报
回复
引用 2 楼 finemi 的回复:
谁给你说的构造方式是static的,构造方法是用于初始化对象的,当实例化类为一个对象时才会调用构造方法。

另外有静态块,同样用来做初始化的工作 的,但是他也不是程序一启动就执行的,而是当你实例化一个类或者调用类的某个静态成员时执行


你理解的很透彻呢!
weixin_41404782 2018-06-19
  • 打赏
  • 举报
回复
静态方法启动时就占用空间,非静态方法启动时就不占用空间?你要搞清楚的是,方法本身占用的空间,和方法运行产生的空间占用。
结贴是美德 2018-06-15
  • 打赏
  • 举报
回复
1、为啥有些资料中说构造方法是“隐式”静态的呢? 因为不需要实例,你就调用了这个类的这个方法。从这一点上来说,构造方法“像”静态方法。 2、送你一个我个人的经验 不要轻信、揣测编译器、运行时的逻辑,除非你看到了官方、正经的资料。
stacksoverflow 2018-06-13
  • 打赏
  • 举报
回复
参考 https://blog.csdn.net/ForWayfarer/article/details/2170672
Abel花生 2018-06-13
  • 打赏
  • 举报
回复
构造器可以理解隐式静态,但他不是静态方法。所以将构造器翻译成构造方法不太对
L猫 2015-05-28
  • 打赏
  • 举报
回复
构造方法能设置成静态的吗? class A1{ static A1(){ } }会报错啊?
王者_来归 2015-05-28
  • 打赏
  • 举报
回复
引用 2 楼 finemi 的回复:
谁给你说的构造方式是static的,构造方法是用于初始化对象的,当实例化类为一个对象时才会调用构造方法。 另外有静态块,同样用来做初始化的工作的,但是他也不是程序一启动就执行的,而是当你实例化一个类或者调用类的某个静态成员时执行
正是如此,只会实例化是才会调用执行。
finemi 2015-05-28
  • 打赏
  • 举报
回复
谁给你说的构造方式是static的,构造方法是用于初始化对象的,当实例化类为一个对象时才会调用构造方法。 另外有静态块,同样用来做初始化的工作的,但是他也不是程序一启动就执行的,而是当你实例化一个类或者调用类的某个静态成员时执行
alan19931103 2015-05-28
  • 打赏
  • 举报
回复
遇到一个类加载一个类

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧