byte flag;
int number;
long earthPopular;
boolean isDone;
需要注意的是,Java变量的明明遵循驼峰命名法,即单个单词字母小写,多个单词组成的变量名第一个单词小写,后面其他单词首字母大写,其余字母小写
可以看出的是:每个声明以分号结束。由于声明是一条完整的语句,所以必须以分号结束。
变量名必须是一个以字母开头的由字母或数字构成的序列。变量名是由字母、数字、下划线、$等所组成,且变量名的第一个字符必须是字母,且不允许空格和符号。(变量名还可以由一些在某种语言中代表字母的任何Unicode字符组成,但不建议,个人觉得还是字母+数字的组合最优)。
大小写敏感且没有长度限制
不能将变量名命名为Java保留字
变量的声明还有一种方式——一行声明多个变量:
int i, j; // 都是int类型
但是不提倡这种风格。逐一声明每一个变量可以提高程序的可读性
变量初始化
声明一个变量之后,必须用赋值语句对变量进行显示初始化,千万不能使用未被初始化的变量。例如:
int number;
System.out.prinln(number); // Error--variable not initialized Java编译器会提示变量未初始化
对变量赋值有两种方式,第一种,先声明,再赋值:
int number;
number = 12;
第二种,变量的声明和初始化赋值在同一行:
int number = 12;
在C语言和C++中,变量又有变量声明和定义的区分,例如int i = 10就是一个定义,且只能放在程序最开始。这不同于Java,Java中没有定义和声明的区分,且int i = 10可以放在程序任意合法的位置,不局限于程序开始部分。
常量
在Java中,利用关键字final指示常量。例如:
final double CONST_SIZE = 24.0;
关键字final表示这个变量只能被赋值一次,一旦被赋值后就不能再更改了。习惯上常量名使用全大写,多单词使用_分开。
在Java中,如果希望某个常量可以在一个类的多个方法中使用,通常称为类常量。使用static final关键字来设置一个类常量。例如:
public class Constants{
public static final double CONST_SIZE = 24.0;
public function1(){
System.out.print(CONST_SIZE);
}
public function2(){
System.out.print(CONST_SIZE);
}
}
类常量的定义通常位于main方法外部。因此,在同一个类的其他方法中也可以使用这个常量。而当常量被声明为public,那么其他类可以通过类名+常量名来使用这个常量。如上述代码中的常量就可以通过Constants.CONST_SIZE来使用了。
需要注意,整数除以0会产生一个·java.lang.ArithmeticException: / by zero异常,而浮点数除以0会得到无穷大或NaN结果。
赋值语句中可以采用一种简化的格式书写二元算术运算符,如:
x += 4;
等价于
x = x + 4;
-、*、/、%同理。(通常,将运算符放在赋值号的左侧,如*=或%=)
自增/自减运算符
加法和减法运算中,如果是x = x + 1这样的算式可以写成x += 1,还可以更加简化x++,同样,x = x - 1也可以简化成x--。这就是常说的自增/自减运算符。例如:
int n = 10;
System.out.println("before n:" + n);
n++;
System.out.println("after n:" + n);
输出结果:
public class BasicStatement {
public static void main(String[] args){
int n;
{
int k;
}
}
}
但是不能在嵌套的两个块中声明同名的变量。例如以下代码就有错误,无法编译:
public class BasicStatement {
public static void main(String[] args){
int n;
{
int k;
int n; // ERROR--Variable 'n' is alread defined in the scope
}
}
}
再看看这段代码
public class BasicStatement {
public static void main(String[] args){
int n = 10;
{
int k = 12;
}
k = 12; // can't resolve symbol 'k'
}
}
编译器会提示can't resolve symbol 'k',也就是提示我们说'k'这个变量不存在!因为'k'变量声明的时候外面套了一层{},而k=12对'k'重新赋值的这条语句又在'k'声明的块外部,所以编译器就找不到'k'咯。再回头看看我前面说的——块确定了变量的作用域。能理解吗?能理解就太好了,要是不能理解的话,我会在后面梳理对象和类的部分再进行详细讲解,当然你也可以随时在QQ群内提问会给你一一解答的。
条件语句
在Java中,条件语句的格式为
if (condition) statement
条件statement需要用括号{}括起来
例如:
public class BasicStatement {
public static void main(String[] args) {
int n = 10;
if (n != 0){
System.out.println("n的值不为0");
}
}
}
当n的值不等于0,那么执行System.out.println("n的值不为0");。
但是一般情况下常见的条件语句格式是这样的:
if (condition) statement1 else statement2
例如:
public class BasicStatement {
public static void main(String[] args) {
int x = 20;
if (x >= 10) {
x--;
} else {
x++;
}
}
}
当x的值大于或等于10的时候,执行x--,否则执行x++。其中else部分是可选的。
那么问题来了,以上案例都是针对单条件的判断语句, 针对对多条件进行判断操作当然也有方法,也就是完整的条件语句格式:
if (condition1) statement1 else if (condition2) statement2 esle statement3
给出完整的条件语句实例:
public class BasicStatement {
public static void main(String[] args) {
int x = 20;
if (x == 1) {
System.out.println("x==1");
} else if (x == 2) {
System.out.println("x==2");
} else if (x == 3) {
System.out.println("x==3");
} else {
System.out.println("x不为1、2、3");
}
}
}
可知else if与if用法相同,后面一定要跟条件,而语句是顺序执行下来的,当满足某个条件后,后续条件判断将不再执行,如果所有条件都未满足,则执行else后的语句。如上面代码,输出:x不为1、2、3。
循环语句
while循环
当条件为true时,while循环执行一条语句(也可以是一个语句块)。常用格式为
while (condition) statement
如果开始循环条件值就为false,则while循环体一次也不执行。
实例,有一个进度条,最大值是100,从0开始每次加1,当进度条满,则不再继续往上加:
public class BasicStatement {
public static void main(String[] args) {
int progress = 0;
while (progress < 100) {
progress += 1;
}
System.out.println("Progress的值为:" + progress);
}
}
输出结果:Progress的值为:100
do-while循环
while循环首先检测循环条件,因此循环体中的代码可能不被执行。如果要循环体至少执行一遍,就应该把检测条件放在最后使用do/while循环语句实现。语法格式:
do statement while (condition);
末尾的;千万不能省略,因为这代表了一条语句的终止。
这种循环语句限制性语句块,再检测循环条件,然后重复执行语句,再检测循环条件,以此类推,知道不满足循环条件退出循环。以上述进度条实现为实例:
public class BasicStatement {
public static void main(String[] args) {
int progress2 = 0;
do {
progress2 += 1;
} while (progress2 < 100); // 切记分号不能省略
System.out.println("Progress2的值为:" + progress2);
}
}
输出结果:Progress2的值为:100,以上代码就不做过多解释了。下面解释一种特殊的循环结构——for循环
for循环
又称确定循环,是支持迭代的一种通用结构,与while循环和do while循环不一样的时,for循环能够通过类似计数器的变量来控制迭代次数。例如,下面代码打印从0~9的数字:
public class BasicStatement {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
}
}
for语句的三部分应该对同一个计数器i变量进行初始化int i = 0、检测i < 10和更新i++。
foreach循环
foreach实际上是一种“通用for循环”,格式简化了很多,没有对计数器的操作。foreach循环的格式为for(datatype value : data),data是遍历对象,应该是继承了itreable接口的的数据类型,如数组、字符串、集合等。基本用法如下:
public class BasicStatement {
public static void main(String[] args) {
int[] numbs = {1, 2, 3, 4, 5};
for (int j : numbs) {
System.out.println(j);
}
}
}
switch多重选择
public class BasicStatement {
public static void main(String[] args) {
int x = 20;
switch (x) {
case 1:
System.out.println("x==1");
break;
case 2:
System.out.println("x==2");
break;
case 3:
System.out.println("x==3");
break;
default:
System.out.println("x不为1、2、3");
break;
}
}
}
switch语句比起if-else简化了很多,括号中不必写整条语句,只需要写需要选择的那个数,而在case后面直接填写值,就不用像if-else那样name==value类似这样去判断了。