1. java中静态类能否实例化
静态类,一般使用在某个类的内容,简称静态内部类。
静态Static又有全局的意思,对于一般的public定义的外部类,没有必要static关键词,因为可以直接导入包得到该类的引用(只是在访问其非静态成员时需要实例化它);
而在一个类内部定义另一个类,如果该内部类不是静态的,需要实例化它,就得先有一个外部类的对象,
如:public class A{
public class B{}
}
实例化B:
A a = new A();
B b = a.new B();
如果B是静态的(全局的),即如下:
public class A{
public static class B{}
}
实例化B:
B b = A.new B();或者B b = new A.B();
2. Java中单例模式和静态类的区别
单例模式:
在框架中通过反射机制在程序运行时由框架生成一个类的实例,该实例是由框架负责维护;当然我们自己也可以实例化这个类,此时我们自己实例化的对象和框架维护的实例是互不影响的;
类的实例对象是由引用指向堆中保存的,单例是由框架中的引用指向堆中的一个实例,而我们自己创建的对象是另一个指向堆中的实例两个互不干扰;但是在使用起来,我们在不同地方改变单例全局的单例都变了,看起来好像静态一样但是实际上我们使用的只不过都是框架维护的一个实例而已;
举例:
@Component
publicclassPerson{
privateStringname;
PrivateIntegerage;
//getset方法...省略不想写;
}
在框架启动时,我们就获得了一个Person类的实例,这个实例由框架内部一个引用指向,在程序使用时我们只需把地址赋于需要的地方,也就是说实际上大家用的都是一个对象;
就在这时,我们自己开心的new 了一个Person对象;此时我们通过set方法改变该对象不影响其他指向单例对象的变量;
静态类:
首先java中的静态类指的大多数是内部类;作为一个成员变量它静态才有意义,此时无论程序中的任何部分调用了该静态类的外部类,并通过方法改变了内部类的数据;此时该程序中的所有该内部类的实例都改变了,互相影响;因为静态变量是存储在方法区内的,而且就一份,无论谁使用该静态变量都是去方法区查询该对象的状态,所以互相干扰;
3. java的静态类型有什么特点
静态属性:随着类的加载而加载,该属性不属于某个对象,属于整个类
静态方法:直接使用类名调用,静态方法里不能访问非静态成员变量
静态类:不能直接创建对象,不可被继承
4. java 静态类和非静态类的区别
静态类和非静态类的主要区别:
主要区别在于静态类不能实例化,静态类编译器能够执行检查确保不是偶然的添加实例成员,C#编译器会自动把它标记为sealed,静态类中不能创建非静态的方法,即静态方法中只能创建静态方法,但在非静态类中可以调用静态方法。
静态类的主要特性:
1:仅包含静态成员。
2:无法实例化。
3:是密封的。
4:不能包含实例构造函数。
5:非静态类可以包含静态的方法、字段、属性或事件;
6:静态方法和属性不能访问其包含类型中的非静态字段和事件
7:静态方法只能被重载,而不能被重写,因为静态方法不属于类的实例成员;
8:C# 不支持静态局部变量(在方法内部定义静态变量)。
非静态类在使用时必须要实例化,每次使用时都要进行实例化,一般情况下使用比较频繁的类,可以使用静态类,比如LogClass,ConfigClass等等。
5. java中静态类和动态类的区别的什么
区别如下:
static 表示静态的,从始至终只获得一块内存空间。而且这块空间的资源还具有“全局性”,就是说所有的成员都可以无条件引用,另外,static修饰的不用程序调用,只要该类被执行,static修饰的也被执行。
如最常见的,Public static void main(){};又巧衫如 static int a;那么所有的成员都可以引用a.
final 表示最终的,它修饰的类不能有子类。它修饰的变量是不可变的常数,所以final的变量要立刻赋值。如:class final A {}类A就不能被别的类继承;final String a=“abc”;那么a永远只能是abc.
fianl static String a=“abc”,那么a不但是一个常数,还是一个全局常数。
6. java 静态类是什么意思 有什么特点
java没有直接的静态类这种东西,一个类可以为static的情况只是他作为另一个类的成员,static表明他可以不用建立实例被访问而已,这样的内部类完全没有内部类的特点
1 内部类可以访问所在外部类的成员变量和方法,而静态内部类却不能
2 内部类可以使用Outter.this作为外部类引用,但静态内部类不能使用
3 静态内部类就如同外部类的一个静态成员,他只能访问外部类的静态成员和静态方法
4 在外部类外必须使用Outter.Inner外部类名和内部类名都要使用,楼上所说的不需要建立对象, 指的是不需要建立外部类实例,
比如BigOuter.Nested n = New BigOuter.Nested();
7. java 有没有静态类
java有静态内部类
Java语言允许在类中再定义类,这种在其它类内部定义的类就叫内部类。内部类又分为:常规内部类、局部内部类、匿名内部类和静态嵌套类四种。
8. java中静态内部类是怎么定义的
需要了解2个概念:内部类和静态修饰符static
1)首先,用内部类是因为内部类与所在外部类有一定的关系,往往只有该外部类调用此内部类。所以没有必要专门用一个Java文件存放这个类。
2)静态都是用来修饰类的内部成员的。比如静态方法,静态成员变量,静态常量。它唯一的作用就是随着类的加载(而不是随着对象的产生)而产生,以致可以用类名+静态成员名直接获得。
这样静态内部类就可以理解了,因为这个类没有必要单独存放一个文件,它一般来说只被所在外部类使用。并且它可以直接被用
外部类名+内部类名
获得。
以下举例说明怎么使用:
Student类有个叫School的内部类(非静态)
Student
stu
=
new
Student();
stu.School
sch
=
new
stu.School();
sch就是School的一个对象。
假如School是内部静态类:
Student.School
sch
=
new
Student.School();