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("对象作用域");
}
/*
* 作用域的终点
*/