前言
在家无聊学习java第二天
内容
常量
- 字符串常量
- 整数常量
- 浮点数常量
- 字符常量
- 布尔常量
- 空常量:null
1 | public class TwodayDemo1{ |
数据类型
java的数据类型分为两大类:
- 基本数据类型
- 引用数据类型
基本数据类型
四类八种基本数据类型
| 数据类型 | 关键字 | 内存占用 | 取值范围 |
|---|---|---|---|
| 字节型 | byte | 1个字节 | -128~127 |
| 短整型 | short | 2个字节 | -32768~32767 |
| 整形 | int(默认) | 4个字节 | -2^31^~2^31^-1 |
| 长整型 | long | 8个字节 | -2^63^~2^63^-1 |
| 单精度浮点数 | float | 4个字节 | 1.4013E-45~3.4028E+38 |
| 双精度浮点数 | double(默认) | 8个字节 | 4.9E-324~1.7977E+308 |
| 字符型 | char | 2个字节 | 0-65535 |
| 布尔类型 | boolean | 1个字节 | true false |
【SP】
java中的默认类型,整形是int,浮点型是double
字符串不是基本类型而是引用类型
浮点型可能只是一个近似值,并非精确的值
数据范围与字节数并不一定相关,如float数据范围比long更加广泛,单float是4字节而long是8字节
如果使用float需加后缀F,若使用long后缀需加L,推荐使用大写字母后缀
1
2
3
4System.out.println(100);//是int型
System.out.println(100L);//是long型
System.out.println(100.2);//是double型
System.out.println(100F);//是float型
变量的定义
变量定义有以下两种方式
创建一个变量并且使用的格式
- 数据类型 变量名称 //创建一个变量
- 变量名称 = 数据值 //赋值
一步到位
数据类型 变量名称 = 数据值;//在创建变量同时,立刻放入指定的数据值
1
2public class Day02{
public static void main(String[] args){
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//方式一
int num1;
num1 =10;
System.out.println(num1);
//方式二
int num2 = 25;
System.out.println(num2);
System.out.println("--------------");
byte num3 = 30; //注意右侧数值不能超过左侧数据类型的数据范围
System.out.println(num3);
//byte num4 = 400;// 右侧超出了byte的取值范围,错误!!
short num5 = 50;
System.out.println(num5);
long num6 = 3000000L;
System.out.println(num6);
float num7 = 2.5F;
System.out.println(num7);
double num8 = 1.2;
System.out.println(num8);
char zifu1 = 'A';
System.out.println(zifu1);
zifu1 = '中';
System.out.println(zifu1);
boolean var1 = true;
System.out.println(var1);
var1 = false;
System.out.println(var1);
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
**TIPS**
* 变量之间不能重复
* 对于float和long后缀不能丢掉
* 如果用type和long注意取值范围
* 没有进行赋值的变量,不能直接使用,一定要复制之后才能进行使用(如打印输出操作)
* 变量不要超出变量的定义域
# 数据类型转换
1. 自动转换
一个int类型变量和一个byte类型变量进行加法运算,结果是什么类型?
```java
int i =1;
byte b = 2;运算结果,变量的类型将是int类型,这就是出现了数据类型的自动类型转换现象
自动转换(隐式):将取值范围小的类型自动提升为取值范围大的类型
1
2
3
4
5
6
7
8public static void main(String[] args) {
int i =1;
byte =2;
//byte x = b+i //报错
//int 类型和byte;类型运算,结果是int
int j = b+i;
System.out.println(j);
}规则:数据范围从小到大
1
2
3long num1 = 100;//左边是long,右边是int,从int--long是从小到大,自当发生数据类型转换
double num2 = 2.5F;
float num3 =30L;强制类型转换
代码需要进行特殊的格式处理,不能自动完成
范围小的类型 范围小的变量名 = (范围小的类型)原本范围大的数据
1
2
3
4int num = (int) 100L;
//左边是int类型,右边是long类型,不一样
//long --> int ,不是从小到大,不能发生自动化类型转换
//范围小的类型 范围小的变量名 = (范围小的类型)原本范围大的数据Tips
强制类型转换一般不使用,因为有可能发生精度损失,数据溢出
1
2int num =(int) 6000000000L;
输出num为17亿数据溢出byte/short/char三种类型都可以发生数学运算
byte/short/char三种类型在运算的时候,都会被首先提升为int类型然后再计算
boolean 不能发生数据类型转换
运算符
一元运算符
- 取反 !
- 自增 ++
- 自减 –
二元运算符
- +
- -
- *
- /
- =
三元运算符
数据类型 变量名称 = 条件判断 ? 表达式A:表达式B;
1 | int a; |
Tips
- 必须同时保证表达式A和表达式B都符合左侧数据类型的要求
- 三元运算符的结果必须被使用
1 | int result = 3 > 4 ? 2.5 : 10 ; //错误 数据类型不一致 |
