JAVA 基础篇---数据类型,基础篇数据类型
JAVA 基础篇---数据类型,基础篇数据类型
大体从三方面描述:
1、JAVA 类型的概述。
2、JAVA类型之间的转换。
3、JAVA类型在开辟空间的不同。
语言是相通的,再高大上的语言必定从数据入手的。
在现实生活中的一个个对象的特征(身高、年龄、三围等),延生到语言里就成了数据(属性),
也就是所谓的数据抽象。当然还有个行为(对象的动作)抽象。
程序中所有的数据都会保存在内存中,我们需要通过一种机制来访问或修改内存中的数据,这种机制就是变量。
每个变量代表了某一小块的内存, 变量是有名字的,对变量的赋值其实就是把数据放入内存区的过程。
因此从这个角度来看,你也可以把变量理解为像集合 数组这样的容器。
1、java 是强类型语言:所有变量必须先申明后使用,而且制定的变量只能接受类型与之匹配的值。
在java中变量分为两种类型:基本类型和引用类型
java的8种基本类型就不用细说了,就是两大类 8小种。
所谓的引用类型其实就是对一个对象的引用。自然联系到了类 、接口和数组。
这里我就想到了,对象的引用和对象在内存中是不一样的。
第一:大小不一样:
对象引用的大小跟对象的大小没有什么关系,对象的引用就是真实对象的一个地址。
很想数据结构中的链式存储的指针:用来保存地址用的。
第二: 保存区域不一样:
对象的引用保存在内存的栈(stack)中,而对象是保存在堆里(heap)
既然你给变量划分好了数据类型,到时我在用的时候,就只能这样一成不变了吗? 肯定不是了,设计者早就想好了
2、说到这里我们不得不说:类型之间的转换。
第一种转换:基本类型内部之间的转换:
(1)自动类型转换:
就想前面提到的变量就是内存的一块区域,只不过区域有大有小而已,可以理解为容器。
区域范围小的可以向区域范围大的转换,如同把小瓶里的水倒进大瓶里的水,这是不会有问题的。
(2) 强制类型转换:
如果我想把,大瓶里的水倒进小瓶里这么办,只能压缩了,不然就会溢出,造成数据丢失。
语法格式:(targetType)value
第二种转换:基本类型和引用类型之间的转换:
在通常情况下是不能转换的,比如字符串是不能直接转换为基本类型的。
因为:我们知道String在java里是一个不可变类。
那这么办,我想转换呢?
设计者为java的8中基本类型都提供了对应的包装类,int对应的是Integer 、long对应的Long等.
8个包装类都提供了一个parseX(String str)的静态方法,用于将字符串转换成基本类型。
String a ="6666";
int intValue = Integer.parseInt(a);
不这里的转换时挺严的,要求转换的字符串是数字,不然会报错的。
第三种转换:引用类型之间的转换:
1、引用类型的类型转换只能发生在父子之间,子类可以转换为父类,父类需要强制装换子类
3、基本类型和引用类型有哪些不同?
3.1:从内存的角度看:
基本类型:申明同时系统是给这8种类型分配了一块与之对应大小的内存空间的。你是int 就给你给在
内存中划分了4个字节的大小的空间。具体点就是内存中stack区域划分的。
引用类型:申明后只给变量分配了引用空间,没有分配数据空间。因为谁都不知道数据是什么 多大
只有通过实例化开辟数据空间。
3.2: 引用传值和值传递:
基本类型:都属于值传递,所有的操作都是对参数的拷贝的操作,影响不到作为参数的变量。
引用类型:在任何时候用“=”号都是引用传递。
相关文章
- 暂无相关文章
用户点评