java语言中 final和static 的 区别是什么?
答案:4 悬赏:0 手机版
解决时间 2021-12-02 00:12
- 提问者网友:焚苦与心
- 2021-12-01 06:00
java语言中 final和static 的 区别是什么?
最佳答案
- 五星知识达人网友:一秋
- 2021-12-01 07:07
final 被修饰的变量为常量一旦赋值不能修改,被修改的方法为最终方法不能
被重写,被修饰的类是最终类,不能被继承
static 被修饰的变量和方法,为该整个类及其类的对象所共享,一个类或对
象修改了被定义的类或方法,其他的也会跟着变量。。这就是说被static修饰的
是大家共用的。。
就一块肥皂多个人用,每个人用都会少而不是像不用static修饰的是每个人有
每个人的肥皂,你用自己的和别人没有关系。。
祝你好运!
如果还是不很明白,到我空间转转也许会更明白。。。
被重写,被修饰的类是最终类,不能被继承
static 被修饰的变量和方法,为该整个类及其类的对象所共享,一个类或对
象修改了被定义的类或方法,其他的也会跟着变量。。这就是说被static修饰的
是大家共用的。。
就一块肥皂多个人用,每个人用都会少而不是像不用static修饰的是每个人有
每个人的肥皂,你用自己的和别人没有关系。。
祝你好运!
如果还是不很明白,到我空间转转也许会更明白。。。
全部回答
- 1楼网友:胯下狙击手
- 2021-12-01 08:59
在类的声明中使用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
}
}
使用了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楼网友:时间的尘埃
- 2021-12-01 07:45
final是最终的意思, 也就是只要是他修饰的就不可在改变了
如果final用于修饰变量, 那么这就是声明了一个常量
如果用于修饰方法, 那么这个方法就不可以被子类重写
如果用于修饰类, 那么这个类就不可被继承
static 静态的, 他表示某些东西是静态加载的, 而非动态加载
如果static用于修饰一个变量, 那么这个变量就会变成一个类级别的变量,他会被存储在内存中的一个共有区间内,本类所有对象都会操作这一个变量(而不像没有static修饰的变量那个为每一对象都创建一个单独的变量)
static 用于修饰方法, 那么这个方法只要通过类名就能够直接访问了,而不需要创建这个类的对象
static 修饰类, 那么这个类将会是静态加载, 也就是不需要我们new采取加载,而是应用程序已启动,他就被接在到java虚拟机中了。
基本就是这些了, 不知道我表述的是否明白
如果final用于修饰变量, 那么这就是声明了一个常量
如果用于修饰方法, 那么这个方法就不可以被子类重写
如果用于修饰类, 那么这个类就不可被继承
static 静态的, 他表示某些东西是静态加载的, 而非动态加载
如果static用于修饰一个变量, 那么这个变量就会变成一个类级别的变量,他会被存储在内存中的一个共有区间内,本类所有对象都会操作这一个变量(而不像没有static修饰的变量那个为每一对象都创建一个单独的变量)
static 用于修饰方法, 那么这个方法只要通过类名就能够直接访问了,而不需要创建这个类的对象
static 修饰类, 那么这个类将会是静态加载, 也就是不需要我们new采取加载,而是应用程序已启动,他就被接在到java虚拟机中了。
基本就是这些了, 不知道我表述的是否明白
- 3楼网友:逃夭
- 2021-12-01 07:17
final表示最终的。用它修饰的类表示是最终的类,不能再被继承。用它修饰的变量只能被一次赋值,然后就不能再修改了。
static表示静态。静态的方法或变量是属于整个类所共有的,不属于任何对象。
静态的变量或变量是一个类执行时首先被加载的:静态变量、方法、代码块---成员变量、构造方法。
一个静态变量是类中的所有成员所共享的。就像是很多人都吃一块面包。
而非静态的变量,是每个调用它的成员都拥有对它的一份拷贝,也就是每个人都有一块面包,自己吃自己的,影响不到其他人。
static表示静态。静态的方法或变量是属于整个类所共有的,不属于任何对象。
静态的变量或变量是一个类执行时首先被加载的:静态变量、方法、代码块---成员变量、构造方法。
一个静态变量是类中的所有成员所共享的。就像是很多人都吃一块面包。
而非静态的变量,是每个调用它的成员都拥有对它的一份拷贝,也就是每个人都有一块面包,自己吃自己的,影响不到其他人。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
正方形一边上任一点到这个正方形两条对角线的 |
阴历怎么看 ? |