Java教程

java学习笔记-----基本数据类型及转换

本文主要是介绍java学习笔记-----基本数据类型及转换,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

刚开始学习Java,把老师上课讲的整理了一下~~

1.计算机存储单元

计算机存储设备的最小信息单元叫位(bit),又称之为比特位,通常用小写的字母b表示。

而计算机中最小的存储单元叫字节(byte),通常用大写字母B表示,字节是由连续的8个位组成。

除了字节外还有一些常用的存储单位:

1B = 8bit

1KB = 1024B

1MB = 1024KB

1GB = 1024MB

1TB = 1024GB

2.基本数据类型

Java语言是强类型语言,对于每一种数据都给出了明确的数据类型,不同的数据类型也分配了不同的内存空间,所以它们表示的数据大小也是不一样的。
数据类型的种类
数据类型内存占用和取值范围
在这里插入图片描述
说明:e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方

2.1 整数类型:byte、short、int、long

  • Java各整数类型有固定的表数范围和字段长度,不受具体OS的影响,以保证java程序的可移植性。
  • java的整型常量默认为 int 型,声明long型常量须后加‘l’或‘L’
  • java程序中变量通常声明为int型,除非不足以表示较大的数,才使用long

2.2 浮点类型:float、double

与表示整数的整型不同,浮点型代表的是实数,其实就是包含小数的部分。

一、浮点型常量

Java的实常数有两种表示形式:

1.十进制数形式,由数字和小数点组成,且必须有小数点,如0.123, .123, 123. ,123.0等等 。

2.科学计数法形式。如:123e3或123E3,其中e或E之前必须有数字,且e或E后面的指数必须为整数。

3.浮点型常量的默认类型是double,当我们想要表示一个float类型的浮点数的时候 此时我们就需要在数值后边加上一个F或者f。

float f = 3.14F;

二、浮点型变量

浮点型变量的类型有float和double两种。

双精度类型double比单精度类型float具有更高的精度,和更大的表示范围,常常用于科学计算等高精度场合。

  public  static  void main(String[] args){
        float f = 3.14F;
        double  d = 3.14D;
        float  f1 = 0.1f;
        double d1 = 1.0/10;
        System.out.println(f1 == d1);//false
        float f2 = 42323442F;
        float f3 = f2 +1;//   f2与f2+1 是否相等?
        System.out.println(f2==f3);//true
    }

以上代码 由于收到长度和精度的限制,无法精确地去表示一些浮点数 只是近似的等于 。所以,当我们在遇到需要精确表示小数的时候 特别是金融方面的时候,千万不要直接使用float和double去表示。

有关浮点数精度的博客,有兴趣了解一下!

2.3字符型 char

char表示字符 占用两个字节

java中的所有的字符都使用的是Unicode编码 一个字符可以存储一个字母 可以存储一个汉字 还可以存储其他的字符

字符的表示形式:

public  static  void main(String[] args){
        //字符的第一种表示形式  使用单引号引起来的
       char  c1 ='1';
       char  c2 = '中';
       char c3 = 'a';
       char c4 = '&';
       //转义字符
        char  c5= '\t';//制表符
        char c6='\r';//回车
        char c7 = '\n';//换行
        //常量表示   直接使用unicoide值进行表示
    }

2.4 布尔类型 boolean

表示的是逻辑值 只有true和false 两个值

Boolean适用于逻辑运算,一般用于程序流程控制

Boolean只允许取值true和false,无null。与c语言不同,不可以用0和非0的整数代替false和true。

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

3.1自动转换

非赋值运算的转换规则:

byte/char/short -> int -> long -> float -> double

布尔类型不参与转换

下面来看一个小例子

public static void main(String[] args) {
        byte a = 1;
        byte b = 2;
        byte c =a+b;   
    }

上面代码在编译器中会报错,变量 a,b,c 都是 byte 型,编译器为什么会报错呢,那是因为在运算过程中出现了数据类型的自动转换,变量 a 和变量 b 都是先转换为 int 型,再参与运算,所以a+b的结果是一个 int 型的数据,不能赋给 byte 型的c。

  1. byte、char、short 参与算数运算时都是先转换为 int 型,再参与运算。

  2. 在运算时,如果有大范围操作数也有小范围操作数,那么小范围操作数就要先转换为大范围操作数再参与运算。

  • 如两数之一为double,则另一个操作数先被转化为double,再参与算术运算。
  • 如两数均不为double,当操作数之一为float,则另一操作数先被转换为float,再参与运算。
  • 如两数均不为double或float,当操作数之一为long,、则另一操作数先被转换为long,再参与算术运算。
  • 如两数均不为double、float或long,则两操作数先被转换为int,再参与运算。

赋值运算时,Java会自动扩宽类型,将小范围类型变量转换成大范围类型的变量。

3.2 强制转换

除了自动转换外,我们还可以进行强制转换,以便将大范围操作数赋值给小范围操作数。

public static void main(String[] args) {
        byte a = 1;
        byte b = 2;
        //a+b是int类型
        byte c =(byte) (a+b);//这样就不会报错了
    }

强制转换的格式是在需要转型的数据前加上“( )”,然后在括号内加入需要转化的数据类型。

有的数据经过转型运算后,精度会丢失。

这篇关于java学习笔记-----基本数据类型及转换的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!