首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java final 修饰变量_final关键字修饰变量

参考链接: Java final关键字 Java中被final修饰变量为常量,它只能被赋值一次,也就是说final修饰变量一旦被赋值,其值不能改变。如果再次对该变量进行赋值,则程序会在编译时报错。...原因在于变量num 被final修饰。由此可见,被final修饰变量为常量,它只能被赋值一次,其值不可改变。  被final关键字修饰变量为局部变量。...void main(String[] args) {  Student student = new Student();  student.introduce();  }  }  出现了编译错误,提示变量...这是因为使用final关键字修饰成员变量时,虚拟机不会对其进行初始化。...因此使用final修饰成员变量时,需要在定义变量的同时赋予一个初始值,下面将第2行代码修改为:final String name="小海绵"; //为final 关键字修饰的name 属性赋值  运行结果

69520

const修饰指针变量详解

对于指针的认识,应该很多时候都是从C语言开始,那么const修饰的指针变量到底与指针变量有点什么区别呢?...“` const char *ptr; char const *ptr; char * const ptr; “` 上面三个const修饰的指针变量到底有点什么区别呢?...const 修饰的只是*ptr,*ptr呢?其实就是一个指针变量指向的内存区的内容,被const修饰之后,那么这个内存区的内容就不能够被修改了,但是指针的指向是可以被修改的。...对于**char * const ptr;**中的const修饰的就是ptr,ptr是什么呢?ptr不就是指针变量所存放的地址嘛?...加上const进行修饰之后,那么这个指针变量所存放的地址就不能够被修改了,但是指针指向的内容是可以被修改的。

31720
您找到你想要的搜索结果了吗?
是的
没有找到

局部变量修饰为final

