Java数据类型
Posted 一朵花花
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java数据类型相关的知识,希望对你有一定的参考价值。
Java数据类型
HelloWorld
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
简单介绍
注意事项:
- 一个Java文件当中,只能有一个public的类
- 类名和文件名要相同
- 字节码文件 -class文件,一个类对应一个字节码文件,好处:随取随用
- 文件名不可以是中文和数字
数据类型
在Java中,各类型变量所占字节,都和操作系统没有直接关系
- Java当中没有所谓的无符号类型,只有有符号的
- Java当中没有全局变量
- 在方法中定义的叫:变量
- 在类的内部、方法的外部定义的,统称为属性(成员变量)
- Java中的变量不许以数字开头
- 标识符:数字、字母、下划线、$(不推荐使用)
- Java中定义变量名的时候采用小驼峰命名
8种基本数据类型如下:
<一>四种整数类型:
1.整型 int
若一个局部变量未初始化,就不能使用这个变量,否则会出现程序错误
此处也体现了Java的安全性
在Java中,一个int变量占4个字节
基本语法格式:
int 变量名=初始值
int a = 10;
使用以下代码查看Java中整型数据范围:
任何类型都可以这样查看范围
System.out.println(Integer.MAX_VALUE); // int 的最大值
System.out.println(Integer.MIN_VALUE); // int 的最小值
表示范围:-2³¹~(2³¹-1),大概就是:-21亿到+21亿
注意事项:
- 若运算结果超出 int 最大范围,就会出现溢出的情况
- int对应的包装类:Integer
2.长整型 long
在Java中,一个long变量占8个字节
基本语法格式:
long 变量名 = 初始值;
long a = 10L;
表示范围:-2⁶³~(2⁶³-1)
注意事项:
- long a=10L,若不加L,则a是长整型,10是整型;
- L或者l 都可以,但小写l 容易与数字1 混淆,故一般写成"L"
- long对应的包装类:Long
3.短整型 short
在Java中,一个short变量占2个字节
基本语法格式:
short 变量名 = 初始值;
short a = 10;
注意事项:
- short对应的包装类:Short
4.字节类型 byte
在Java中,一个byte变量占1个字节
基本语法格式:
btye 变量名 = 初始值;
byte a = 10;
注意事项:
- byte对应的包装类:Byte
- byte的最大值是127,在给byte类型变量赋值的时候,不能超过最大值,若超过,则就不再是byte类型,而是int类型
<二>两种浮点类型:
1.单精度浮点型 float
在Java中,一个float变量占4个字节
基本语法格式:
float 变量名 = 初始值;
float a = 3.14f; //写作 3.14F 也行
注意事项:
- 由于 float 能表示的数据范围精度较小,一般在工程上用到浮点数,优先考虑 double
- 在Java中,不允许把一个 double类型的值直接复制给 float,会出现编译出错,体现了Java的安全性
- . float对应的包装类:Float
2.双精度浮点型 double
在Java中,一个double变量占8个字节
基本语法格式:
double 变量名 = 初始值;
double a = 3.14;
注意事项:
- 一般情况,如果以后写项目,遇到小数,建议使用double类型
- 小数没有精确值,只有一个范围
- double对应的包装类:Double
<三>一种字符类型:
字符类型 char
在Java中,一个char变量占2个字节
基本语法格式:
char 变量名 = 初始值;
char ch = 'a';
char ch = '哈'; // 一个汉字两个字节
注意事项:
- char对应的包装类:Character
- Java在处理char类型的数据时,在底层是按unicode码来处理的
<四>一种布尔类型
布尔类型 boolean
在Java中,boolean 类型没有明确的大小
基本语法格式:
boolean 变量名 = 初始值;
boolean flg = false;
注意事项:
- boolean对应的包装类:Boolean
- 在Java中,布尔类型只有两个取值,是 true 和 false
- 在Java中,没有所谓的0是假,非0是真,真只有true,假只有false
总结
数据类型 | 包装类 | Java中所占字节数 |
---|---|---|
int | Integer | 4 |
long | Long | 8 |
short | Short | 2 |
byte | Byte | 1 |
float | Float | 4 |
double | Double | 8 |
char | Character | 2 |
boolean | Boolean | 没有规定 |
引用数据类型如下:
本篇只提字符串类型:
字符串类型 String
基本语法格式:
String 变量名 = "初始值";
String str = "Hello";
注意事项:
- 字符串的+操作,表示字符串的拼接
- 若有两个String类型的变量进行比较,a==b是对两个变量的地址值进行比较
- 当一个+表达式中存在字符串时,都是执行字符串的拼接行为
类型转换:
隐式 / 显式 类型转换
隐式:把一个小类型转换为大类型
显式:把一个大类型转换为小类型,需进行强制类型转换
// 隐式类型转换:
int a = 10;
long b = a;
//显式类型转换:
long a = 10;
int b = (int)a;
不同数字类型的变量之间赋值,表示范围更小的类型能隐式转成范围较大的类型,反之,则需要强制类型转换
int 和 boolean 相互赋值
int 和 boolean两种毫不相干的类型,不能相互赋值
类型转换小结:
- 不同数字类型的变量之间赋值,表示范围更小的类型能隐式转成范围较大的类型
- 如果需要把范围大的赋值给范围小的,则需要强制类型转换,但可能会精度丢失
数值提升:
int 和 long混合运算
int a = 10;
long b = 20;
int c = a + b; //编译出错,从long转成int会丢失精度
long d = a + b; // 编译通过
结论:当int和long混合运算时,int 会提升成 long,得到的结果是 long类型,需要使用 long类型来接收结果,若要使用 int类型来接收的话,就需要使用强制类型转换
byte和byte运算
byte a = 10;
byte b = 20;
byte c = a + b;
System.out.println(c);
上述代码会出现编译出错,从int转换为byte可能会有损失
结论:byte之间的运算,虽然 a 和 b 都是byte,但是计算a+b,会先将其提升成 int,再进行计算,得到的结果也是int,则不能赋值给 byte类型的c
由于计算机的CPU通常是按照4个字节为单位从内存中读取数据,为了硬件上方便实现,像byte和short这种不是4个字节的数据类型,会先提升成int,再参与计算
则正确写法为:
byte a = 10;
byte b = 20;
byte c = (byte)(a + b);
System.out.println(c);
类型提升小结:不同类型的数据混合运算时,范围小的会提升成范围大的
补充:
String 和 int之间的相互转换:
1.将 int 转换成 String
int num = 10;
String str1 = num + "";
String str2 = String.valueof(num);
2.将 String 转换成 int
String str = "10";
int num = Integer.parseInt(str);
包装类的好处,就是可以调用类的很多方法来实现我们的目的
数据类型总结
以上是关于Java数据类型的主要内容,如果未能解决你的问题,请参考以下文章