1.static修饰的对象:
static关键字可以修饰:局部变量、全局变量、函数
static修饰后改变了什么?
1.改变了生存周期;就是一个变量、函数从分配内存去表示到回收内存的过程
2.改变了作用域;就是可以在哪些文件里可以使用该函数
static修饰不同对象时的作用:
- 局部变量:
生存周期
普通 |
函数 |
|
Static |
程序 |
保留上一次的值 |
- 全局变量:
作用域
范围变小,数据安全
- 函数
只能在本文件里被调用,这样是为了数据的安全。
还有一个作用是解决重名问题。当用static修饰了全局变量和函数后,其他文件里再定义同名的全局变量和函数也是可以的。一般来说,如果不是要对外提供的函数和全局变量,最好都用static修饰。
- #endif 指令
在 C 编程语言中,#endif 指令关闭以下指令:#if、#ifdef 或 #ifndef。当遇到#endif 指令时,打开指令(#if、#ifdef 或#ifndef)的预处理完成。
3.#define 定义一个预处理宏
#undef 取消宏的定义
#if 编译预处理中的条件命令,相当于C语法中的if语句
#ifdef 判断某个宏是否被定义,若已定义,执行随后的语句
#ifndef 与#ifdef相反,判断某个宏是否未被定义
#elif 若#if, #ifdef, #ifndef或前面的#elif条件不满足,则执行#elif之后的语句,相当于C语法中的else-if
#else 与#if, #ifdef, #ifndef对应, 若这些条件不满足,则执行#else之后的语句,相当于C语法中的else
#endif #if, #ifdef, #ifndef这些条件命令的结束标志.
defined 与#if, #elif配合使用,判断某个宏是否被定义
4.Volatile关键字的作用主要有如下两个:
1.线程的可见性:当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。
2. 顺序一致性:禁止指令重排序。
5.运算符“||”与“|”,“&&”和“&”的区别
区别一:
定义不同:
|| 和 | 都是表示“或”,区别是||只要满足第一个条件,后面的条件就不再判断,而|要对所有的条件进行判断。
区别二:
与操作和或操作的区别
(1)在Java程序中,使用与操作,要求所有表达式的判断结果都是TRUE,才为真,若有一个为FALSE,那么最终判断结果则为FALSE
(2)使用或操作,只要其中有一个表达式为TRUE,那么最终的结果就为TRUE,只有当所有的表达式为FALSE时最终结果才为FALSE
区别三:
实际含义不同:
“||”: 如果左边计算后的操作数为true,右边则不再执行,返回true;
“|”:前后两个操作数都会进行计算。也就是说:“|”不存在短路。
&&是逻辑与(短路与),当第一个判断条件不满足要求时(返回false),第二个判断条件就不会执行;只有当两个判断条件都返回true时,整个逻辑运算才返回true。
&按位与,不论什么情况下,两边的判断条件都会执行,当两边都返回true时,按位与才返回true。
- =,==,===的区别
=赋值 ==比较值是否相同===绝对等同符
- for循环
条件一:var 一个值
条件二:进入循环的判断条件
条件三:var 的值每一次循环完后,是否递增或递减
循环体:就是你输入所要循环的代码的地方
执行顺序:先执行条件一,再看条件一是否满足条件二的判断,如果满足则进入循环,反之则不进入循环,如果进入循环里则执行循环体里面的内容,最后再执行条件三