本文简单总结下程序语言的基本语法(认识类型与变量、运算符、类型转换和流程控制)。
目录
一、变量与类型
1、变量(Variable)
① 概念:存储空间的抽象。
我们编程会对内存中的数据进行访问和修改,引入变量机制就是为了更方便地操纵数据。
每一个变量都对应一小块内存。
② 命名规则:数字不能开头,不能有特殊字符,也不能与Java关键字(Keyword)和保留字相同,
通常以小写字母开头,后面的单词开头大写。这叫作驼峰式命名法(Camel Case)
③ 声明(Declare)变量:告诉JVM有一个内存空间叫×××名字,放××类型的数据。
在方法中声明的变量叫局部变量,声明后会为这个变量配置一块内存空间,但没有默认值。使用会编译错误,这是安全性要求。
④ 变量可以存储的值。
在Java中写下一个值,该值称为字面常数(Literal Constant)。
整数可以用二进制(0b开头)、十进制、八进制(0开头)、十六进制(0x开头)表示。
浮点数用小数和科学记号(e)表示。另外在JDK7以后,整数和浮点数都可以添加下划线表示更清楚。表示。
字符用单引号表示,如果想表示一些程序语法上的符号又防止被编译,可以使用转义(Escape)符号-反斜杠“\”。这个符号还可以用作Unicode字符编码来表示字符。
\uxxxx和\xxx表示法可以分别表示十六进制和八进制的字符。
④ 布尔就两个值。
2、类型(Type)
Java可区分为基本类型(Primitive type)和类类型(Class type),类类型也可称为参考/引用类型(Reference type)。
所谓基本类型,就是利用程序语法告诉JVM,然后JVM自动为你在内存中配置与管理。
八个基本类型:
① 整数:字节:byte(占1个字节),short(占2个字节),int(占4个字节),long(占8字节),字节大表示的范围也大。
※ 程序写下一个整数,默认不超过int类型长度。超过了要用long类型,数值后面加上L。
② 浮点数:小数数值,float(占4个字节),double(占8个字节),默认都是0.0,float数值后面加f,后者精度更高一些。
③ 字符:字符符号,char每个字符占2字节。汉字字符与英文字符均是双字节储存。Java采用Unicode6.2.0编码,JVM结果采用UTF-16
④ 布尔:boolean,true与false表示逻辑的真与假
类型存储的数值范围可用API查阅,不用记忆,如MIN_VALUE或MAX_VALUE,如果储存值超出了类型范围,则溢值(overflow)
3、类型转换
① 强制转换成特定的数据类型。(通过编译,但如果遗失精度导致程序错误自己负责)
两种方法:float x =3.14F,float x=(float)3.14
② 自动提升(Promote)类型
两个类型运算会以最长的类型进行运算。
如果操作数都不大于int,则全部自动提升到int运算。也就是说short 1和short 2相加不能等于short 3而是int类型。
※ 当不断递增int类型x的值时,x+1 > Integer.MAX_VALUE 永远不成立。因为最大值的x,再加1导致符号位为1变负数。
二、运算符(Operator)
① 算术运算:+加 -减 *乘 /除 %取余(模数运算)
② 比较(Comparison)运算:>大于 <小于 >=大于等于 <=小于等于 ==等于 !=不等于
条件(Conditional)运算:条件式?成立返回值:失败返回值
③ 逻辑(Logical)运算:&&(AND)、||(OR)、!(NOT),即且、或、非。
④ 位运算(Bitwise):位对应运算即逐位运算
&(AND):都为1则1,反之为0。可以用于取位操作,如AND 001取二进制的最末位判断奇偶性。
|(OR):有1则1。可以对特定位强行赋值,如OR 001把最末位变成1,若变成0再减1。
^(XOR):异或。相同为0,不同则为1。可用于加密,两次XOR运算为本身。
~(取反):包括符号位全部按位取反。数值变化:+1取负。
<< >>(左移右移):左移指定位数右边补零,右移指定位数左边补上原来的位。>>> 右移左边补零
1左移可以求2的平方。
⑤ 递增递减:++ -- 写在变量前,先运算再返回值;写在变量后,返回值再运算。
⑥ 指定运算:= 即赋值。也可以与其他运算符组合。
.
三、流程控制
1、if…else条件语句
如果××成立就……,否则……
if(条件式){ 若为true的执行语句 } else{ 若为false的执行语句 }
不过Java没有if…else if语法。是省略了else的大括号后的连续条件测试。
if(条件式一){ } else if(条件式二){ } else{ }
2、switch条件语句
可用于比较整数、字符、Enum,JDK7增加字符串的比较。
switch(变量或表达式){ case 整数、字符、Enum或字符串: 描述句; break; ... ... default: 描述句; }
※ 特别注意:一旦case匹配了,就会顺序执行,而不管后面的case是否匹配,直到遇见break停止。
3、for循环语句
(重复性指令,适合已知次数)
for(初始式;执行结果必须是boolean的重复式;重复式){ 描述句; }
还可以for循环嵌套,双重循环,比如输出九九乘法表。外层循环执行一次,内层执行一轮。
4、while循环语句
while循环语句(前测试循环,满足条件式就循环)
while(条件式){ 描述句; }
do while循环语句(后测试循环,先执行再判断)
do{ 描述句; }while(条件式);
5、break和continue
break可以离开当前switch、for、while、do while的区块,并执行区块后下一个描述句。
continue回到循环区块开头重新循环。
这两个还可以配合标签(代码块)使用。
break返回到标签处,就不再执行标签的区块直接跳过。
continue配合标签在双重循环中可以自由跳转任一层循环, 但标签只能在for前面。