Java基础语法
# 变量与运算符
## 关键字与保留字
### 关键字:
被Java赋予特殊意义,有专门的用途的字符串,关键字所有字母都是小写
**用于定义数据类型的关键字**
class
interface
enum
byte
short
int
long
float
double
char
boolean
void
**用于定义流程控制的关键字**
if
else
switch
case
default
while
do
for
break
continue
return
**用于定义访问权限修饰符的关键字**
private
protected
public
**用于定义类,函数,变量修饰符的关键字**
abstract
final
static
synchronized
**用于定义类与类之间关系的关键字**
extends
implements
**用于定义建立实例及引用实例,判断实例的关键字**
new
this
super
instanceof
**用于异常处理的关键字**
try
catch
finally
throw
throws
**用于包的关键字**
package
import
**其他修饰符关键字**
native
strictfp
transient
volatile
assert
***** **用于定义数据类型值的字面值**
true
false
null
### 保留字
Java保留字:现有Java版本尚未使用,但以后版本可能会作为关键字使
用。自己命名标识符时要避免使用这些保留字
goto 、const
## 标识符
- Java 对各种**变量**、**方法**和**类**等要素命名时使用的字符序列称为标识符
- **技巧:凡是自己可以起名字的地方都叫标识符**。
### 标识符定义规则
- 由**英文字母**,**0-9**,**_下划线**,或者**$**组成
- **数字不可以开头。**
- **不可以使用关键字和保留字,但能包含关键字和保留字。**
- **Java** **中严格区分大小写,长度无限制。**
- **标识符不能包含空格。**
### Java中的名称命名规范
- **包名**:多单词组成时所有字母都小写:xxxyyyzzz
- **类名、接口名**:多单词组成时,所有单词的首字母大写:XxxYyyZzz
- **变量名、方法名**:多单词组成时,第一个单词首字母小写,第二个单词开始每个
单词首字母大写:xxxYyyZzz
- **常量名**:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
- 注意1:在起名字时,为了提高阅读性,要尽量有意义,“见名知意”。
- 注意2:java采用unicode字符集,因此标识符也可以使用汉字声明,但是不建议使用。
## 变量
### 注意:
- Java中每个变量必须先声明,后使用
- 使用变量名来访问这块区域的数据
- 变量的作用域:其定义所在的一对{ }内
- 变量只有在其作用域内才有效
- 同一个作用域内,不能定义重名的变量
### 声明和赋值变量
<变量类型>+<变量名>=<值>
eg: int a =10
## 数据类型
### 基本数据类型
#### 数值型
##### 整数型
- int:4字节 -2 ^31 ~ 2^31 -1 (约21亿)
- short:2字节 -2 ^15 ~2^15 - 1
- long:8字节 -2 6^63~ 2^63 -1
- byte:一字节(8bit位)
##### 字符型
- double
- float
#### 字符型
- char
#### 布尔类型
- boolean
### 引用数据类型
- 类(class),字符串也在这里
- 接口(interface)
- 数组([])
## 变量类型
### 成员变量
- **在方法体外,类体内声明的变量称为 ** **成员变量**
- 实例变量(不用static修饰)
- 类变量(用static修饰)
### 局部变量
- **在方法体内部声明的变量称为** **局部变量**
- 形参(方法、构造器中定义的变量)
- 方法局部变量(在方法内定义)
- 代码块局部变量(在代码块内定义)
## 运算符
- 算数运算符:+ - * / %
- 赋值运算符: = += -= *= /= %=
- 比较运算符: < > <= >= !=
- 逻辑运算符:& | ! &&(短路与) ||(短路或)
- 位运算符:A:0011 1100
B:0000 1101
----------------------------------------------------------------------------------------------------
A&b:0000 1100(上下两位进行比较,全1则1,有0就0)
A|B:0011 1101(上下两位进行比较,全0则0,有1就1)
A^B(异或):0011 0001(上下两位进行比较,相同则0,不同则1)
~B(取反):1111 0010
<<(左移):左移一位相当于*2
>>(右移):右移一位相当于/2
例:2*8=16的最快算法:2<<3 效率及高
- 三元运算符:a+=b相当于a = a+b
a-=b相当于a = a-b
x?y:z(如果x为true则输出y否则输出z)
## Scanner
Scanner用来获取用户的输入
基础语法:Scanner scanner = new Scanner(System.in);
通过Scanner类的next()或nextline判断是否还有字符串的输入,使用nextline后输入的字符串中间可以加空格或者回车
```
使用next方式的
```
public class Base {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方式接收");
if(scanner.hasNext()){
String next = scanner.next();
System.out.println("输入的字符串为:"+next);
}
scanner.close();
}
}
```

```
使用nextline方式接收
```
public class Base {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextline方式接收");
if(scanner.hasNext()){
String next = scanner.nextLine();
System.out.println("输入的字符串为:"+next);
}
scanner.close();
}
}
```

## 程序流程控制
- 顺序结构\
程序从上到下逐行地执行,中间没有任何判断和跳转。
- 分支结构
根据条件,选择性地执行某段代码。
有if…else和switch-case两种分支语句
- 循环结构
根据循环条件,重复性的执行某段代码
有while、do…while、for三种循环语句
注:JDK1.5提供了foreach循环,方便的遍历集合、数组元素
### swich-case结构
```
含有case穿透
```
public class Base01 {
public static void main(String[] args) {
char grade = 'C';
switch (grade){
case 'A':
System.out.println("优秀");
break;
case 'B':
System.out.println("良好");
case 'C':
System.out.println("及格");
case 'D':
System.out.println("不及格");
case 'E':
System.out.println("太次了");
}
}
}
```

**case穿透:**若是case后不加break,则不会停止到当前case的位置,会一直向下执行
注:case后面要加冒号
### while-do while
while是先判断后执行
dowhile是先执行后判断 总是会保证循环会被先执行一次
```

浙公网安备 33010602011771号