当前位置:首页 » 编程语言 » 静态成员java

静态成员java

发布时间: 2022-09-18 01:19:11

A. 静态数据成员在java当中称作什么

类成员。变量称为类变量、静态变量。方法称为类方法、静态方法。块被成为类块、静态块。
特点是类无需实例化,就可使用。初始化过程中,处于实例成员之前。并且在继承后,并使用多态的情况下,不会被覆盖,只能被遮蔽。

B. Java中静态成员与实例成员的使用方法和区别

静态成员是一个类共用一个成员实例成员则是该类的每个对象都会有一个成员 实例成员比较常见,用于存储对象自身的数据,比如一个Student对象,他们的name属性应该是各不相同的,此时就可以用实例成员存储。静态成员则一般用于计数、单例等,比如我们可以在Student里面加一个static int count,用于统计总共有多少个Student对象。

C. java里的静态成员变量是放在了堆内存还是栈内

这个要看对象是否为逃逸对象,如果为非逃逸对象,会根据标量替换来把对象分解成若干个被这个方法使用的成员变量所代替,这些代替的成员变量在栈帧或寄存器上分配空间

D. Java中静态成员和实例成员的区别,及main函数

在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。特殊的就是一个类的main方法,都是以public static void限制的,所以这个方法可以在其他类中直接以类名进行调用,如可以在类B中不创建A的对象而直接调用A的main方法:A.main(param)
静态方法在访问本类的成员(一定要注意,是本类的成员,当访问外类的成员的时候就完全没有这个限制了!!!其实想想也对,如果访问外类成员的时候也要有限制,那么main函数就无法执行外类的一些非静态方法了,那么当继承过来的时候就完全没有了用处了。)时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。main()方法是一个典型的静态方法,它同样遵循一般静态方法的规则,所以它可以由系统在创建对象之前就调用。
Main函数:每个书写class的java文件中至多能有一个用来运行的main方法(如果需要运行的话就要有main方法),以上所述,所有的类必须存在于一个包中,方法必须存在于一个类中(main方法也是一种特殊的方法)。每个包里面可以有n个Java文件,所以,每个包中可以有数个main方法(函数)。

E. JAVA静态成员是什么

类和类的多个对象共同拥有的一个属性或者是方法,
静态成员可以通过类名.静态成员名或者是对象名.静态成员名调用,
通常定义成静态成员都是同过 类名.静态成员名 来调用的
要注意的是,如果你定义了一个静态成员
public static int x=1,类调用了这个静态成员并且将1改成了2,
那么其它的对象再调用这个A此时他们得到的值就是2,
因为他们和类共同拥有一个静态成员。

F. 关于java中静态成员的问题,求大神解答。

这个问题,看似简单,但其实是要让你理解类加载的过程。。。

加载一个类,首先是声明静态变量(记住了,这里只是声明,还没有赋值,所以这里都是0),然后是初始化代码块,然后是构造器,然后是变量赋值,然后是静态代码块。。。就是这样一个过程,,,,,你用下面的代码测试一下就明白了,为了看得清楚,我给它初始化为4

package临时;

publicclassTestloader{

publicstaticvoidmain(String[]args){
//Employeee=Employee.getInstance();
System.out.println("main1");
System.out.println("count1:"+Employee.count1);
System.out.println("count2:"+Employee.count2);
}

}

classEmployee{
privatestaticEmployeee=newEmployee();
publicstaticintcount1=4;
publicstaticintcount2=0;
static{
System.out.println("静态代码块");
System.out.println("count1:"+Employee.count1);
System.out.println("count2:"+Employee.count2);
}
{
System.out.println("初始化代码块");
System.out.println("count1:"+Employee.count1);
System.out.println("count2:"+Employee.count2);
}

privateEmployee(){
System.out.println("构造器");
count1++;
count2++;
System.out.println("count1:"+Employee.count1);
System.out.println("count2:"+Employee.count2);
}

(){
returne;
}
}

G. java里的静态成员变量是放在了堆内存还是栈内存

