小黄鸭系列java基础知识 | 基本数据类型补充知识点
前言
大家过年好呀!今天已经大年初五了,可能好多小伙伴已经准备复工了,不知道大家春节过得怎么样,反正我觉得我堕落了,从腊月二十九回来到今天,基本上每天除了吃饭、睡觉、打游戏,就剩喝酒、打牌、聊天,反正就是没有学习,除了每天发送了一个读书札记小卡片,我觉得我快废了😂,所以赶紧把学习安排上。
基本数据类型
作用域
在讨论核心内容 之前,我们先说一下作用域,作用域简单来说就是一个变量的作用范围,在java
中作用域分为全局和局部两种(应该说在所有的编程语言都这样叫)。全局变量指的是在类内部定义的成员变量,一般可以在一个类内部任意位置使用(这里排除关键字修饰的情况)的变量;局部变量,一般说的就是某个方法内定义的变量,所以全局变量也可以说就是定义在方法外面的变量。
public class VarObject {
int globalVarInt; // 全局变量
public void function() {
int localVarInt = 1; // 局部变量,必须初始化,否则会报编译错误
System.out.println(localVarInt);
System.out.println(globalVarInt);
}
public static void main(String[] args) {
new VarObject().function();
}
}
上面代码中globalVar
就是全局变量,localVar
就是局部变量,这里需要注意的是变量使用前,全局变量你不需要自己初始化(初始化就是给变量赋一个初始值),局部变量必须初始化,否则会报编译错误。
当然,对于全局变量,各个类型的初始化的值是不一样的:
- 对于整数变量,初始化的值都是0(
byte
、short
、int
、long
) - 对于浮点数变量,初始化的值都是0.0(
float
、double
) - 对于字符型变量,初始化的值是空格,也就是
\u0000
,对应unicode
的空格(转成int
是0) - 对于布尔类型变量,初始化的值是
flase
int globalVarInt; // 全局变量
char globalVarChar; // 全局
byte globalVarByte; // 全局
long globalVarLong; // 全局
short globalVarShort; // 全局
float globalVarFloat; // 全局
double globalVarDouble; // 全局
boolean globalVarBoolean; // 全局
public void function() {
int localVarInt = 1; // 局部变量,必须初始化,否则会报编译错误
System.out.println(localVarInt);
System.out.println("全局变量globalVarInt的初始值:" + globalVarInt);
System.out.println("全局变量globalVarChar的初始值:" + globalVarChar);
System.out.println("全局变量globalVarByte的初始值:" + globalVarByte);
System.out.println("全局变量globalVarLong的初始值:" + globalVarLong);
System.out.println("全局变量globalVarShort的初始值:" + globalVarShort);
System.out.println("全局变量globalVarFloat的初始值:" + globalVarFloat);
System.out.println("全局变量globalVarDouble的初始值:" + globalVarDouble);
System.out.println("全局变量globalVarBoolean的初始值:" + globalVarBoolean);
}
最终输出结果就是我们上面的结论:
基本数据类型
现在我们再来回顾下JAVA
的基本数据类型:
从类型上划分,基本类型有三种:数字型、字符型、和逻辑型;数字型又分为整数和浮点数两种,整数包括byte
、short
、int
和long
,浮点数包括float
和double
;字符型只有char
,逻辑型只有boolean
。
顺手我也放上java
所有的数据类型,里面也包括我们今天要扩展的内容——基本类型的包装类。
包装类
包装类简单来说就是基本类型对应的对象,int
的包装类是Integer
;byte
的包装类是Byte
;short
的包装类是Short
;long
的包装类是Long
;double
的包装类是Double
;float
的包装类是Float
;char
的包装类是Character
;boolean
的包装类是Boolean
。包装类在功用方面和基本数据类型没有区别,唯一的区别是包装类是对象,但基本类型不是,所以包装类可以放进容器(Collection),但是基本类型是不可以的,也就说基本数据类型并不是一个对象。
不知道有没有小伙伴会有这样的疑问:不是已经有基本数据类型了吗,为什么还需要包装类?其实我们上面已经说了原因,就是因为基本类型不是对象,不符合java
万物皆对象的理念,所以才诞生了包装类。
拆箱
拆箱简单来说就是把包装类转换成基本类型,拆箱过程jdk
会帮你自动完成,当然你也可以自己操作。
/**
* 装箱
*/
private void function2() {
Character ch = 'c';
Integer i = 12;
Byte b = 12;
Short s = 123;
Long aLong = 123213L;
System.out.println("Character ch = " + ch);
System.out.println("Integer i = " + i);
System.out.println("Byte b = " + b);
System.out.println("Short s = " + s);
System.out.println("Long aLong = " + aLong);
// 手动装箱
Integer integer0 = new Integer(12);
System.out.println("Integer integer0 = " + integer0);
}
装箱
装箱和拆箱刚好相反,是把基本类型转成包装类。
/**
* 拆箱
*/
private void function3() {
Integer i = new Integer(16);
int i2 = i;
int i3 = i.intValue(); // 不知道这个算不算手动拆箱
System.out.println("int i2 = " + i2);
System.out.println("int i3 = " + i3);
}
结语
今天的内容就到这里吧,学习虽好,可不要贪杯哦😂今天我也要返工了,大家开工大吉呀!虽然今年春节感觉还可以,但我个人感觉现在春节年味越来越淡了,以前小时候,春节鞭炮声一直不停,现在感觉小孩子都不放鞭炮了;以前最期待的就是新年,新年可以穿新衣服,可以收压岁钱,现在就算天天穿新衣服、吃好吃的,也不会太期待,太开心……当然我们不应该在如此喜庆的日子里如此伤感,人活着最重要的是开心快乐,要永远怀着童趣的心态。岁月蹉跎,愿你出走半生,归来仍是少年🤗