java语言中 final和static 的 区别是什么?

请各位给个准确的答案... 请各位给个准确的答案 展开
 我来答
韦涵涵
推荐于2018-04-13 · TA获得超过3892个赞
知道大有可为答主
回答量:1034
采纳率:100%
帮助的人:1488万
展开全部
final 被修饰的变量为常量一旦赋值不能修改,被修改的方法为最终方法不能

被重写,被修饰的类是最终类,不能被继承

static 被修饰的变量和方法,为该整个类及其类的对象所共享,一个类或对

象修改了被定义的类或方法,其他的也会跟着变量。。这就是说被static修饰的

是大家共用的。。

就一块肥皂多个人用,每个人用都会少而不是像不用static修饰的是每个人有

每个人的肥皂,你用自己的和别人没有关系。。

祝你好运!

如果还是不很明白,到我空间转转也许会更明白。。。
ajax_2003
2009-07-23 · TA获得超过4995个赞
知道大有可为答主
回答量:2628
采纳率:0%
帮助的人:2444万
展开全部
final是最终的意思, 也就是只要是他修饰的就不可在改变了
如果final用于修饰变量, 那么这就是声明了一个常量
如果用于修饰方法, 那么这个方法就不可以被子类重写
如果用于修饰类, 那么这个类就不可被继承

static 静态的, 他表示某些东西是静态加载的, 而非动态加载
如果static用于修饰一个变量, 那么这个变量就会变成一个类级别的变量,他会被存储在内存中的一个共有区间内,本类所有对象都会操作这一个变量(而不像没有static修饰的变量那个为每一对象都创建一个单独的变量)

static 用于修饰方法, 那么这个方法只要通过类名就能够直接访问了,而不需要创建这个类的对象

static 修饰类, 那么这个类将会是静态加载, 也就是不需要我们new采取加载,而是应用程序已启动,他就被接在到java虚拟机中了。

基本就是这些了, 不知道我表述的是否明白
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友388688327
2009-07-24 · TA获得超过1053个赞
知道小有建树答主
回答量:1297
采纳率:0%
帮助的人:955万
展开全部
final表示最终的。用它修饰的类表示是最终的类,不能再被继承。用它修饰的变量只能被一次赋值,然后就不能再修改了。

static表示静态。静态的方法或变量是属于整个类所共有的,不属于任何对象。
静态的变量或变量是一个类执行时首先被加载的:静态变量、方法、代码块---成员变量、构造方法。
一个静态变量是类中的所有成员所共享的。就像是很多人都吃一块面包。
而非静态的变量,是每个调用它的成员都拥有对它的一份拷贝,也就是每个人都有一块面包,自己吃自己的,影响不到其他人。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
影弘栀00
2009-07-23 · TA获得超过143个赞
知道答主
回答量:123
采纳率:0%
帮助的人:59.3万
展开全部
在类的声明中使用final
使用了final的类不能再派生子类,就是说不可以被继承了。有些java的面试题里面,问String可不可以被继承。答案是不可以,因为 java.lang.String是一个final类。这可以保证String对象方法的调用确实运行的是String类的方法,而不是经其子类重写后的 方法。
2、在方法声明中使用final
被定义为final的方法不能被重写了,如果定义类为final的话,是所有的方法都不能重写。而我们只需要类中的某几个方法,不可以被重写,就在方法前加final了。而且定义为final的方法执行效率要高的啊。
3、在变量声明中使用final
这样的变量就是常量了,在程序中这样的变量不可以被修改的。修改的话编译器会抱错的。而且执行效率也是比普通的变量要高。final的变量如果没有赋予初值的话,其他方法就必需给他赋值,但只能赋值一次。
总结:
这个关键字并不是很难理解,final的英文意思是“最终的”。他修饰了什么东西都是最终的。不可以改变的。效率也比较高。通常在java的优化编程中往往会提及到这一点。

static 是静态修饰符,什么叫静态修饰符呢?在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序退出内存才会释放这个空间,也就是只要程序在运行,那么这块内存就会一直存在。这样做有什么意义呢?
在Java程序里面,所有的东西都是对象,而对象的抽象就是类,对于一个类而言,如果要使用他的成员,那么普通情况下必须先实例化对象后,通过对象的引用才能够访问这些成员,但如果申明的是静态类 那么在调用的时候就不用再实例一次,就直接用class.xx 就可以调用成员变量.给你写一个简单的例子:
未声明为static
class ClassA{
int b;
public void ex1(){

}
}
class ClassB{
void ex2{
int i;
ClassA a = new ClassA();
i = a.b; //这里通过对象引用访问成员变量b
a.ex1; //这里通过对象引用访问成员函数ex1
}
}

声明为static
class ClassA{
static int b;
static void ex1(){

}
}
class ClassB{
void ex2{
int i;
i = ClassA.b; //这里通过类名访问成员变量b
ClassA.ex1; //这里通过类名访问成员函数ex1
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式