一. 数据类型
1.数据类型分为基本类型和引用数据类型。
基本类型有八大,分别是六个数值型:整形(byte,short,int,long)、浮点型(float,double)、一个字符型(char)、一个布尔型(boolean)。
引用数据类型:String .
图中为数据类型
2.基本类型
(1)字节类型变量 byte
byte数据类型是8位、有符号的,以二进制补码表示的整数;
最小值是-128(-2^7);最大值是127(2^7-1);默认值为0 。
基本语法格式:
byte 变量名 = 初始值;
代码示例:
byte value = 0;
System.out.println(value);
(2)短整型变量 short
short数据类型是16位、有符号的以二进制补码表示的整数
最小值是-32768(-2^15);最大值是32767(2^15 - 1);默认值是0。
基本语法格式:
short 变量名 = 初始值;
代码示例:
short value = 0;
System.out.println(value);
(3)整型变量 int
int数据类型是32位、有符号的以二进制补码表示的整数
最小值是-2,147,483,648(-;2^31);最大值是2,147,483,647(2^31 - 1);默认值是0。
基本语法格式:
int 变量名 = 初始值;
代码示例:
int num = 10; // 定义一个整型变量
System.out.println(num) ;
注意:
1. int 表示变量的类型是一个整型
2. 变量名是变量的标识. 后续都是通过这个名字来使用变量
3. Java 中 = 表示赋值(和数学不一样), 意思是给变量设置一个初始值.
4. 初始化操作是可选的, 但是建议创建变量的时候都显式初始化.
5. 最后不要忘记分号, 否则会编译失败.
6. // 表示注释. 注释作为代码的解释说明部分, 不参与编译运行.
(4)长整型变量 long
long 数据类型是 64 位、有符号的以二进制补码表示的整数
最小值是 -9,223,372,036,854,775,808(-2^63);最大值是 9,223,372,036,854,775,807(2^63 -1);
默认值为0L;
注:这种类型主要使用在需要比较大整数的系统上;
基本语法格式:
long 变量名 = 初始值;
代码示例:
long num = 10L; // 定义一个长整型变量, 初始值写作 10l 也可以(小写的 L, 不是数字1).
System.out.println(num) ;
(5) 单精度浮点型变量 float
float 数据类型是单精度、32位、符合IEEE 754标准的浮点数
float 在储存大型浮点数组的时候可节省内存空间;
默认值是 0.0f;
浮点数不能用来表示精确的值。
基本语法格式:
float 变量名 = 初始值;
代码示例:
float num = 1.0f; // 写作 1.0F 也可以
System.out.println(num);
(6)双精度浮点型变量 double
double 数据类型是双精度、64 位、符合IEEE 754标准的浮点数
浮点数的默认类型为double类型;
double类型同样不能表示精确的值。
基本语法格式:
double 变量名 = 初始值;
代码示例:
double num = 1.0;
System.out.println(num)
代码1 :
int a = 1;
int b = 2;
System.out.println(a / b);
//运算结果:0
在 Java 中, int 除以 int 的值仍然是 int(会直接舍弃小数部分),如果想要得到小数结果,则需要用double类型计算。
代码2:
double a = 1.0;
double b =2.0;
System.out.println(a / b);
//运算结果: 0.5
(7) 布尔类型变量 boolean
boolean数据类型表示一位的信息;
只有两个取值:true 和 false;
这种类型只作为一种标志来记录 true/false 情况;
默认值是 false;
基本语法格式:
boolean 变量名 = 初始值;
代码示例:
boolean value = true;
System.out.println(value);
注意:
1. boolean 类型的变量只有两种取值, true 表示真, false 表示假.
2. Java 的 boolean 类型和 int 不能相互转换, 不存在 1 表示 true, 0 表示 false 这样的用法.
(8)字符类型变量 char
char类型是一个单一的 16 位 Unicode 字符
最小值是 \u0000(即为0);最大值是 \uffff(即为65,535);
char 数据类型可以储存任何字符。
基本语法格式:
char 变量名 = 初始值;
代码示例:
char ch = '呵';
System.out.println(ch);
(9)字符串类型变量 String
基本语法格式:
String 变量名 = "初始值";
代码示例:
String name = "wulei";
System.out.println(name);
注意:1. Java 使用 双引号 + 若干字符 的方式表示字符串字面值.
2. 字符串中的一些特定的不太方便直接表示的字符需要进行转义。
转义字符 | 解释 |
\n | 换行 |
\t | 水平制表符 |
\' | 单引号 |
\'' | 双引号 |
\\ | 反斜杠 |
代码:
String str = "result = ";
int a = 10;
int b = 20;
String result = str + a + b;
System.out.println(result);
// 运行结果 : result = 1020;
二. 类型转换
Java 作为一个强类型编程语言, 当不同类型之间的变量相互赋值的时候, 会有教严格的校验。
下面我们可以看一下代码:
int a = 10;
long b = 20;
a = b; // 编译出错, 提示可能会损失精度.
b = a; // 编译通过.
int a = 10;
double b = 1.0;
a = b; // 编译出错, 提示可能会损失精度.
b = a; // 编译通过
long 表示的范围更大, 可以将 int 赋值给 long, 但是不能将 long 赋值给 int. double 表示的范围更大, 可以将 int 赋值给 double, 但是不能将 double 赋值给 int.。
不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型, 反之则不行。
int和boolean是毫不相干的两种类型,不能相互赋值。例:
int a = 10;
boolean b = true;
b = a; // 编译出错, 提示不兼容的类型
a = b; // 编译出错, 提示不兼容的类型
强制类型转换
int a = 0;
double b = 10.5;
a = (int)b;
int a = 10;
boolean b = false;
b = (boolean)a; // 编译出错, 提示不兼容的类型.
使用 (类型) 的方式可以将 double 类型强制转成 int. 但是
1. 强制类型转换可能会导致精度丢失. 如刚才的例子中, 赋值之后, 10.5 就变成 10 了, 小数点后面的部分被忽略。
2. 强制类型转换不是一定能成功, 互不相干的类型之间无法强转。
三.运算符
Java的运算符分为:
算术运算符 、关系运算符、位运算符、逻辑运算符、赋值运算符、其他运算符。
1.算术运算符
基本四则运算符 + - * / % , 值得注意的是除法 .
(1) ) int / int 结果还是 int, 需要使用 double 来计算.。
int a = 1;
int b = 2;
System.out.println(a / b); // 结果为 0
(2) 0不能作为除数。
(3)% 表示取余, 不仅仅可以对 int 求模, 也能对 double 来求模 。
System.out.println(15.5 % 2.0);
// 运行结果 1.5
(4)增量赋值运算符 += -= *= /= %=
int a = 10;
a += 1; // 等价于 a = a + 1
System.out.println(a);
(5) 自增/自减运算符 ++ --
int a = 10;
int b = ++a;
System.out.println(b);
int c = a++;
System.out.println(c);
2.关系运算符
关系运算符主要有六个: == != < > =
int a = 10;
int b = 20;
System.out.println(a == b);
System.out.println(a != b);
System.out.println(a < b);
System.out.println(a > b);
System.out.println(a = b);
注意: 关系运算符的表达式返回值都是 boolean类型。
3.逻辑运算符
逻辑运算符主要有三个: && || !
注意: 逻辑运算符的操作数(操作数往往是关系运算符的结果)和返回值都是 boolean 。
·(1) 逻辑与 &&
规则: 两个操作数都为 true, 结果为 true, 否则结果为 false
int a = 10;
int b = 20;
int c = 30;
System.out.println(a < b && b < c);
(2)逻辑或 ||
规则: 两个操作数都为 false, 结果为 false, 否则结果为 true
int a = 10;
int b = 20;
'int c = 30;
System.out.println(a < b || b < c);
逻辑非 !
规则: 操作数为 true, 结果为 false; 操作数为 false, 结果为 true(这是个单目运算符, 只有一个操作数)
int a = 10;
int b = 20;
System.out.println(!a < b);
4.位运算符
Java 中对数据的操作的最小单位不是字节, 而是二进制位.
位运算符主要有四个: & | ~ ^
5.移位运算
移位运算符有三个: << >> >>> 都是按照二进制位来运算.
6.条件运算符
条件运算符只有一个: 表达式1 ? 表达式2 : 表达式3
当 表达式1 的值为 true 时, 整个表达式的值为 表达式2 的值; 当 表达式1 的值为 false 时, 整个表达式的值为 表达式 3 的值. 也是 Java 中唯一的一个 三目运算符, 是条件判断语句的简化写法
// 求两个整数的最大值
int a = 10;
int b = 20;
int max = a > b ? a : b;
7.运算符的优先级
代码
System.out.println(1 + 2 * 3);
//运算结果 7
先计算(2*3),在计算1+(2*3)
System.out.println(10 < 20 && 20 < 30);
此时明显是先计算的 10 < 20 和 20 < 30, 再计算 &&. 否则 20 && 20 这样的操作是语法上有误的(&& 的操作数只能是 boolean).