三、编程基础(三)Java数据类型

今天的博客主题

      基础篇 --》编程基础 --》Java数据类型


前言

数据类型在计算机语言里面,是对内存位置的一个抽象表达方式,可以理解为针对内存的一种抽象的表达方式。

接触每种语言的时候,都会存在数据类型的认识,有复杂的、简单的,各种数据类型都需要在学习初期去了解,

Java是强类型语言,所以Java对于数据类型的规范会相对严格。

数据类型是语言的抽象原子概念,可以说是语言中最基本的单元定义,

Java数据类型分为两种:基本数据类型和引用数据类型。

 

基本数据类型

简单数据类型是不能简化的、内置的数据类型、由编程语言本身定义,它表示了真实的数字、字符和整数。

字符型

    byte 字节型 内存(1)

    char 字符型 内存(2)

非字符型

    数字类型

        整型

            short 短整型 内存(2)

            int 整型 内存(4)

            long 长整型 内存(8)

        非整型

            float 浮点型 内存(4)

            double 双精度类型 内存(8)

    非数字类型

        boolean 布尔型 内存(1) 值只有两个(true false)

这是Java的基本数据类型,一共8个。俗称Java八大基本数据类型。

每个数据类型都有一个最小值和最大值,无需强制记忆。

Java中每个存放数据的变量都是有类型的。

例:char ch; int i; float fl;

不同的类型变量在内存中分配的字节数不同,同时存储方式也是不同的。

所以在给变量赋值前需要先确定变量的类型,确定了变量的类型,也就确定了数据需分配内存空间的大小,数据在内存的存储方式。

存储的原理就是,基本数据类型都是直接存储在内存中的内存栈上的,数据本身的值就是存储在栈空间里面,

而Java语言里面八种数据类型是这种存储模型,不存在引用的概念。

 

定义(声明)、赋值变量

1、先定义,再去赋值 (int a; a = 8;)

2、在定义的同时给他赋值 (int a = 5;)

3、定义多个变量 (int a, s, d, f, g, y;)

4、定义多个变量的同时给他们赋值 (int a = 9, s = 7, d = 6, f = 80, g = 5, y = 3;)

5、定义多个变量的同时给他们赋值 (int a, s = 7, d = 6, f, g = 5, y;)

6、以上五点适用于所有八大基本数据类型

7、byte只能用单引号赋值,只能放一字节的东西,

        输出的时候是你所放的数字的ascii(阿斯科码) (byte a = '4';)

8、char只能用单引号赋值,只能放一个字母或者一个汉字 (char a = 'a'; char b = '牛';)

9、定义long、float、double的时候

(long a = 545643l; float b = 12.23f; double c = 45.21554d)

 

引用数据类型

引用数据类型分类

    类 class

        类可以是Java提供好的,比如Date、Random等。

        也可以是我们自己创建的类,按照类的定义标准,可以在类中包含多个方法与属性,供我们使用。

    接口 interface

    数组 array

也可以这么说,在Java中除了基本数据类型,其他的都是引用数据类型。

引用数据类型都是可以被实例化的,也就是可以被new的。

 

区别

两种数据类型的区别在于

基本数据类型

引用数据类型

在创建时被分配到栈中

在创建时,先在栈上给其引用(句柄)分配一块内存,而对象的具体信息都存储在堆内存上,然后由栈上面的引用指向堆中对象的地址,堆的读写速度远不及栈

变量名指向具体的数值

变量名指向存储数据对象的内存地址,也就是说变量名指向hash值

变量声明之后Java会立刻分配内存给它

以特殊的方式指向对象实体(具体的值),这种变量声明时不会分配内存,只是存储了一个内存地址

基本类型之间的赋值就是创建新的拷贝

对象之间赋值只是传递引用

==和!= 是在比较值

==和!= 是在比较内存地址,如要比较值,需要重写equals()方法

创建和销毁都会很快

需要jvm来销毁

 

包装数据类型

包装数据类型也是数据引用数据类型下的。

包装数据类型可以看做是对基本数据类型的封装。

基本数据类型

定义

包装数据类型

定义

byte

基本数据类型,不能点出来方法,不能被new。

byte b1 = 'a';

Byte

包装数据类型,在字符类型中,byte占内存最小,所以不能被new

可以点出来很多方法,比较特殊。

Byte b2 = 'a';

char

基本数据类型,不能点出来方法

char c1 = '他';

Character

包装数据类型是可以被new出来的,可以点出来很多方法。

Character c2 = new Character('他');

short

基本数据类型,不能点出来方法,不能被new。

short s1 = 4354;

Short

在数字类型中,short占内存最小,所以不能被new,可以点出来很多方法。比较特殊。

Short s2 = 7777;

int

基本数据类型,不能点出来方法,不能被new。

int i1 = 21;

Integer

包装数据类型是可以被new出来的,可以点出来很多方法。

Integer i2 = new Integer(44);

Integer i3 = 56;

long

基本数据类型,不能点出来方法,不能被new。

Long

包装数据类型是可以被new出来的,可以点出来很多方法。

Long l2 = new Long(561l);

float

基本数据类型,不能点出来方法,不能被new。

float f1 = 2145.78f;

Float

包装数据类型是可以被new出来的,可以点出来很多方法。

Float f2 = new Float(656.45f);

double

基本数据类型,不能点出来方法,不能被new。

double d1 = 3554535.46456436d;

Double

包装数据类型是可以被new出来的,可以点出来很多方法。

Double d2 = new Double(43535.46456d);

boolean

基本数据类型,不能点出来方法,不能被new。

boolean bo1 = true;

Boolean

包装数据类型是可以被new出来的,可以点出来很多方法。

Boolean bo2 = new Boolean(false);

 

类型转换

转换从低级到高级

byte,short,char —> int —> long —> float —> double

转换注意事项

低的往高的转,会自动转换,不用强制,无精度损失 (int a = 8; double b; b = a;)

高的往低的转,一定要强制转换,有可能会损失精度 (double a = 8; int b; b = (int) a;)

强制转换的语法:容器的数据类型 容器名字 = (要转的数据类型) 要转的数据


温故而知新

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值