深入解析Java数据类型与变量
一、 字面常量
二、 数据类型
三、 变量
目录
1. 字面常量
2. 数据类型
3. 变量
一、字面常量
常量即程序运行期间,固定不变的量称为常量
,比如:一个礼拜七天,一年
12
个月等。
public class Demo{
public static void main(String[] args){
System.Out.println("hello world!");
//1. 字符串常量:由""括起来的,比如“12345”、“hello”、“你好”。
System.Out.println(100);
//2. 整形常量:程序中直接写的数字(注意没有小数点),比如:100
System.Out.println(3.14);
//3. 浮点数常量:程序中直接写的小数,比如:3.14
System.Out.println('A');
//4. 字符常量:由 单引号 括起来的当个字符,比如:‘A
System.Out.println(true);
//5. 布尔常量:只有两种true和false
System.Out.println(false);
System.Out.println(" ");
//6. 空常量
}
}
二、数据类型
在
Java
中数据类型主要分为两类:
基本数据类型
和
引用数据类型
。
图解如下:
基本数据类型有四类八种:
1.
四类:整形、浮点型、字符型及布尔型
2.
八种:(在这里我们着重介绍基本数据类型)
有的同学可能疑惑了:这个范围好难记啊,究竟是怎么算的呢?
首先我们知道字节是计算机表示空间大小的基本单位。一字节(Byte)=8个比特位(bit);
三、变量
3.1、 变量概念
在程序中,除了有始终不变的常量外,有些内容可能会经常改变,
比如:人的年龄、身高、成绩分数、数学函数等计算结果等,
对于这些经常改变的内容,在Java
程序中,称为变量
。
而数据类型就是用来定义不同种类变量的
。
3.2、 语法格式
数据类型 变量名
=
初始值
;
a是变量,a中的值是可以修改的,注意:= 在java中表示赋值,即将100交给a,a中保存的值就是100
public static void main(String[] args) {
a = 100;
System.out.println(a);
}
在一行可以定义多个相同类型的变量
public static void main(String[] args) {
int a1 = 10, a2 = 20, a3 = 30;
System.out.println(a1);
System.out.println(a2);
System.out.println(a3);
}
3.1 整型变量
3.3.1 整型变量
整形变量输入方式
方式一:在定义时给出初始值int
a
=
10
;System
.
Out
.
println
(
a
);方式二:在定义时没有给初始值,但使用前必须设置初值
int
b
;b
=
10
;System
.
Out
.
println
(
b
);使用方式二定义后,在使用前如果没有赋值,则编译期间会报错
int
c
;System
.
Out
.
println
(
c
);c
=
100
;
注意事项
1.int不论在何种系统下是4字节,范围是-2的32次~2的31次
2.int的包装类型为
Integer
3.
变量在使用之前必须要赋初值,否则编译报错,若不知道赋值为什么,可赋值为0
4.
在给变量设置初始值时,值不能超过int的表示范围,否则会导致
溢出
5.
int型变量所能表示的范围: System
.Out
.println
(
Integer
.MIN_VALUE
);
System
.
Out
.
println
(
Integer
.
MAX_VALUE
);
3.3.2 长整型变量
int
a
=
10
;long
b
=
10
;/
/ long定义的长整型变量long
c
=
10L
;// 为了区分int和long类型,一般建议:long类型变量的初始值之后加L或者l
long
d
=
10l
;// 一般更加以加大写L,因为小写l与1不好区分
// long型变量所能表示的范围:这个数据范围远超过 int 的表示范围. 足够绝大部分的工程场景使用.
System
.
Out
.
println
(
Long
.
MIN_VALUE
);System
.
Out
.
println
(
Long
.
MAX_VALUE
);
注意事项:
3.3.3 短整型变量
注意事项:
// short型变量所能表示的范围:
System.out.println(Short.MIN_VALUE);
System.out.println(Short.MAX_VALUE);
3.3.4 字节型变量
byte b = 10;
System.out.println(b);
// byte型变量所能表示的范围:
System.out.println(Byte.MIN_VALUE);
System.out.println(Byte.MAX_VALUE);
注意事项:
3.4 浮点型变量
3.4.1 双精度浮点型
在
Java
中
, int
除以
int
的值仍然是
int(
会直接舍弃小数部分
)
。如果想得到
0.5,
需要使用
double
神奇的代码一:
int
a
=
1
;int
b
=
2
;System
.
out
.
println
(
a
/
b
);// 输出 1 因为int 除以 int 的值仍然是 int(会直接舍弃小数部分)
double
a
=
1.0
;double
b
=
2.0
;System
.
out
.
println
(
a
/
b
);// 输出0.5
神奇的代码二:
double num
=
1.1
;System
.
out
.
println
(
num
*
num
);
// 输出1.21吗?// 执行结果
1.2100000000000002
注意事项:
3.4.2 单精度浮点型
float
num
=
1.0f
;// 写作 1.0F 也可以
System
.
out
.
println
(
num
);
float
类型
遵守
IEEE 754
标准
.
由于表示的数据精度范围较小
,
一般在工程上用到浮点数
都优先考虑
double,
不太推荐使用
float. float的包装类型为
Float
。
3.5 字符型变量
char
c1
=
'A'
;
// 大写字母char
c2
=
'1'
;
// 数字字符System
.
out
.
println
(
c1
);System
.
out
.
println
(
c2
);// 注意:java中的字符可以存放整形
char
c3
=
'
帅
'
;System
.
out
.
println
(
c3
);
注意事项:
3.6 布尔型变量
布尔类型常用来
表示真假
boolean
b
=
true
;System
.
out
.
println
(
b
);b
=
false
;System
.
out
.
println
(
b
);
注意事项:
boolean
value
=
true
;System
.
out
.
println
(
value
+
1
);// 代码编译会出现如下错误
Test
.
java
:
4
:
错误
:
二元运算符
'+'
的操作数类型错误System
.
out
.
println
(
value
+
1
);^
![]()
3.7 类型转换
Java
作为一个强类型编程语言
,
当不同类型之间的变量相互赋值的时候
,
会有教严格的校验
.
int
a
=
10
;long
b
=
100L
;b
=
a
;
// 可以通过编译a
=
b
;
// 编译失败
在
Java
中,当参与运算数据类型不一致时,就会进行类型转换。
Java
中类型转换主要分为两类:
自动类型转换
(
隐式)
和 强制类型转换
(
显式
)
。
3.7.1 自动类型转换(隐式)
自动类型转换即:
代码不需要经过任何处理,在代码编译时,编译器会自动进行处理
。
特点:
数据范围小的转为数 据范围大
的时会自动进行
。
System
.
Out
.
println
(
1024
);// 整型默认情况下是int
System
.
Out
.
println
(
3.14
);// 浮点型默认情况下是double
int
a
=
100
;long
b
=
10L
;b
=
a
;// a和b都是整形,a的范围小,b的范围大,当将a赋值给b时,编译器会自动将a提升为long类型,然后赋值
a
=
b
;// 编译报错,a的范围大,b的范围小, long的范围比int范围大,会有数据丢失,不安全
float
f
=
3.14F
;double
d
=
5.12
;d
=
f
;// 编译器会将f转换为double,然后进行赋值
f = d
;// double表示数据范围大,直接将float交给double会有数据丢失,不安全
byte
b1
=
100
;// 编译通过,100没有超过byte的范围,编译器隐式将100转换为byte
byte
b2
=
257
;// 编译失败,257超过了byte的数据范围,有数据丢失
3.7.2 强制类型转换(显式)
强制类型转换:当进行操作时,代码需要经过一定的格式处理,不能自动完成。
特点:数据范围大的到数据范围小
int
a
=
10
;long
b
=
100L
;b
=
a
;// int–>long,数据范围由小到大,隐式转换
a
=
(
int
)
b
;// long–>int, 数据范围由大到小,需要强转,否则编译失败
float
f
=
3.14F
;double
d
=
5.12
;d
=
f
;// float–>double,数据范围由小到大,隐式转换
f
=
(
float
)
d
;// double–>float, 数据范围由大到小,需要强转,否则编译失败
byte
b1
=
100
;// 100默认为int,没有超过byte范围,隐式转换
byte
b2
=
(
byte
)
257
;// 257默认为int,超过byte范围,需要显示转换,否则报错
boolean
flag
=
true
;a
=
flag
; // 编译失败:类型不兼容,int与布尔类型不能转换flag
=
a
;
// 编译失败:类型不兼容,int与布尔类型不能转换
注意事项:
四. 字符串类型
在
Java
中使用
String
类定义字符串类型,比如:
public static
void
main
(
String
[]
args
) {String
s1
=
"hello"
;String
s2
=
" world"
;System
.
out
.
println
(
s1
);System
.
out
.
println
(
s2
);System
.
out
.
println
(
s1
+
s2
);
// s1+s2表示:将s1和s2进行拼接}
在有些情况下,需要将字符串和整形数字之间进行转换
1.
int
转成
String
int
num
=
10
;// 方法1
String
str1
=
num
+
""
;// 方法2
String
str2
=
String
.
valueOf
(
num
);
2.
String
转成
int
String
str
=
"100"
;int
num
=
Integer
.
parseInt
(
str
);
到这里,竹竹零就要和大家说再见了。那么希望时光不负赶路人,愿我们能够成为更好的我自己。