# Java基础语法
## 一、变量
### 1.1 标识符
* 命名规则:可以由字母、数字、下划线和美元符号组成,不能以数字开头。
* 标识符严格区分大小写
* 标识符不能是Java关键字和保留字
* 标识符的命名最好能反映其作用
### 1.2 关键字
![Java关键字](https://box.kancloud.cn/13851fda4e4d21852378d97d99f87652_1153x383.jpg)
### 1.3 变量
什么是变量?
三个元素:变量类型、变量名和变量值。
![Java数据类型](https://box.kancloud.cn/248e1788e094b03083afe0baf11d8c17_556x343.jpg)
变量名的命名规则:
* 满足标识符命名规则
* 符合驼峰式命名规范
* 尽量简单,做到见名知意
* 变量名的长度没有严格显示
类的命名规则:
满足Pascal命名法规范
### 1.4 数据类型
![Java数据类型](https://box.kancloud.cn/3f96db6abca272d1c2028a6b17abf105_1066x490.jpg)
**按类型分为:**
基本数据类型、引用数据类型。
**按照作用范围分为:**
类级、对象实例级、方法级、块级
![Java数据类型](https://box.kancloud.cn/3987038de0be7805a25c632a11ab1d4c_948x494.jpg)
**整型字面值:**
Java中有三种表示整数的方法:十进制、八进制、十六进制。
* 八进制:以0开头
* 十六进制:以0x或0X开头,包括0-9、A-F
**浮点数字面值:**
浮点型字面值默认情况下表示double类型,也可以在值后加d或D。如表示float类型,则需要在字面值后加F或f。
```
package webjust.org;
public class FloatDemo {
public static void main(String[] args) {
// 定义一个单精度浮点型变量,存放1234.328
float f = 1234.328f;
System.out.println("f=" + f);
// 定义一个双精度浮点型变量,存放5623.465
double d = 5623.464;
System.out.println("d=" + d);
// 将整型赋值给浮点型
double d1 = 123;
System.out.println("d1=" + d1);
// 变量间的赋值
double d2 = d;
System.out.println("d2=" + d2);
/*
f=1234.328
d=5623.464
d1=123.0
d2=5623.464
*/
}
}
```
**字符型字面值:**
字符型字面值用单引号内的单个字符表示。
ASCII码:
* ASCII 美国标准信息交换代码
* 基于拉丁字母的一套电脑编码系统
* 主要用于显示现代英语和其他西欧语言
* 使用7位或8位二进制数组合来表示128或256种可能的字符
```
package webjust.org;
public class CharDemo {
public static void main(String[] args) {
// 定义一个字符变量存放字符'a'
char a = 'a';
char ch = 65;
char ch2 = 65535;
// 如果字面值超出了char类型所表示的数据范围,需要进行强制数据类型转换
char ch3 = (char) 65536;
System.out.println(a); // a
System.out.println(ch); // A
System.out.println(ch2);
System.out.println(ch3);
char c = '\u005d';
System.out.println("c=" + c); // c=]
}
}
```
Unicode编码:
Unicode编码的目标是支持世界上所有的字符集。
Unicode表示法,在值前加前缀 `\u`。
### 1.5 变量声明
```
格式:数据类型 变量名;
```
赋值:
* 使用 `=` 运算符进行赋值。
* `=` 叫做赋值运算符,将运算符右边的值赋给左边的变量。
* 可以在定义变量的同时给变量赋值,即变量的初始化。
### 1.6 局部变量的存储方式
基本数据类型变量存储在内存的“栈”上。
![Java局部变量的存储方式](https://box.kancloud.cn/e42b4f368e672c0bb0eec017fd20063e_927x523.jpg)
### 1.7 类型转换
类型转换分为自动类型转换和强制类型转换。
**自动类型转换**又叫隐式类型转换。
图:自动类型转换顺序
![Java自动类型转换顺序](https://box.kancloud.cn/c2548be7cfcead725aee2a4f86732160_1082x497.jpg)
**强制类型转换**:如果A类型的数据表示范围比B类型大,则将A类型的值赋值给B类型,需要强制类型转换。
格式:`(数据类型)数值`
```
package webjust.org;
public class TypeExchange {
public static void main(String[] args) {
// char类型和int类型之间的转换
char c = (char) 65535;
int n;
n = c; // 隐式类型转换
System.out.println(c);
System.out.println(n);
// 整型和浮点型类型之间的转换
int x = 100;
long y = x;
x = (int) y;
float f = 100000000000000L;
System.out.println("f=" + f); //f=1.0E14
// 自动类型转换出现数据丢失问题
float f1 = 134238877665544L;
System.out.println("f1=" + f1); // f1=1.34238876E14
}
}
```
### 1.8 常量
* 使用final关键字定义常量;
* 常量的值不能被修改;
* 常量的名称为大写;
```
package webjust.org;
public class FinalDemo {
public static void main(String[] args) {
int m = 10;
final int n = 1;
m = 20;
// n = 2; //语法错误
final double PI = 3.1415926;
final double MIN_VALUE = 0;
}
}
```
## 二、运算符