0%

Java基础语法

1. 基本数据类型

在这里插入图片描述

  • 注意事项1
    1
    2
    byte i = 5;
    i = i + 5;

上述代码示例编译时会报错,因为语句i = i +5;中右边的5是int类型值,所以 i + 5也是int类型值。可以写成如下形式:

1
2
3
4
5
byet i = 5;
i += 5;
----------------
byet i = 5;
i = (byte)(i + 5);

i += 5;相当于语句i = (byte)(i + 5);。其在底层默认会进行类型转换。

  • 注意事项2
    1
    2
    byte i = 127;
    i += 1;

运行上述代码之后输出的结果是-128。
这是因为byte类型的127在计算机底层是表示形式是01111111。加1之后则变为10000000,也就是-128。

  • 注意事项3

长整型的值有一个后缀L或l,比如:

1
2
long i = 1554555L;
long j = 1554555l;

float类型的值有一个后缀F或f,比如:

1
2
float i = 3.14F;
float j = 3.14f;

当然可以在浮点数值后面加上后缀D或d以表示是double类型数值。

  • 注意事项4

整型值可以用前缀0x或0X表示其是十六进制值。
从Java 7开始,整型值可以用前缀0b或0B表示其是二进制值,还可以在数字字面加下划线,更容易理解。比如:

1
2
3
4
int i = 1_000_000; 	//表示十进制的一百万
int j = 0b1010; //相当于十进制的10
System.out.println(j);//输出自动转为十进制值 10
int j = 0b1_010; //相当于十进制的10

2. <<、>>与>>>

数值的二进制值的位移。在与2的倍数进行数值运算时,位移运算比传统的乘法运算速度要快。

<<(左移):左移几位其实就是该数据乘以2的几次方。<<可以完成2的次幂运算。比如:

1
2
3 << 2 = 12  -->  3 * 2^2 = 12
3 << 3 = 24 --> 3 * 2^3 = 24

>> (右移):右移几位其实就是该数据除以2的几次幂。右移后对于高位出现的空位,原来高位是什么就用什么补这个空位。比如:

1
2
6 >> 1 = 3  -->  6 / 2 = 3
6 >> 2 = 1 --> 6 / 2^2 = 1

>>> (无符号右移):数据进行右移时,高位出现的空位,无论原高位是什么,空位都用0补。

3. &与&&

& 运算符有两种用法: (1)按位与; (2)逻辑与。

1
2
3
4
5
6
7
8
9
10
按位与:
int i = 3 & 2;
int i = 0011 & 0010 = 0010;//转为二进制数进行&位运算
int i = 2;

逻辑与:
boolean i = true;
boolean j = false;
boolean r = i & j = false;//判断i为真,后在判断j为假,得出假
boolean r = !i & j = false;//判断!i为假,再判断j为假,得出假

&& 运算符是 短路与运算。

1
2
3
boolean i = flase;
boolean j = true;
boolean r = i && j;//判断i为假,不再判断j,直接得出假

4. break

面临需要跳出嵌套循环的情况时,break语句可以跳出指定的循环,可以通过标号来完成。但是就像要避免使用 goto 一样,应该避免使用带标签的 break。

1
2
3
4
5
6
A:for (int x = 0; x<3; x++) {
B:for (int y=0; y<3; y++) {
System.out.println("x" + x);
break A;
}
}

5. continue

continue可以提前结束循环,继续下次循环(可以通过标号指定某一循环)。同样应该避免使用带标签的continue。

1
2
3
4
5
6
A:for (int x = 0; x<3; x++) {
B:for (int y=0; y<3; y++) {
System.out.println("x" + x);
continue A;
}
}

注意:事实上,可以将标签应用到任何语句中,甚至可以应用到 if 语句或者块语句中,示例代码如下:

1
2
3
4
5
6
7
8
9
10
11
int i = 10;
dis:if (i > 0) {
if (i == 10) {
System.out.println("跳出if语句");
i = 0;
}
else
break dis;
}
System.out.println("==== " + i);
dis:System.out.println("hello");

6. switch

支持数据类型:

  • char、byte、short或int的常量表达式
  • 枚举常量
  • 从Java SE 7开始,case标签还可以是字符串字面量

与if语句的比较:
if语句:

  1. 对具体的值进行判断
  2. 对区间进行判断
  3. 对运算结果是boolean类型的表达式进行判断

switch语句:

  1. 对具体的值进行判断(对于几个固定值的判断,建议使用switch语句,因为switch语句会将具体的要判断的值都加载进内存中,效率相对高一些)
  2. 值的个数通常是固定的
------ 本文结束------