堆区:
1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)
2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身
栈区:
1.每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中
2.每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。
3.栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。
方法区:
1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。
2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。
程序运行时,我们最好对数据保存到什么地方做到心中有数。特别要注意的是内在的分配,有六个地方都可以保存数据:
1、 寄存器。这是最快的保存区域,因为它位于和其他所有保存方式不同的地方:处理器内部。然而,寄存器的数量十分有限,所以寄存器是根据需要由编译器分配。我们对此没有直接的控制权,也不可能在自己的程序里找到寄存器存在的任何踪迹。
2、 堆栈。驻留于常规RAM(随机访问存储器)区域。但可通过它的“堆栈指针”获得处理的直接支持。堆栈指针若向下移,会创建新的内存;若向上移,则会释放那些内存。这是一种特别快、特别有效的数据保存方式,仅次于寄存器。创建程序时,java编译器必须准确地知道堆栈内保存的所有数据的“长度”以及“存在时间”。这是由于它必须生成相应的代码,以便向上和向下移动指针。这一限制无疑影响了程序的灵活性,所以尽管有些java数据要保存在堆栈里——特别是对象句柄,但java对象并不放到其中。
3、 堆。一种常规用途的内存池(也在RAM区域),其中保存了java对象。和堆栈不同:“内存堆”或“堆”最吸引人的地方在于编译器不必知道要从堆里分配多少存储空间,也不必知道存储的数据要在堆里停留多长的时间。因此,用堆保存数据时会得到更大的灵活性。要求创建一个对象时,只需用new命令编制相碰的代码即可。执行这些代码时,会在堆里自动进行数据的保存。当然,为达到这种灵活性,必然会付出一定的代价:在堆里分配存储空间时会花掉更长的时间
4、 静态存储。这儿的“静态”是指“位于固定位置”。程序运行期间,静态存储的数据将随时等候调用。可用static关键字指出一个对象的特定元素是静态的。但java对象本身永远都不会置入静态存储空间。
5、 常数存储。常数值通常直接置于程序代码内部。这样做是安全的。因为它们永远都不会改变,有的常数需要严格地保护,所以可考虑将它们置入只读存储器(ROM)。
6、 非RAM存储。若数据完全独立于一个程序之外,则程序不运行时仍可存在,并在程序的控制范围之外。其中两个最主要的例子便是“流式对象”和“固定对象”。对于流式对象,对象会变成字节流,通常会发给另一台机器,而对于固定对象,对象保存在磁盘中。即使程序中止运行,它们仍可保持自己的状态不变。对于这些类型的数据存储,一个特别有用的技艺就是它们能存在于其他媒体中,一旦需要,甚至能将它们恢复成普通的、基于RAM的对象。

H. JAVA里的静态成员是什么

是类和类的多个对象共同拥有的一个属性或者是方法,静态成员可以通过类名.静态成员名或者是对象名.静态成员名调用,需要注意的是,如果你定义了一个静态成员public static int A = 10,类调用了这个静态成员并且将10改成了20,那么其它的对象再调用这个A此时他们得到的值就是20,因为他们和类共同拥有一个静态成员。

I. Java中静态成员与实例成员的使用方法和区别

静态成员是一个类共用一个成员
实例成员则是该类的每个对象都会有一个成员
实例成员比较常见,用于存储对象自身的数据,比如一个Student对象,他们的name属性应该是各不相同的,此时就可以用实例成员存储。
静态成员则一般用于计数、单例等,比如我们可以在Student里面加一个static
int
count,用于统计总共有多少个Student对象。

J. Java 静态成员值的问题

首先静态值是一个共享的值,也就是说,t1和t2的i值是共享的,改变t1.i就等于改变t2.i,确切的说,你的写法是错误的,不应该写t1.i或者t2.i,而应该写This.i

再来说说输出,i++和++i是有区别的。加号在后面,是表示先执行当前语句然后+1;加号在前面则表示先+1再执行当前语句。

所以第一次输出,先执行了输出,也就是i = 60,然后自加1
然后调用call方法,当i=3,循环结束,所以输出0,1,2。但是改变了共享变量,所以i现在就是3,部分t1或者t2

然后你输出t2.i,其实就是t1.i,也就是之前结束循环时候,i=3
然后继续call方法,还是老样子,0,1,2

热点内容
剑侠情缘缓存怎么清理 发布:2025-01-11 22:33:56 浏览:316
win7旗舰版怎么设置密码 发布:2025-01-11 22:21:09 浏览:144
被害人访问 发布:2025-01-11 22:06:24 浏览:366
朋友圈上传长视频方法 发布:2025-01-11 22:01:41 浏览:357
我的世界ice服务器被炸罚款 发布:2025-01-11 21:54:36 浏览:725
linuxphpini配置 发布:2025-01-11 21:54:35 浏览:481
tp图片压缩 发布:2025-01-11 21:53:52 浏览:632
手柄怎么调节安卓模式 发布:2025-01-11 21:44:36 浏览:950
国产服务器搭建ftp 发布:2025-01-11 21:27:33 浏览:919
电脑系统哪个好用配置 发布:2025-01-11 21:26:04 浏览:141