Java基础知识(1) - 编程基础
首先我们需要知道,Java是一门强类型语言,这里所说的强类型指的是所有的变量声明都必须显示的指出这个变量的类型。比如我们的lamada
表达式,你必须用函数式接口类型的变量去装载lamada
表达式。在Java中一共有两种类型的变量,一种是基本类型,一种是引用类型。我们重点介绍基本类型以及它的字面量表示。
基本类型
-
整型
类型 大小 byte 1Byte short 2Byte int 4Byte long 8Byte -
浮点型
类型 大小 float 4Byte double 4Byte -
字符型
类型 大小 char 2Byte -
布尔型
类型 大小 boolean —
基本类型的字面量表示
-
整型
在Java中我们可以使用
_
分隔数字,如果后跟l
或L
表示它是一个long
型整数,那么有了这个规则,我们介绍Java中二进制、八进制、十进制和十六进制的表示- 二进制:
0b
或0B
开头 - 八进制:
0
开头 - 十进制:生活中的十进制表示方式
- 十六进制:
0x
或0X
开头
- 二进制:
-
浮点型
在Java中以
f
或F
结尾表示这个字面量是float
类型-
小数点表示:
1.4
、1.
、.4
-
科学计数法表示:
14e-1
、1.4e+1
-
-
字符型
- 字面量表示:
'b'
- Unicode转码表示:
\u3054
- 字面量表示:
-
布尔类型
- 真:
true
- 假:
false
- 真:
变量和常量
在所有的编程语言中都有变量和常量两种类型,在计算机中我们应该明确,变量和常量就是内存当中的一块区域,变量就是这个内存区域中存储的值是可变化的,常量指的是内存区域所存储的值是不变的。在Java中一个变量的命名规则是:以字母开头,后跟字母、数字、下划线、美元符号。常量的命名规则也是一样的,在声明的时候我们采用final
关键字来声明一个常量 。那么在实际开发中,我们人为的将变量使用小驼峰式来命名,常量使用大写字母和下划线来命名。
运算符
到了运算符这块,我们应该十分明确编程语言中关于表达式expression
和语句statement
的概念,什么是一个表达式,什么是一条语句,需要注意的是表达式的定义是递归的。表达式是可以由字面量或表达式构成。这里读者可学习编译原理这门课程,会加深对于表达式的理解,这里不做赘述。下面我们介绍Java中的运算符,以及各个算符的优先级。
-
自增、自减运算符
- 自增:
expression++
、++expression
- 自减:
expression--
、--expression
- 自增:
-
算术运算符
- 加:
expression1 + expression2
- 减:
expression1 - expression2
- 乘:
expression1 * expression2
- 除:
expression1 / expression2
- 模:
expression1 % expression2
- 加:
-
关系运算符
-
大于:
expression1 > expression2
、expression1 >= expression2
-
小于:
expression1 < expression2
、expression1 <= expression2
-
等于:
expression1 == expression2
-
与:
condition1 && condition2
-
或:
condition1 || condition2
-
非:
!condition
-
三元运算符:
condition ? expression1 : expression2
-
-
位运算符
- 与:
expression1 & expression2
- 或:
expression1 | expression2
- 非:
~expression
- 异或:
expression1 ^ expression2
- 右移:
expression1 >> expression2
,expression1 >>> expression2
- 左移:
expression1 << expression2
- 与:
-
赋值运算符
- 赋值:
variable = expression
- 加赋值:
variable += expression
- 减赋值:
variable -= expression
- 乘赋值:
variable *= expression
- 除赋值:
variable /= expression
- 模赋值:
variable %= expression
- 与赋值:
variable &= expression
- 或赋值:
variable |= expression
- 异或赋值:
variable ^= expression
- 右移赋值:
variable >>= expression
、variable >>>= expression
- 左移赋值:
variable <<= expression
- 赋值:
-
优先级运算符
- 括号:
()
- 括号:
运算符优先级
下面这张表格概括起来就是:方法调用 > 单目运算符 > 算术运算符 > 位运算符 > 关系运算符 > 赋值运算符
运算符 | 结合性 |
---|---|
object.method() | 从左往右 |
!、++、–、new | 从右往左 |
*、/、% | 从左往右 |
+、- | 从左往右 |
<<、>>、>>> | 从左往右 |
<、<=、>、>=、instanceof | 从左往右 |
==、!= | 从左往右 |
& | 从左往右 |
^ | 从左往右 |
| | 从左往右 |
&& | 从左往右 |
|| | 从左往右 |
? : | 从右往左 |
=、+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=、>>>= | 从右往左 |
流程控制
首先我们得明确块block
这个概念,所谓块就是用{}
包裹起来的语句,那么我们得注意,Java值不允许在嵌套块中定义重名变量的。这个和C系列语言【C、C++、Go等】有点不同。
-
条件流程
if (condition) statement;
if (condition) statement; else statement;
if (condition) statement; else if (condition) statement; else statement;
-
循环流程
while (condition) statement;
do statement; while (condition)
for (expression1; condition; expression2) statement;
-
选择流程
switch (choice) case 1: statement1; case 2: statement2; default: statement3;
-
中断流程
break
continue
return
小记
介绍了这么多,可能有些人觉得这些都没用,每必要知道这么细致,其实只有掌握了规则才能玩出花来,比如很简单的&
和|
的优先级问题,一些高级的写法,虽然我们确实用不到,可是掌握了这些,遇到源码中一些花里胡哨的写法,我们才不会懵逼,比如HashMap
中的一些操作。