一、计算机单位存储换算和Java数据类型
1、计算机基础知识
-
bit 位 ,即0或者1, 0101010110
-
byte字节,8位作为一个字节,字节是处理数据的基本单位
-
1 byte = 8bits
-
1KB = 1024 bytes
-
1MB = 1024 KB
-
1GB = 1024 MB
2、Java数据类型
Java的数据类型可以分为两大类:基本数据类型和引用数据类型。
基本数据类型:
1、整型
-
byte
:8位,最大存储数据量是255,取值范围在-128到127之间。 -
short
:16位,最大数据存储量是65536,取值范围在-32768到32767之间。 -
int
:32位,最大数据存储容量是2的32次方减1,取值范围在-2147483648到2147483647之间。 -
long
:64位,最大数据存储容量是2的64次方减1,取值范围-9223372036854774808到9223372036854774807之间
2、浮点型
-
float
:单精度浮动数,直接赋值时必须在数字后加上f或F。 -
double
:双精度浮动数,精度比float高
3、字符型
-
char
:用于存储单个字符,可以是汉字,16位的 unicode字符,即两个字节表示一个字符
4、布尔型
-
boolean
:只有两个取值,即true和false
类型转换 double > float > long > int > short > byte
小转换到大,可以直接转换(隐式类型转换),而从大到小,需要强制转(显式类型转换),会有精度丢失
引用数据类型:
-
引用数据类型不直接存储数据值,而是存储对对象在内存中的引用(即对象的内存地址)。
-
通过引用,我们可以操作该对象及其属性和方法
eg :字符串(String):字符串是不可变的,即每次对字符串进行修改操作(如拼接、替换等),都会生成一个新的字符串对象
类(Class):通过new
关键字和类的构造函数可以创建类的对象,对象在内存中占用空间,并通过引用来操作
还有数组(Array)、接口(Interface)、枚举(Enum)、注解(Annotation)都是引用类型。
二、数组
数组 Array:
-
一种数据结构,用来存储同一类型之的集合, 内存中存储相同数据类型的连续的空间
-
在Java中,数组是一种引用数据类型,它存储的是对对象的引用,而不是对象本身
-
数组的大小在创建时确定,之后不能改变,通过一个整形下标可以访问数组中的每一个值, 从0开始计算,所以一个长度为
n
的数组的有效索引范围是0
到n-1
。 -
需要初始化才可以操作,且使用数组时,应确保不越界访问,否则会抛出
ArrayIndexOutOfBoundsException
异常。
使用数组:声明数组变量时,需要指出数据类型和数组变量的名字
eg:
int [] numbers = new int[100];//声明了一个名为numbers的数组变量,并创建了一个长度为100、数据类型为int的数组。所有元素都被初始化为0。
int [] numbers = { 1,2,3,4,5,6 };//初始化,数组的大小就是初始值的个数
多维数组:
int [][] numbers = new int[3][3];//创建
int [][] numbers = {{1,2,3},{4,5,6},{7,8,9}};//创建并初始化
数组里面有很多方法,是自带的方法和属性,获取数组长度的属性名称 length,使用就是 数组名.length。
三、数据存储之Java内存空间堆栈
java在内存中有堆、栈两块存储空间。
数据类型在内存中使用:
-
基本的变量类型只有一块存储空间(分配在stack中),
-
传递的时候直接是值传递,
-
对数据进行操作,不影响原先的值
-
-
引用类型有两块存储空间(一块在stack中,一块在heap中)
-
一个对象在内存中会请求一块空间来保存数据,访问对象的时候不会直接是访问对象在内存中的数据,而是通过引用去访问
-
不同数据类型在堆栈里面怎么分配的:
int a=1;
boolean flag=false;
Student s = new Student();
Person p1 = new Person();
Person p2 = p1;