Java数据类型

一、常量

常量表示不能改变的数值

Java中常量的分类:

  • 整数常量:所有整数

  • 小数常量:所有小数

  • 布尔型常量(boolean):只有两个数值true false

  • 字符型常量:将一个数字,字母或者符号用单引号[ ' ' ]标识

  • 字符串常量:将一个或者多个字符用双引号[ " " ]标识

  • Null常量:只有一个数值null表示空

二、变量

变量表示可能改变的数值

Java中变量的概念:内存中的一个存储区域。该区域有自己的名称(变量名)和类型(数据类型)。该区域的数据可以在同一类型范围内不断变化

变量的声明形式

  • 声明: 数据类型 变量名 = 【值】

  • 赋值: 变量名 = 【值】

  • 声明并赋值: 数据类型 变量名 = 【值】

数据类型 变量名;变量名 = 【值】

int i = 1;
float f;
f = 12.3f;
double d1 = 0.1, d2, d3=0.3;

变量使用步骤

// 声明变量,即“根据数据类型在内存申请空间”
// 【数据类型】 【变量名】;
int a;

// 赋值,即“将数据存储至对应的内存空间”
// 【变量名】 = 【值】;
a = 1;

/*
*可以合并为:
*【数据类型】 【变量名】 = 【值】;
*/
int a = 1;

变量的分类

  • 临时变量(局部变量):方法内部申明的变量(包括参数)

  • 成员变量(全局变量):在方法外,类体内声明的变量

变量的使用注意事项

  • 变量的作用范围(在一对中括号“{}”内有效)

  • Java中的每一个变量在使用前必须先声明,然后进行赋值,才能够使用,否则报错

  • 该区域的数据可以在同一类型范围内不断变化

  • 在一个方法中的变量名不能重复声明

  • 可以用来存放同一类型的常量

三、Java中的数据类型分类

Java语言是强类型语言,任何一个变量或者常量在Java中必须要有确定的数据类型。通常有两种数据类型,即基本数据类型和引用数据类型。

    • 基本数据类型

每种数据类型在内存中占有不同的长度,计算机存储设备中最小的信息单元为:“位”(bit),又称为“比特位”,连续的8位称为1个“字节”(byte)。注:操作系统分配的内存最少1个字节,即8位,而不是1位。长度越长,所表示的范围也就越大。

    • 基本数据类型的初始值

每种具体类型都有不同的默认值,当没有为一个属性变量赋值时,会根据类型为其赋值为默认值。注:char的默认值是“ \u0000 ”,等于一个空字符,boolean(布尔型)的默认值是false。

    • 基本数据类型的转换

不同的数据类型之间可以相互转换。

表示从范围小的类型转换为表示范围大的类型,可以直接转换,称为隐式转换

byte b = 1;
int i = -2;
i = b;
b = i;  //报错,读者可以学习计算机硬件基础会理解报错原因;简单讲就是int太大(4B)塞不进byte(1B)里,会发生损失

表示范围大的类型转换表示范围小的类型,需要强制类型转换,称为显示转换

byte b = 1;
int  i = -2;
b = (byte)i;
c = (char)i;

虽然数据类型之间可以进行强制的隐式转换,但是也需要有一定的前提(如果要存储的值无需截断或四舍五入即可适应变量,则可以进行隐式转换)。数值类型和boolean类型之间不能进行转换(强制转换也不行)。

byte b = 1;
boolean boo = false;
b = boo; //编译错误
boo = b; //编译错误

当使用 “+”、“-”、“*”、“/”对基本数据类型进行运算时,运算后的数据类型可能会发生变化或者报错。

System.out.println('a'); //输出字符 a
System.out.println('a'+1); //输出字符 a 的ASCII码加一的结果
//结果:
// a
// 98

ASCII对照表:

总结:

  • 如果byte、short和char数据类型的值之间相计算,计算结果是int型

  • 如果一个操作数最大范围的数据类型是long型,计算结果就是long型

  • 如果一个操作数最大范围的数据类型是float 型,计算结果就是float型

  • 如果一个操作数最大范围的数据类型是double型,计算结果就是double型

四、进制转换

十进制:0~9;满10进1

二进制:0,1;满2进1

八进制:0~7;满8进1,进制表示用0开头

十六进制:0~9,A~F(表示10~15);进制表示用0x开头

    • 十进制转换任意进制数

一个十进制数转换成任意进制数常采用基数乘除法。这种转换方法对十进制的整数部分和小数部分将分别处理,对整数部分采用除基取余法,对小数部分采取乘基取整法,最后将整数部分与小鼠部分拼接起来。

除基取余法(整数部分的转换):整数部分除基取余,最先得到的余数为数的最低位,最后得到的数为数的最高位,商为0时结束。

乘基取整法(小数部分的转换):小数部分乘基取整,最先取得的整数为数的最高位,最后取得整数为数的最低位,乘积为1.0或者满足精度要求时结束。

    • 任意进制转换成十进制

将任意进制数的各位数码和他们的权值相乘,再把乘积相加,就得到了十进制结果,这种方法称为按权展开相加法。

    • 二进制与八进制之间的转换

将二进制数三个看成一组,三个不够时补0

    • 二进制与十六进制之间的转换

将二进制数四个看成一组,四个不够时补0

二进制转换为十六进制

十六进制转换为二进制

    • 八进制与十六进制之间的转换

通过二进制或者十进制间接转换

五、引用类型

在Java中除了基本数据类型,其他的数据类型都是引用数据类型。Java的引用不支持对内存直接操作,在Java中,任何对象都需要通过引用才能访问到,没有引用指向的对象被视为垃圾对象,将会被回收。引用类型又称为对象变量类型,是相对于基本数据类型来说的(基本数据类型不是对象),而又被称为复合数据类型,可以这样理解,引用类型的数据最终都是由基本数据类型构成的。而像接口,接口是不能实例化的,最终的实现还是由类实现的;数组在JVM中的实现也是通过类实现的,每个类型的一维数组,二维数组……都是一个类,只是这是一个特殊的类,它的对象头有别于一般对象的对象头。如字符串可以用String类型来声明。

//声明两个引用类型的变量s1,s2
String s1 = "Hello";
String s2 = "World";
s2 = "Hello world";

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值