Java 语言概述
Java 是一种优秀的程序设计语言,具有令人赏心悦目的语法和易于理解的语义。有一系列计算机软件和规范形成的技术体系,提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场所。
Java 的注释
Java 中的注释分为以下三种
java
单行注释: // 注释内容
多行注释: /* 注释内容 */
文档注释: /** 文档注释 */
- 多行注释不能嵌套使用
- 无论是单行还是多行注释,都不参与编译,即编译之后生成的.class文件中不包含注释信息。
标识符
在程序中由用户给类名、方法名或者变量所取的名字
规则
标识符中可以包含:字母、数字以及下划线和$符号等。
不能以数字开头,也不能是关键字,且严格区分大小写。
关键字
关键字是由 Java 语言提前定义好的,有特殊含义的标识符,或者保留字。不能使用关键字定义标识符。如 private、protected、public、abstract、class、eunm、extends 等。
字面常量
常量即程序运行期间,固定不变的量称为常量。
java
System.out.println(123);
System.out.println("I LOVE JAVA!");
System.out.println(true);
System.out.println(false);

字面常量的分类
- 字符串常量:由""括起来的
- 整形常量:直接写的没有小数点的数字
- 浮点数常量:直接写的有小数点的数字
- 字符常量: 由 '' 括起来的单个字符
- 布尔常量: true 和 false
- 空常量: null
数据类型
Java中数据类型分两大类:基本数据类型和引用数据类型。其中基本数据类型分四类八种:
- 四类:整型、浮点型、字符型、布尔型
- 八种:

需要注意的是,在 Java 中,整型和浮点型都是有符号的。且整型默认为 int , 浮点型默认为 double 。
引用数据类型将在后面的文章中介绍。
变量
对于经常改变的内容(如分数、体重)在 Java 中称为变量,数据类型就是用来定义不同种类变量的。
语法格式
java
数据类型 变量名 = 初始值;
整型变量
java
int a = 100;
System.out.println(a);

在给 int 类型设置初始值时,不能超过 int 类型的表示范围
java
int b = 999999999999999;

使用变量前一定要赋值,int 的包装类为 Integer
java
System.out.println(Integer.MAX_VALUE);// int 类型的最大值
System.out.println(Integer.MIN_VALUE);// int 类型的最小值

长整型变量
java
long a = 100L;
System.out.println(a);
长整型变量的初始值后加l或L,推荐加 L

java
System.out.println(Long.MAX_VALUE);
System.out.println(Long.MIN_VALUE);
无论在多少位系统,long类型的大小是 8 个字节,Long 是 long 类型的包装类。

短整型变量
java
short a = 10;
System.out.println(a);
System.out.println(Short.MAX_VALUE); // short 类型的最大值
System.out.println(Short.MIN_VALUE); // short 类型的最小值
无论在多少位系统下 short 类型所占空间都是 2 个字节,Short 是 short 的包装类。

字节型变量
java
byte a = 10;
System.out.println(a);
System.out.println(Byte.MAX_VALUE);// byte 类型的最大值
System.out.println(Byte.MIN_VALUE); // byte 类型的最小值
无论在多少位系统下 byte 类型所占空间都是 1 个字节,Byte 是 byte 的包装类。

浮点型变量
双精度浮点型
java
//Java 中浮点数在内存中的存储也遵循 IEEE 754
double d = 3.14;
System.out.println(d);
// double 在任何系统下都占 8 个字节
System.out.println(Double.MAX_VALUE); // double 类型的最大值
System.out.println(Double.MIN_VALUE); // double 类型的最小值

double 在任何系统下都占 8 个字节,Double 是 double 的包装类。
java
double num = 1.1;
System.out.println(num * num);

Java 中浮点数在内存中的存储也遵循 IEEE 754,避免不了精度误差。
单精度浮点型
java
float num = 3.14f;// 使用 float 赋值必须加 f 或 F
System.out.println(num);
System.out.println(Float.MAX_VALUE);// float 的最大值
System.out.println(Float.MIN_VALUE);// float 的最小值

float 类型在 Java 中占四个字节,由于表示的数据范围较小,一般用到浮点数都是用 double。
Float 是 float 的包装类。
字符型变量
java
char c1 = 'A';
char c2 = '1';
// Java 采用的是 Unicode 字符集,一个字符占用两个字节,可以表示更多字符包括中文
char c3 = '哈';
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);

Java 中采用 '' + 单个字符表示字符字面值。Java 采用的是 Unicode 字符集,一个字符占用两个字节,可以表示更多字符包括中文。char 类型的包装类是 Character。
布尔型变量
布尔类型用来表示真假
java
boolean a = true;
boolean b = false;
System.out.println(a);
System.out.println(b);

Java 中没有 0 为假,非 0 为真这种说法,boolean 类型的包装类为 Boolean 。Java 虚拟机规范中,并没有明确规定 boolean 占几个字节,也没有专门用来处理 boolean 字节码的指令,在 Oracle 公司的虚拟机实现中,boolean 占一个字节。
类型转换
Java 是强类型编程语言,不同类型之间的变量相互赋值时,会有严格的校验。
java
int a = 10;
long b = 100L;
// 大的数据类型不能直接赋值给小的数据类型
a = b;

自动类型转换
代码不经过任何处理,编译时编译器会自动处理,数据范围小的转为数据范围大的时会自动进行。
java
int a = 10;
short b = 20;
// 小的数据类型可以赋值给大的数据类型
a = b;
System.out.println(a);

强制类型转换
代码需经过一定处理,数据范围大的到数据范围小的需手动处理。
java
int a = 10;
long b = 100L;
a = (int)b;
System.out.println(a);

强制类型转换会存在精度丢失
java
int a = 128;
byte b = 0;
b = (byte) a;
System.out.println(b);

这里 byte 类型的取值范围是 -128 ~ 127 , a 强转为 byte 类型时, 发生截断,存进来的就是 1000 0000 这是规定的 -128 的表示形式。
不相干的数据类型不能转换
java
boolean a = true;
int b = (int) a;

类型提升
不同类型的数据之间相互运算时,数据类型小的会被提升到数据类型大的。
- int 和 long 之间:int 会提升为 long
java
int a = 10;
long b = 100L;
int c = a + b;

- byte 和 byte 运算会自动提升为 int
java
byte a = 10;
byte b = 20;
byte c = a + b;

由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据,诸如 byte 和 short 这种低于 4 个字节的类型,会先提升成 int 再参与计算。
引用数据类型将在后面的文章介绍。