如果我们尝试将被修饰为final的对象重新赋值,编译就会报错 这么简单的一个关键字,怎么需要强制修饰一个局部变量 局部变量 class文件 public static void main(String...= 3;} public void testFinal(){ final String name = "Whoops bug"; int pluginType = 3;} 两个方法一个局部变量修饰为...final修饰是纯编译时信息,到Class文件里就已经没有踪迹了,JVM根本不会知道方法参数或者局部变量有没有被final修饰 曾经的阿里巴巴规范提出: 推荐】final可提高程序响应效率,声明成final...用来提醒自己以及其他人,这里的参数/变量是真的不能被修改,并让Java编译去检查到底有没有被乱改 public void testSwitch(){ final String name;...,编译就会报错 类变量 对于final修饰的局部变量有了清晰的认识,再延伸一下final类变量 这儿涉及到一个问题,为什么JUC中很多的方法在使用类final变量时,都在方法中先引用一 public

1.6K20

volatile 关键字(修饰变量

volatile 关键字(修饰变量) 1. 含义 是一种比 sychronized 关键字更轻量级的同步机制,访问 volitile 变量时,不会执行加锁操作。 2....作用 volatile 是一个类型修饰符(type specifier)。volatile 的作用是作为指令关键字,确保本条指令不会因编译的优化而省略,且要求每次直接读值。...volatile 修饰变量,是直接拿的主内存的值,就是说这个值永远是最新的,对其他线程是可见的。...在大多数处理的实现中,这个屏障是个万能屏障,兼具其它三种内存屏障的功能 volatile 做了什么 在一个变量被 volatile 修饰后,JVM 会为我们做两件事: 在每个 volatile 写操作前插入...只有是原子操作的 volatile 变量才是线程安全的,比如我们很常见的 变量++ 自增操作,在这个过程中,自增包括取数,加一,保存三个过程的操作,所以自增并不是原子性操作,使用 volatile 修饰变量自增操作仍然是不安全的

50221

static作用(修饰函数、局部变量、全局变量

C语言:static作用(修饰函数、局部变量、全局变量) 一、 static全局变量与普通的全局变量有什么区别 ? 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。  ...全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。  ...static全局变量只初使化一次,防止在其他文件单元中被引用; 二、static局部变量和普通局部变量有什么区别 ?   把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。...只在当前源文件中使用的函数应该说明为内部函数(static修饰的函数),内部函数应该在当前源文件中说明和定义。...共有两种变量存储在静态存储区:全局变量和static变量,只不过和全局变量比起来,static可以控制变量的可见范围,说到底static还是用来隐藏的。

61120

5.opengl-变量修饰

3.00上支持的存储变量修饰变量名称 作用 示例 const 编译过程常量,或者函数的只读参数 const vec3 zAxis = vec3 (0.0, 0.0, 1.0); in 用于连接 shader...uniform是全局的(Global),全局意味着uniform变量必须在每个着色程序对象中都是独一无二的,而且它可以被着色程序的任意着色在任意阶段访问。 它不能被shader程序修改....uniform sampler2D tex; 老版本中支持的存储变量修饰变量名称 作用 示例 const 编译过程常量,或者函数的只读参数 const vec3 zAxis = vec3 (0.0...一般用来修饰顶点数据、纹理坐标、颜色、法线,即一切和坐标、和颜色有关的数据。...attribute vec4 position; varying(3.0版本后,使用的是in和out代替,在顶点着色声明out.在片段着色中声明in,来实现传递) 用于连接顶点着色和片段着色,从顶点着色向片段着色传递变量

61620

Python编程——修饰

这时我们可以引入Python的一个非常高效的设计模式——修饰。 函数调用前后添加修饰语句,但又不希望修改函数的定义,这种在代码运行期间动态增加功能的方式,称之为“装饰”(Decorator)。...本质上,修饰就是一个返回函数的高阶函数。 装饰是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志、性能测试、事务处理等。...以修饰方式实现以上需求: # 修饰函数其实就是一个参数为函数,返回值也为函数额高阶函数 def dec_func(f): def wrapper(): print("before...上面我们已经完成了对于一个没有参数的函数的功能添加,若这个函数是有参数的,该修饰就会报错。...那么,修饰函数传参的话,不同的参数会怎么样呢?

49610

static修饰的函数有什么特点(static可以修饰所有的变量吗)

static修饰的函数叫做静态函数,静态函数有两种,根据其出现的地方来分类: 如果这个静态函数出现在类里,那么它是一个静态成员函数; 静态成员函数的作用在于:调用这个函数不会访问或者修改任何对象...其实很好理解,类的静态成员(变量和方法)属于类本身,在类加载的时候就会分配内存,可以通过类名直接去访问;非静态成员(变量和方法)属于类的对象,所以只有在类的对象产生(创建类的实例)时才会分配内存,然后通过类的对象...这样的static函数与普通函数的区别是:用static修饰的函数,限定在本源码文件中,不能被本源码文件以外的代码文件调用。

1.5K20

深刻理解----修饰变量----关键字

1.extern关键字 基本解释:引用一个全局的量, extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译遇到此变量和函数时在其他模块中寻找其定义。...全局变量只需在一个源文件中定义,就可以作用于所有的源文件。 当然,其他不包含全局变量定义的源文件需要用extern 关键字再次声明这个全局变量。 ①全局变量当没有其他关键字修饰时。...②当全局变量被const关键字修饰时。他定义的是常量,他的值不能在其他地方更改,而且在内存中也只占用一份内存空间。...节约内存空间, 5.static关键字 首先static的最主要功能是隐藏,其次因为static变量存放在静态存储区,所以它具备持久性和默认值0. ①.修饰局部变量 不改变局部变量作用域 延长了局部变量的寿命...,可以让局部变量在整个程序运行过程中只有一份内存,且只会初始化一次 ②.修饰全局变量 让这个全局变量仅限于当前文件能访问(哪个文件:定义这个全局变量的文件) 6.static 关键字 搭配 const

674110

const修饰类中成员变量及函数

const在类中,可以修饰成员变量和成员函数,主要目的也是保护成员内部的一些属性不被轻易的修改。以保证数据的完整性。下面分别介绍const修饰成员变量和成员函数。...const修饰成员变量表示成员常量,只能在初始化列表中赋值,可以被const和非const成员函数调用,但不能修改其值。...const成员函数 CConst(void):iValue(200) { // error // iValue = 300; } ~CConst(void); private: // const 成员变量...void display() const { // 不能调用非const函数,本函数不修改成员变量,但不能保证被调用函数不会修改 // input(); cout << “x “ << x <<...endl; cout << “y “ << y << endl; // const 修饰函数表示承诺不对数据成员进行修改,所以以下错误 //y = 200; } // 一个非 const 成员函数

17520

python 学习之:修饰

一、前言         修饰是啥?大佬太多,这里不赘述,只记录一下今天自己写对类里面的方法如何修饰。 二、修饰如何对类里面的方法进行修饰?        ...1、我这里是在不同的文件夹下不同的py文件中,先定义一个修饰,如下: def logs_decorator(func): def logs_d(): print("成功获取了列表...headers=headers) print(r.text) print(r.status_code)          详解:上述代码正确写法上是没有问题的,方法上面直接取得修饰的名称进行调用...提示修饰中的方法缺少一个参数。...解决方法: 说起来也是很简单,我们直接在修饰中添加一个参数就可以,如下: def logs_decorator(func): def logs_d(self): print("

41520

const修饰符的使用(修饰结构体指针,引用外部的const 变量

const修饰符的使用 //const修饰变量为只读 const int a = 10; a = 20;//是错误的赋值 //指针变量 指针指向的内存 两个不同的概念 char buf[] =..."helloworld"; //从左往右看,跳过类型,看修饰那个字符 //如果是*,说明指针指向的内存不能改变 //如果是指针变量,说明指针的指向不能改变,指针的值不能修改 const char *p...= buf; char const *p1 = buf; //以上两条语句是等价的,都是修饰指针指向的内存不能改变。...const封锁的是指针变量,不能修改其指向,但是可以修改指针指向内存当中的内容。...const修饰结构体指针 //对结构体进行封锁 typedef struct { int a; int b; }my_struct; void fun1(my_struct *p)

49810

python修饰的特殊用法

最基本的修饰包括了无参数的修饰和带参数的修饰,这两种修饰都是针对函数的,讲解的博客已经很多了,就不再赘述了,这里重点讲下修饰的几种特殊用法。...使用类创建修饰 因为类也是可以callable的,只要实现__call__魔法函数即可,所以类也可以实现修饰效果。...Debug def spam(eggs): return "spam" * (eggs%5) spam(3) 结果如下所示: spam((3,), {}): 'spamspamspam' 使用类创建修饰和使用函数创建修饰的区别是...修饰类的方法 修饰类的方法与修饰函数形式差不多,唯一需要注意的是类方法中必须提供第一个变量self。...eggs" spam = Spam() print(spam.get_eggs(2)) 结果如下所示: eggseggseggs classmethod、staticmethod和property描述本质上都是类方法修饰

94510
领券