JavaSE基础 -- 数据类型

变量和常量

在使用计算机编写程序的时候,我们怎么来表示生活中的各种类如年龄,性别,身份证号码等数据呢?

在Java中,我们使用变量和常量的概念表示

此外,生活中的数据分为可变和不可变的,比如年龄会随着时间而增长,而圆周率,普朗克常数这些数据是不会变化的

那我们可以用变量来表示前者,用常量来表示后者

变量

变量的作用域

一般来说,变量定义时所在的花括号范围即为变量的作用域

JavaSE基础 -- 数据类型_第1张图片

image.png

因为第二个花括号包含于第一个花括号里面,而a在第一个花括号里定义

因此第二个花括号也属于a的作用域

而如果在第二个花括号内定义,而在第一个花括号内使用,便会出现错误

因为此时a的作用域只有第二个花括号的范围

JavaSE基础 -- 数据类型_第2张图片

变量的命名规则

我们在命名变量的时候,只能使用数字,字母还有下划线,且不能使用数字开头

并且命名的时候,要做到见名知意,因为这能让我们阅读代码时更加高效

我们可不想一个月之后阅读自己代码的时候,花许多时间在思考a,b,c,asdfa变量都是干什么的

(当然,不只是方便自己)

为做到见名知意,我们可以采取以下原则

  • 具有描述性
  • 小驼峰命名法,也就是第一个单词首字母不大写,接下来的单词首字母都大写

如年龄最大值,可命名为maxAge

常量

字面值常量

字面值常量 含义
10 十进制数字
010 八进制数字
0x10 十六进制数字
10L / 10l long类型数值
1.0 double类型数值
1.5e2 同上, 相当于1.5 * 10 ^ 2
1.0f float类型数值
true boolean类型字面值
false boolean类型字面值
'a' 字符类型字面值
"hello" 字符串类型字面值

定义

JavaSE基础 -- 数据类型_第3张图片

(一旦定义,便不可修改)


Java中有八大基础数据类型和三大引用数据类型

JavaSE基础 -- 数据类型_第4张图片


八大数据类型

int

表示整数

一个int占4个字节

System.out.println(Integer.SIZE); //查看Integer类有多少个字段(比特位)

范围为: -2^31 ~ 2^31-1

System.out.println(Integer.MAX_VALUE);


long

表示范围更大的整数

一个long占8个字节

定义

long a = 100L;

long a = 100l;

范围为: -2^63 ~ -2^63-1


float

表示小数(浮点数)

一个float占4个字节

定义

float num = 1.1f;
float num = 1.1F;


double

表示范围更大的小数

一个double为8个字节

注意点1

System.out.println(1 / 2);

打印结果为0

关于 / 运算符,若我们想要得到double类型的结果,至少需要有一个操作数为double

注意点2

double num = 1.1;
System.out.println(num * num)

执行结果为:

image.png

之所以会出现精度误差,是因为在内存中使用有限的空间去存储无限的小数


char

表示各种字符(字符,数字或特殊符号)

一个char占2个字节

定义

char a = 'a'


byte

在网络传输,通信中起到重要的作用

取值范围为-128到127

一个byte占1个字节


short

表示范围更小的整数

一个short占2个字节

范围为: -32768 -> 32767


boolean

用来表示真假

一个boolean类型占多少空间在不同JVM中可能不同,并没有明确规定

注意事项

Java中的boolean类型不能与int相互转换

如,循环体中的真假判断部分不能为整型

JavaSE基础 -- 数据类型_第5张图片

应当改为

JavaSE基础 -- 数据类型_第6张图片


类型转换

  • 范围小的类型能直接转换为范围大的类型(隐式转换)
  • 范围大的类型转换为范围小的类型需要进行强制类型转换(精度可能会丢失)
  • 互不相干的类型之间无法转换(如数值类型和boolean类型,但int类型和String类型有特殊的方式进行转换)

案例1 int, double, long类型之间的转换

JavaSE基础 -- 数据类型_第7张图片

这里我们可以看出,double类型的范围是最大的,因为能直接兼容int类型和long类型

JavaSE基础 -- 数据类型_第8张图片

而当我们进行强制转换时,就不会提示错误了

案例2 int和boolean类型之间的转换

JavaSE基础 -- 数据类型_第9张图片

JavaSE基础 -- 数据类型_第10张图片

这里我们可以看到,即时加了进行强制转换也无法成功

因为int和boolean是毫不相关的两种类型

(不像C语言中的0表示false, 非0表示true)

案例3 int和char类型之间的转换

JavaSE基础 -- 数据类型_第11张图片

JavaSE基础 -- 数据类型_第12张图片

我们可以看到,int和char类型之间的转换跟案例1基本没什么不同

只是转换的时候会照着ASCII码表进行

案例4 int和String的互相转换

int转换为String

JavaSE基础 -- 数据类型_第13张图片

String转换为int

image.png

数值提升

  • 不同数据类型混合运算时,范围小的会提升为大的
  • 运算时最小单位为4个字节,若不足4个字节(如short,char)会提升至4个字节再运算 (这是为了实现硬件方面运算的便捷)

案例1

JavaSE基础 -- 数据类型_第14张图片

JavaSE基础 -- 数据类型_第15张图片

案例2

JavaSE基础 -- 数据类型_第16张图片

出现错误,提示 “从int转换到byte可能会有损失”

JavaSE基础 -- 数据类型_第17张图片

三大引用类型

数组

字符串

创建

JavaSE基础 -- 数据类型_第18张图片

JavaSE基础 -- 数据类型_第19张图片

转义字符

在创建字符串的时候,我们要用 "" 将内容包裹起来,但如果我们想给里面的字符也加上""就会出现问题

JavaSE基础 -- 数据类型_第20张图片

也就是字符串提前结束了

因此,我们可以加个反斜杠,相当于需要告诉计算机

“嘿,这是字符串的一部分,不是要结束的意思”

JavaSE基础 -- 数据类型_第21张图片

\"也就被称为转义字符

转义字符 含义
\n 换行
\' '
\" "
\\ \
\t tab键

字符串拼接

JavaSE基础 -- 数据类型_第22张图片

打印结果为:

image.png

那如果字符串的内容都为数字,拼接之后的结果会不会是两个数字相加呢?

JavaSE基础 -- 数据类型_第23张图片

image.png

可以看出,拼接这个动作,只是单纯把字符连接起来

接口

你可能感兴趣的:(java)