注意,不能是数字开头
变量就是一片小的存储空间
一定范围内的数据集合,和对数据集合的合法操作
作用域
变量有一定的生命周期,只在它所在的作用域中才有意义,作用域即变量所在的{}
初始值
变量在使用之前,必须赋初始值
数据类型转化
float f = 0.5F; long l = 99999999999L;//最好不要用小写l byte b = 1 + 2;//编译器进行了优化,因为是直接的常量计算,编译器会预先计算好结果,并检查是否在相应的数据类型所能取值的范围内t
结果是布尔类型,是或否
==, !=, <, >, <=, >=
&, |, !, ^(异或), &&, ||, ?:
&与&&,|与||的差别:&和|不太聪明,必须要执行完两侧运算才能进行逻辑运算,而&&不需要,比如第一个为false的话,另一个就不运算了
变量交换的方式
1.定义中间变量
2.计算技巧int a,b; a = a + b; b = a - b; a = a - b;3.异或运算
int a,b; a = a ^ b; b = a ^ b; a = a ^ b;4.神头鬼脸
int a,b; a = (a + b) - (b = a);
作用域
变量有一定的生命周期,只在它所在的作用域中才有意义,作用域即变量所在的{},一旦超出了变量定义的作用域,就访问不到了。在包含关系的作用域中不能出现重名的情况
switch(choice){ case 1: ...; break; case 2: ...; break; default://other value ...; break; }
删除break语句在语法上没有错误,但是在当前case分支中的语句执行完后,而是继续执行相邻case分支中的语句
当然,并不是说这样不好,相反,有时候我们利用这种结构会减少所需要使用的代码量
case的标签可以是:
类型为char,byte,short,int的常量表达式
枚举常量
字符串字面量(Java7开始)
循环控制变量贯穿始终
循环结构的四种基本语句
while
先检测循环的条件
do statement while(condition)
先执行语句再检测循环条件
for
不成文的规矩:对同一个变量进行初始化、检测和更新
建议不要使用浮点数判断相等条件,因为浮点数是近似值,有可能永远不满足条件
带标签的break
和C++的goto类似,只能跳出语句块,而不能跳进语句块。当然,不建议使用。
read_data: ... while(condition){ ...; if(condition2) break read_data; }
continue
跳过本轮循环,进入到下一轮循环
return
方法的结束语句,具体内容在方法中展开
如果基本的整数和浮点数不能满足需求,java.math中有两个很有用的类:BigInteger(任意精度整型运算)和BigDecimal(任意精度浮点数运算)。
如果需要进行算术运算,需要调用大数对象的方法。
具体的方法可以去Oracle官方网站查找API文档
BigInteger c = a.add(b);//c=a+b BigInteger d = c.multiply(b.add(BigInteger.valueOf(2)));//d=c*(b+2)
int[] a = new int[100];//声明并初始化一个容量大小为100个整型变量的数组 int[] a = {2,3,4}; smallPrimes = new int[] {2,3,4}; //等价于 int anonymous = {2,3,4}; smallPrimes = anonymous;
Java中允许有长度为0的数组,但是和null并不等价
new elementType[0]; 或者 new elementTypr[] {};
根据数组下表访问数组,和C++一样
for(variable : collection) statement;
variable变量用于暂存数组collection中的变量值
Arrays的copyOf方法
public static void main(String[] args)
表明main方法将接收一个字符串数组,也就是命令行指定的参数,和C++不同,程序名没有存储在args数组中,命令行参数的第一个字符串即为args[0]。
double[][] balances;//声明 balances = new double[NYEARS][NRATES];初始化 int [][] magicSquare = { {1,2}, {3,4}, {5,6} };
for each循环不能自动处理二维数组中的每一个变量,需要使用两次:第一次是访问每一个数组,第二次是访问第一次访问数组中的每一个数组元素
Arrays.deepToString(a)
可输出二维数组的数据元素列表
Java实际上没有二维数组,因此可以根据自己需要,使用不规则数组
一个类定义多个同名方法是没有问题的,方法重载需要遵守一定的规则:
Java区分方法的原理:
方法签名:方法名+参数列表 不会考虑方法返回值
方法重载便利了方法的调用,但不能忽视方法的定义