我想知道一下Java里面静态类的定义和非静态的有什么不同?(不是问你内部类)
展开全部
静态类不能实例化,类的成员都要是静态成员和静态方法,
非静态类一般需要实例化后才可以操作,不过接口和抽像类不能直接实例化。
非静态类一般需要实例化后才可以操作,不过接口和抽像类不能直接实例化。
追问
哦,静态类的使用是不是为了防止一些不必实例化成对象的类实例化,节约内存的?
还有,静态代码块和非静态代码块是为了配合类吗?还是?对了,还有,我刚刚测试一个静态类,说类不可静态,这是为什么?
追答
第一 不是为了节约空间,而是定义一个静态变量,引用时不需要先构建这个类的实例,静态变量1处改变就变了 静态变量不会因为类的销毁而发生变化 而局部变量只能在类的实例中使用,一旦类销毁了,那么局部变量也销毁了
第二 静态和非静态的使用不是为了配合类,是配合使用场景,比如 你有个字符串非空判断 aaa!=null&&!aaa.trim().equals("")) 有很多地方需要这样的校验 就可以写成一个static方法 放在stringutil.isBlack()里全局调用,而你有个计算年龄的方法 在用户bean里面调用1次 其他都不调用 那么就可以写一个setAge(String birthDay) 方法 这个是调用次数较少就用局部的方法,变量也一样,比如登陆用户,在应用启动的时候加载 每访问一次就+1 那么就不能用局部的变量,因为同上所说的 局部变量会随着类的销毁而销毁 但是从上述登陆场景,并不想销毁数据,下次登陆还需要重新new一个servlet 重新将这个数据+1 so 用静态的全局变量 类不是具体的实体 类是不可静态的 不过可以用 public static Content c = new Content(); 这样 将类的一个实例进行定义
Storm代理
2023-08-29 广告
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询