首页编程java编程java不能初始化类是为什么,java中 main()方法中为什么不能new 内部类

java不能初始化类是为什么,java中 main()方法中为什么不能new 内部类

编程之家 2023-10-13 85次浏览

各位老铁们,大家好,今天由我来为大家分享java不能初始化类是为什么,以及java中 main()方法中为什么不能new 内部类的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

java不能初始化类是为什么,java中 main()方法中为什么不能new 内部类

Java中Set类初始化问题

没有第一种方式,Set是个接口,是不能够实例化(new)的,你只能实例化它的实现类,HashSet就是Set的一个实现类。

第二种方式你也可以给它加<String>,这叫泛型,就是限制这个类里只能传你指定的类型及其子类。

由于Java所有对象的类是Object类,所以如果不写就默认是Object类,所有类的最顶级父类都是Object,所以传什么都可以,

java不能初始化类是为什么,java中 main()方法中为什么不能new 内部类

Set setTmp= new HashSet();和Set<Object> setTmp= new HashSet<Object>();两种方式是等价的。

Java有八种基本数据类型,是不属于Object类的子类的,byte, short, int,long,char,double,float,boolean,对这八种类有他们各自的包装类,依次是Byte,Short,Integer,Long,Character,Double,Float,Boolean,这八个包装类是Object的子类,是可以作为Set的类型用的,也就是你可以写成Set<Integer>但是不能写成Set<int>.

java中为什么要为类的属性初始化

1.对于类的成员变量,不管程序有没有显式的进行初始化,Java虚拟机都会先自动给它初始化为默认值。\x0d\x0a默认值如下:\x0d\x0a\x0d\x0aBooleanfalse\x0d\x0a\x0d\x0aChar'\u0000'(null)\x0d\x0a\x0d\x0abyte(byte)0\x0d\x0a\x0d\x0ashort(short)0\x0d\x0a\x0d\x0aint0\x0d\x0a\x0d\x0along0L\x0d\x0a\x0d\x0afloat0.0f\x0d\x0a\x0d\x0adouble0.0d\x0d\x0a2.局部变量声明之后,Java虚拟机就不会自动给它初始化为默认值,因此局部变量的使用必须先经过显式的初始化。\x0d\x0a但是需要声明的是:对于只负责接收一个表达式的值的局部变量可以不初始化,参与运算和直接输出等其它情况的局部变量需要初始化。

java不能初始化类是为什么,java中 main()方法中为什么不能new 内部类

Java类的初始化是什么时候

我们知道一个类(class)要被使用必须经过装载,连接,初始化这样的过程。下面先对这三阶段做一个简单的描述,之后会结合一个简单的例子来说明java中类的初始化过程。

在装载阶段,类装载器(Bootstrap ClassLoader或者用户自定义的ClassLoader)把编译形成的class文件载入内存,创建类相关的Class对象,这个Class对象封装了我们要使用的类的类型信息。

连接阶段又可以分为三个子步骤:验证、准备和解析。

验证就是要确保java类型数据格式的正确性,并适于JVM使用。

准备阶段,JVM为静态变量分配内存空间,并设置默认值,注意,这里是设置默认值,比如说int型的变量会被赋予默认值0。在这个阶段,JVM可能还会为一些数据结构分配内存,目的是提高运行程序的性能,比如说方法表。

解析过程就是在类型的常量池中寻找类、接口、字段和方法的符号引用,把这些符号引用替换成直接引用。这个阶段可以被推迟到初始化之后,当程序运行的过程中真正使用某个符号引用的时候再去解析它。

类会在首次被“主动使用”时执行初始化,为类(静态)变量赋予正确的初始值。在Java代码中,一个正确的初始值是通过类变量初始化语句或者静态初始化块给出的。而我们这里所说的主动使用包括:

1.创建类的实例

2.调用类的静态方法

3.使用类的非常量静态字段

4.调用Java API中的某些反射方法

5.初始化某个类的子类

6.含有main()方法的类启动时

初始化一个类包括两个步骤:

1、如果类存在直接父类的话,且直接父类还没有被初始化,则先初始化其直接父类

2、如果类存在一个初始化方法,就执行此方法

注:初始化接口并不需要初始化它的父接口。

java中 main()方法中为什么不能new 内部类

1.首先你的内部类不是静态的对吧(不是static

class)。

2.而main方法是静态的。

3.main

方法是个静态方法,而

静态

类不是个静态内部类,所以不能直接初始化。

对main方法而言,虽然写在类中,它是游离于任何类之外的(就跟C++一样,单独一个main方法),因此某类的非静态内部类对它而言是不直接可见的,也就无法直接访问

关于java不能初始化类是为什么到此分享完毕,希望能帮助到您。

java中间表有什么作用是什么(大数据培训到底是培训什么) java stack trace是什么?empty stack trace什么意思