java基础3:Java数据类型

来源:互联网 发布:翁其钊 知乎 编辑:程序博客网 时间:2024/06/06 09:44

java基础3:Java数据类型

Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同大小的内存空间。

Java总共有两种数据类型,主要有基本类型和引用类型,基本类型有8种,引用数据类型(数组、类、接口)有3种。 

  在计算机内部,所有信息都采用二进制表示,每个二进制由01两种状态,一个字节有8,也就是由801构成,如果short类型的6在计算机中是如何存储的,short是两个字节,那么short 6的二进制为:00000000 00000110,int类型的6在计算机中存储为32位:00000000 00000000 00000000 00000110。

如:

byte score//保存单科分数

short age;//保存年龄

int sumScore;//保存总分

long fileSize;//保存文件长度

foat x,y;

double result;//保存运算结果

char sex;//保存性别

boolean isContinue;//表示是否继续

String name;//表示姓名

 

1.整数型

 

byte/short/int/long

Java语言整数型常量有三种表示方法

l  十进制

l  八进制,八进制0开头,如:013

l  十六进制,十六进制0x开头,如:0x23

Java语言整数型默认为int类型,如果要声明成long类型在变量值后加入L,如:

long l = 999999999999L

 

2.浮点型

 

Java语言中浮点类型包括:float/double

Java语言中浮点类型默认为double

 

3.布尔类型(true、false)

 

4.基本类型的转换

(1)默认转换:byte-short-int-long-float-double。

(2)强制转化:大转小,注意:只要不超出范围可以将整型值直接赋值给byte,short,char。

 

【示例代码】

public class DataTypeTest06 {

      

       public static void main(String[] args) {

             

              //出现错误,1000超出了byte的范围

              //byte a = 1000;

             

              //正确,因为20没有超出byte范围

              //所以赋值

              byte a = 20;

             

              //变量不能重名

              //short a =  1000;

             

              //正确,因为数值1000没有超出short类型的范围

              //所以赋值正确

              short b =  1000;

             

              //正确,因为默认就是int,并且没有超出int范围

              int c = 1000;

             

              //正确,可以自动转换

              long d = c;

             

              //错误,出现精度丢失问题,大类型-->>小类型会出现问题

              //int e = d;

             

              //long强制转换成int类型

              //因为值1000,没有超出int范围,所以转换是正确的

              int e = (int)d;

             

              //因为java中的运算会会转成最大类型

              //103默认为int,所以运算后的最大类型也是int

              //所以是正确的

              int f = 10/3;   

             

              //声明10long类型

              long g = 10;

             

              //出现错误,多个数值在运算过程中,会转换成容量最大的类型

              //以下示例最大的类型为double,而hint,所以就会出现大类型(long)到小类型(int

              //的转换,将会出现精度丢失问题

              //int h = g/3;

             

              //可以强制转换,因为运算结果没有超出int范围

              //int h = (int)g/3;

             

              //可以采用long类型来接收运算结果

              //long h = g/3;

             

              //出现精度损失问题,以下问题主要是优先级的问题

              //g转换成int,然后又将int类型的g转换成byte,最后byte类型的g3运算,那么

              //它的运算结果类型就是int,所以int赋值给byte就出现了精度损失问题

              //byte h = (byte)(int)g/3;

             

              //正确

              //byte h = (byte)(int)(g/3);                  

             

              //不能转换,还有因为优先级的问题

              //byte h = (byte)g/3;     

             

              //可以转换,因为运算结果没有超出byte范围

              //byte h = (byte)(g/3);

             

              //可以转换,因为运算结果没有超出short范围

              short h = (short)(g/3);

             

              short i = 10;

             

              byte j = 5;

             

              //错误,shortbyte运算,首先会转换成int再运算

              //所以运算结果为intint赋值给short就会出现精度丢失问题

              //short k = i + j;

             

              //可以将运算结果强制转换成short

              //short k = (short)(i + j);

             

              //因为运算结果为int,所以可以采用int类型接收

              int k  = i + j;

             

              char l = 'a';

              System.out.println(l);

             

              //输出结果为97,也就是aascii

              System.out.println((byte)l);

             

              int m = l + 100;

              //输出结构为197,取得aascii码值,让后与100进行相加运算

              System.out.println(m);

             

       }

}

 

0 0