一、数据类型与变量
1、数据类型
数据类型 | 关键字 | 内存 | 范围 |
字节型 | byte | 1字节 | -128 ~ 127 |
字符型 | char | 2字节 | 0 ~ 65535 |
短整型 | short | 2字节 | -32768 ~ 32767 |
整型 | int | 4字节 | -2^31 ~ 2^31-1 |
长整型 | long | 8字节 | -2^63 ~ 2^63-1 |
单精度浮点型 | float | 4字节 | 一般不关注 |
双精度浮点型 | double | 8字节 | 一般不关注 |
布尔型 | boolean | 没有明确规定 | true和false |
2、变量
格式:
数据类型 变量名 = 初始值;
例子:
int a = 10;
char c = 'A';a = 100; // 上面a已经定义,可以直接赋值
int a1 = 1, a2 = 2, a3 = 3; // 一行内定义多个相同类型的变量
float f = 1.0f; //F也可以
System . out . println (a );System . out . println (c );System . out . println (f );
注意:
1、在系统下int 都是4个字节,long都是8个字节
2、整型默认为int,浮点型默认为double
3、float在定义时需加f或F
4、long在定义时可加L或l,建议加L
3、类型转换
当参与运算的数据类型不同时,就会进行类型转换
3.1、自动类型转换
特点:数据范围小的值转为数据范围大的时会自动转换
例子:
int a = 10;
long b = 10L;
b = a; // a的范围小,b的范围大
// a = b; 编译失败
3.2、强制类型转换
特点:数据范围大的向数据范围小的转换
例子:
int a = 10;
long b = 10L;
// a = b; 编译失败
a = (int)b; // 强制类型转换
注意:强制类型转换可能会造成精度丢失
4、类型提升
不同数据类型进行运算时,数据类型小的会提升到数据类型大的
例子:
int a = 10;
long b = 20;
int c = a + b; // 错误,a+b的值被提升为long
long d = a + b; // 正确
byte b1 = 10;
byte b2 = 20;
byte b3 = b1 + b2; // 错误,byte和short低于四个字节,会被提升成为int
byte b4 = (byte)(b1 + b2); // 正确
5、字符串类型
例子:
// int转成String int num = 10; String str1 = num + ""; //方法一 System.out.println(str1); //方法2 System.out.println(String.valueOf(num)); // String转成int String str = "7"; System.out.println(Integer.parseInt(str)); String str1 = 10 + 20 + "ABC"; String str2 = "ABC" + 10 + 20; System.out.println(str1);// 30ABC 先计算两个整数再和字符串拼接 System.out.println(str2);// ABC1020 第一个是字符串,拼接后也是字符串
二、运算符
Java中的运算符可分为:算术运算符、关系运算符、逻辑运算符、位运算符、移位运算符、条件运算符。
1、算术运算符
1.1、四则运算符(+ - * / %)
例子:
int num1 = 10;
int num2 = 3;
// 使用加法运算符
System.out.println(num1 + num2);
// 使用减法运算符
System.out.println(num1 - num2);
// 使用乘法运算符
System.out.println(num1 * num2);
// 使用除法运算符
System.out.println(num1 / num2);
// 使用取模运算符
System.out.println(num1 % num2);
1.2、增量运算符(+= -= *= /= %=)
例子:
int a = 10;
System.out.println(a += 3);
System.out.println(a -= 3);
System.out.println(a *= 3);
System.out.println(a /= 3);
System.out.println(a %= 3);
1.3、自增自减运算符(++ --)
例子:
int a = 5;
System.out.println(a++);
System.out.println(++a);
System.out.println(a--);
System.out.println(--a);
2、关系运算符
Java 中的关系运算符用于比较两个值之间的关系,并返回一个布尔值(true 或 false)。
例子:
int a = 5; int b = 10; // 使用等于运算符 System.out.println(a == b); // 输出: false // 使用不等于运算符 System.out.println(a != b); // 输出: true // 使用大于运算符 System.out.println(a > b); // 输出: false // 使用小于运算符 System.out.println(a < b); // 输出: true // 使用大于等于运算符 System.out.println(a >= b); // 输出: false // 使用小于等于运算符 System.out.println(a <= b); // 输出: true
3、逻辑运算符
Java 的逻辑运算符包括&&、||、!、^。
3.1、逻辑与(&&)
如果两个操作数都为true,则结果为真,其余结果为假。
例子:
boolean a = true;
boolean b = false;
boolean result = a && b; // 因为 a 为 true,但 b 为 false
System.out.println(result); // 输出: false
3.2、逻辑或(||)
如果两个操作数有一个为true,则结果为真。
例子:
boolean a = true;
boolean b = false;
boolean result = a || b; // 因为 a 为 true
System.out.println(result); // 输出: true
3.3、逻辑非(!)
如果条件为true,结果为false;条件为false,结果为true。
例子:
boolean a = true;
boolean result = !a; // 因为 a 为 true,逻辑非之后变为 false
System.out.println(result); // 输出: false
4、位运算符
Java的位运算符用于直接对整数类型的二进制位进行操作。
4.1、按位与&
只有当两个相应的二进制位都为1时,结果位才为1。
例子:
int a = 5; // 5 = 0101
int b = 7; // 7 = 0111
int c = a & b; // 5 = 0101
System.out.println(c); // 输出: 5
4.2、按位或|
只有两个相应的二进制位中至少有一个为1时,结果位才为1。
例子:
int a = 5; // 5 = 0101
int b = 7; // 7 = 0111
int c = a | b; // 7 = 0111
System.out.println(c); // 输出: 7
4.3、按位取反~
对该二进制位进行取反操作。
例子:
int a = 5; //5 = 0101
int b = ~a; // 补码 1010 反码 1001 原码 1110
System.out.println(b); // 输出: -6
4.4、按位异或^
当两个相应的二进制位不同时,结果位才为1。
例子:
int a = 5; // 5 = 0101
int b = 7; // 7 = 0111
int c = a ^ b; // 2 = 0010
System.out.println(c); // 输出: 2
5、移位运算符
Java的移位运算符包括左移(<<)、右移(>>)和无符号右移(>>>)。
5.1、左移<<
左移运算符将整数的所有位向左移动,右侧用0补充。
例子:
int a = 5; // 5 = 0101
int b = a << 1; // 10 = 01010
System.out.println(b); // 输出: 10
5.2、右移>>
右移运算符将整数的所有位向右移动,左侧用符号位补充(正数补0,负数补1)。
例子:
int a = 5; // 5 = 0101
int b = a >> 1; // 2 = 0010
System.out.println(b); // 输出: 2int c = -5; //-5 补码 1101 反码 1100 原码 1011
int d = c >> 1; // -3 补码 1101 反码 1100 原码 1011
System.out.println(d); // 输出: -3
5.3、无符号右移>>>
无符号右移运算符将整数的所有位向右移动,左侧用0补充。
例子:
int a = 5; // 5 = 0101
int b = a >>> 1; // 2 = 0010
System.out.println(b); // 输出: 2
6、条件运算符
表达式 1 ? 表达式 2 : 表达式 3
例子:
int a = 5;
int b = 7;
int max = (a > b) ? a : b;
System.out.println(max); // 输出 7