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: 引用传值和值传递:
                  基本类型:都属于值传递,所有的操作都是对参数的拷贝的操作,影响不到作为参数的变量。

                 引用类型:在任何时候用“=”号都是引用传递。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值