Java基础- 数据类型

1.数据类型

java数据类型分基本数据类型和引用数据类型

具体数据类型的取值范围:

数据类型                  大小                   默认值                  可表示的数据范围    

byte(位)               1个字节 (8bit)            0                             -128~127

short(短整数)        2个字节 (16bit)         0                             -3768~32767

char(字符)             2个字节 (16bit)         u0000(空)              0~65535

  int(整数)               4个字节 (32bit)         0                            -2147483648~2147483647

float(单精度)          4个字节 (32bit)          0.0f                      -3.4E38~3.4E38   

double(双精度)       8个字节 (64bit)        0.0d                       -1.7E308~1.7E308

long(长整型)         8个字节 (64bit)            0l             -9223373036054775808~9223372036054775007

备注:如果要表示long型数据或float型数据,相应的数值后面可以加上l、L或f、F

2、对象包装器

java为了能将基本类型视为对象来处理,并能连接相关的方法,java为每个节本类型都提供了相应的包装类,这样便能将基本类型转化为对象来处理,专门用来包裹基本类型的类叫包装类,目的是提供一个对象实例作为壳,将基本类型包到这个对象中,然后提供很多操作数据的方法,使面向对象的编程变得更加容易。

基本数据类型 /包装类

byte(字节)/java.lang.Byte

char(字符)/ java.lang.Character

short(短整型) / java.lang.Short

int(整型) / java.lang.Interger

long(长整型) /java.lang.Long

float(长整型) /java.lang.Float

double(双精度)/java.lang.Double

boolean(布尔型)/java.lang.Boolean

 3、基本数据类型间的转换

自动类型转换:编译器自动完成类型转换,不需要在程序中编写代码。

强制类型转换:强制编译器进行类型转换,必须在程序中编写代码。

自动类型转换:容量小的数据类型可以自动转换成容量大的数据类型,byte→short(char)→int→long→float→double,byte、short、int不能相互转换,先转换成int类型在转换,boolean类型不能转换成任何其他数据类型。

如:int a=257;byte b=(byte)a;在java中,int 类型占4个字节,byte占一个字节,故int类型转化为byte类型会出现位丢失的情况,将int的低4位作为byte类型的值。int值256二进制值100000001,后8位00000001,第一个0表示符号位,表示正数,所以变量b的值为1。

在计算机中,存储数据是通过内存地址来区分不同数据的,内存地址用十六进制数表示。在计算机存储单元中,一个ASCII码值占一个字节(8个二进制位),其中最高位符号位。事实上,计算机内的二进制数值是以补码形式表示的,正数的补码和原码的形式相同,负数的补码是将该数的绝对值的二进制形式,按位取反再加一。int a=257;byte b=(byte)a;这时b=-128,a的二进制10000000,第一位符号位是1,a是负数,负数的补码10000000,b=-128

注意问题:在整数之间进行类型转换时,数值不发生改变,而将整数类型,特别是比较大的整数类型转换成小数类型时,由于存储方式不同,有可能存在数据精度的损失。

强制类型转换:容量大的数据类型转换成容量小的数据类型时,要加上强制转换符,但这样有可能会造成精度降低或数据溢出,要小心

 4、引用数据类型

引用数据类型有类、数组、接口,

Car   c;  c=new Car();

c是对象引用变量,new Car()是对象本身在堆空间里创建的实体,一个Car类可以创建出无数个对象,这些对象没有名字,没法直接访问只能通过对象引用来间接访问对象。

 

作用域(大括号中的内容)

 变量作用域

{

int x = 12;
   {

int q = 96;
/* x & q都有效 */
System.out.println(x);
System.out.println(q);
   }

/*
* 作用域的终点
*/

/* x 有效 */
System.out.println(x);

/* q 无效 */
//System.out.println(q);
}

/*
* 作用域的终点
*/

对象作用域

{
String s=new String("对象作用域");
}
/*
* 作用域的终点
*/

原文地址:https://www.cnblogs.com/kaola8023/p/7449814.html