java基础——1——数据类型

Java语言支持的数据类型分为两类:基本数据类型引用类型
1、基本数据类型共8种,分为布尔类型(boolean)和数值类型,数值类型又分为整数类型和浮点类型。整数类型包括byte、short、int、long、char,浮点类型包括float(单精度浮点)和double(双精度浮点)。
2、引用类型包括类、接口和数组类型,还有一种特殊null类型。引用数据类型就是对一个对象的引用,对象包括实例和数组两种。空类型(null)就是null值类型,这种类型没有名称,所以不能声明一个null类型的变量或者转换到null类型。
数值分常量和变量。
常量:在程序运行中,不会改变的量。字符常量,字符串常量,整数常量,布尔值常量。
基本数据类型
一.整型:
1.byte:byte(1字节长度)类型的整数在内存里占8位,表示的范围是:-128(-2的7次方) ~ 127 (2的7次方-1)
字节:计算机的处理信息的最小单位。1字节=8位二进制数。
2.short:short(2个字节长度)类型整数在内存里占16位,表示范围-32768 ~ 32767
3.int:int(4个字节长度)类型在内存中32位,表示范围-2147483648 ~ 2147483647
4.long:long(8个字节长度)类型在内存中64位,表示范围-9223372036854775808 ~ 9223372036854775807
int类型是常用的整数类型,Java整数常量默认的就是int类型。byte,short定义时,他们接收的其实是一个int类型的值 。使用byte或者short类型时,整数的范围不能超过类型的范围,超出范围就会报错。
但是使用几个巨大的整数常量时,Java不会自动把整个整数常量当成long类型,所以需要在整数常量后面加上L作为后缀,例如:long a = 99999999999999999L;
java中整数常量有4种表示方式:十进制,二进制(0b或者0B开头,0,1组成),八进制(以0开头,0-7组成),十六进制(以0x或者0X开头,0-9,a,b,c,d,e,f表示(大小写都可以))。
举例:int octalValue = 013; //八进制转换成十进制表示11
int hexValue1 = 0X13; //十六进制转换成十进制表示19
int hexValue2 = 0XAF; //十六进制转换成十进制表示175
int binValue1 = 0B11011; //二进制转换成十进制表示27(JDK1.7中新增特性)
二.字符型:
字符型常用于表示单个字符,字符常量必须使用单引号括起来,例如:char a = ‘a’;char类型的值也可以直接作为整数类型的值来使用,是一个16位的无符号整数,范围是0 ~ 65535。
补充内容:
1、ASCII码:一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,换算为十进制。最小值0,最大值255。如一个ASCII码就是一个字节。
2、UTF-8编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。
3、Unicode编码:一个英文等于两个字节,一个中文(含繁体)等于两个字节。
4、符号:英文标点占一个字节,中文标点占两个字节。举例:英文句号“.”占1个字节的大小,中文句号“。”占2个字节的大小。
三.浮点型:
Java浮点类型:float和double。默认的是double类型。float占4个字节(byte)32位,double占8个字节(byte)64个长度。
float类型的常量后面必须以f或者F结尾,例如:float a = 12.55f; double类型的常量后面可以d或者D结尾,但是不强制追加,不写也没有问题。
特殊情况:正无穷大、负无穷大、非数分别用基本数据类型对应的封装类来表示。
float c = Float.NaN; //不是一个数
float d = Float.NEGATIVE_INFINITY; //负无穷大
int e = Integer.MIN_VALUE; //最小值
五.布尔型
布尔型只有一个boolean类型,用于表示逻辑上的“真”或者“假”,数值只能是true或者false

基本数据类型转换
Java程序中,不同的基本类型的值经常需要进行相互转换,Java提供了两种类型转换方式:自动类型转换和强制类型转换。
将一种基本数据类型的值直接赋给另一种基本数据类型,则这种方式被称为自动类型转换。前提是把一个范围小的数值或变量直接赋值给另一个数据范围大的变量时,系统可以进行自动类型转换。
自动转换顺序:byte->short->int->long->float->double—>char
这里byte,short,char他们参与运算时首先会自动转换成大范围类型再参加运算。有int类型就转换成int类型,有long类型的就转换成long类型再参加运算。
将大范围的数据向小范围的数据进行转换则需要进行强制转换.

  1. byte b1=3,b2=4,b; b=b1+b2; b=3+4;什么问题,如何解决?
    b=b1+b2;错误:这个是类型提升,所以出错;
    b1和b2是byte型在计算的时候先升级到int型,
    再转换成byte型出错*
    b=3+4;//正确:常量,先将结果计算出来,
    再看结果是否在byte类型内,如果在就不报错

猜你喜欢

转载自blog.csdn.net/qq_39411208/article/details/82117982