新手初入Java(二)数据类型、变量和常量以及拆包和

数据类型、变量和常量以及拆包和装包

一、数据类型

Java数据类型分为基本类型(primitive types)和引用类型(reference type),其中基本类型又分为数值型、字符型、布尔型。引用类型又分为类类型、接口类型、数组类型、null类型。这两种大的类型包含了int,double,char,等许多。其关系如下图:
数据类型
其中:

  • byte字节型1字节 8bit 最大存储数据量是255,存放的数据范围是-128~127之间。
  • short短整型2字节 16bit最大数据存储量是65536,数据范围是-32768~32767之间。
  • int整型4字节 32bit最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。
  • long长整型8字节 64bit最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1 。
  • 浮点型float单精度4字节 32bit数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。 如float=2.5f;
  • double双精度8字节 64bit数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加 。
  • char字符型用单引号 。
  • 布尔类型 boolean 布尔型true/false(只有真假两种结果)。

简单类型一般适合存储少量数据,可以实现高效率处理。

引用类型的变量在堆栈(Stack)中存储对数据(对象)的引用(地址),数据(对象)存储在堆(Heap)中。对于引用类型,两个变量可以引用同一个对象,因此对一个变量的操作可能影响另一个变量所引用的对象。
Java基本数据类型的相互转化:

  • 自动类型转换:容量小的数据类型可以自动转化为容量大的数据类型
    数据类型转换

int–>float,long–>float,long–>double在转换时可能会出现精度的损失,而箭头方向表示无数据丢失的自动类型转换。

二、变量和常量

变量: 变量表示存储位置,每个变量必须具有一个类型。
变量的声明和赋值: 在方法内部声明的变量,称为"局部变量"。在类内部(但不在该类内部的任何方法中)声明的变量,称为"成员变量",即类的字段。
局部变量的声明和赋值格式如下:
(1)声明变量:
数据类型 变量名[,变量名…];
数据类型 变量名=初值[, 变量名=初值…];
(2)变量赋值:
变量=要赋的值;
注: 一行代码可以同时声明多个同类型的变量,以半角符号(,)分隔。在声明变量的同时,可以赋初值。
Java局部变量被访问之前必须初始化,否则编译时会报错。因为,不可能访问一个未初始化的变量。
例如:
代码如下:

public static void main(String[] args) {
    int i1;
    i1=123;
    int i2=456;
    double d1=12.3,d2,d3=45.6;
    System.out.println("i1="+i1);           //输出i1;
    System.out.println("i2="+i2);           //输出i2;
    System.out.println("d1="+d1);	    //输出d1;
    //System.out.println("d2="+d2);         //编译错误:变量d2被访问之前没有赋值
    System.out.println("d3="+d3);           //输出d3;
}

运行结果如下:

运行结果

变量的作用域:
变量声明的位置不同,其可被访问的范围也不同。变量的可被访问范围称为变量的作用域。Java语言中的变量按其作用域大致可以分为类型成员变量、方法体局部变量(包括方法参数)、语句块局部变量。

  • 类型成员变量:类型成员变量实在类类型中声明的变量,包括静态变量和实例变量,其有效范围(作用域)为类类型定义体内
  • 方法体局部变量:方法体局部变量是方法中声明的变量,其有效范围(作用域)为方法体内。方法所带的参数也属于过程级局部变量,其有效范围(作用域)为方法体内
  • 语句块局部变量:语句块局部变量实在控制结构块中声明的变量。例如,if、for等语句中定义的变量,其有效范围(作用域)为控制结构块内

常量:
(1)文本常量: 代码中出现的文本形式常数,即文本常量,通常用来表示简单类型、String类型和null类型的值
(2)整型常量: 整型字符串通常解释为int类型。如果加后缀L(大写字母L,也可使用小写字母l,但小写字母l容易与数字1混淆,故不建议使用),则解释为long类型。例如:

int  int1 = 123;      //整型变量123为int型
long  long1=123L;     //整型变量123L为long型

编译器通常将整数解释为十进制(基数为10)数制,可以用前缀0x(或0X)将整数强制为十六进制(基数为16)数制,或使用前缀0(数字0)将整数强制为八进制(基数为8),如图表2-3所示。注意,跟在前缀后面的数字必须符合数制。


数制前缀有效数值示例
十进制(以10为基数)0~90、1、2、7、8、10、11
十六进制(基数为16)0x(或0X)0 ~9、A ~F或0 ~9和a ~f0x0、0x1、0x2、0x7
八进制(基数为8)00 ~700、01、02、03、010

(3)浮点数类型常量: 浮点数只能表示十进制数。浮点数有两种表示方法,即标准表示法和科学记数法。浮点数又分为单精度数和双精度数。
(4)布尔类型常量: 布尔类型常量分别为true和false。布尔类型常量可以赋值给布尔类型变量。例如:

boolean  b1 = true;

(5)字符类型常量: Java字符常量在单引号内包含所需的字符,例如’a’、‘A’。
(6)字符串类型常量: Java的字符串常量是用双引号(" “)括起来的一串字符。如"Hello,World”

String str1="程序设计";
String str2="Hello World";

(7)用户声明常量: 在方法内部声明的常量,称为"局部常量";在类(但不在该类内部的任何方法中)中声明的常量,称为"成员变量",“常量字段”。

局部变量的声明和赋值格式如下:
final 类型 局部变量名[=初值];
注意: 指定其值后,不能再对其进行赋值修改,否则会产生编译错误。

三、拆包和装包

(1)装包: 即简单类型=》包装类
(2)拆包:即包装类=》简单类型
以下为类型的转换:

简单类型包装类
intInteger
byteByte
charCharacter
shortShort
booleanBoolean
floatFloat
doubleDouble
longLong

通过装包和拆包操作机制,可以实现简单类型和引用类型之间的转换。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值