JavaSE入门---数据类型与变量

文章目录

  • 数据类型
    • 基本数据类型
    • 引用数据类型
  • 常量
  • 变量
    • 变量类型
    • 类型转换
      • 自动类型转换(隐式)
      • 强制类型转换(显式)
    • 类型提升
  • 字符串类型

数据类型

在Java中,数据类型基本分为俩类:基本数据类型和引用数据类型
基本数据类型分为四类八种

基本数据类型

四类:整型、浮点型、字符型、布尔型。
八种:
JavaSE入门---数据类型与变量_第1张图片

特别说明:每种基本数据类型都有其对应的包装类,即:
JavaSE入门---数据类型与变量_第2张图片
包装类的出现是因为:Java是一个面向对象的编程语言,但是他的八种数据类型却不是面向对象的,为了使用方便和解决这个不足,在设计类时都为每个基本数据类型设计了一个类进行代表。

包装类的用途,主要有俩个
1.作为和基本数据类型对应的类 类型存在,方便设计到对象的操作。
2.包含每种数据类型的相关属性,如最大值、最小值以及相关操作方法等。

注:
1.不管是在32位系统还是在64位系统,int都占4个字节,long都占8个字节
2.整形和浮点型都是带有符号的
3.整形默认为int 浮点型默认为double

引用数据类型

引用数据类型包括:String类、接口、枚举等。

常量

字面常量的分类:
1.字符常量:由单引号引起来的单个字符,如:’A‘,’8‘
2.字符串常量:有“ ”引起来的,比如“hello”、“123456”等。
3.整形常量:程序中直接写的数字(没有小数点),如10、1000
4.浮点数常量:程序中直接写的小数,如3.14、9.99
5.布尔常量:只有两种:true(真)、false(假)
6.空常量:null

变量

在程序中,除了有始终不变的常量外,有些内容可能会经常改变,比如:人的年龄、身高、成绩分数、数学函数的计算结果等,对于这些经常改变的内容,在Java程序中,称为变量。而数据类型就是用来定义不同种类变量的。

定义变量的语法格式为:数据类型 变量名 = 初始值;

变量类型

1.整型变量

1.1 定义整型变量

//方式一:在定义时给出初始值
        int a = 10;
//方式二: 在定义时没有初始值 但是在使用前必须赋值
        int b;
        b = 10;

注:
1.int不管在什么系统下都是4字节
2.在给int变量设置初始值的时候,不能超过int的表示范围

1.2 定义长整型变量

//方式一:直接定义
        long a = 10;
//方式二:在数值后加标识  与int类型的变量进行区分
        long b = 10L;
        long c = 10l;

注:

  1. long不管在什么系统下都是8字节
  2. long变量的初始值后加L或者l 推荐加L

1.3 定义短整型

        short a = 10;

注:
1.short不管在什么系统下都是2字节
2.使用时不要超过short能表示的范围(使用较少)

1.4 定义字节型变量

        byte a = 10;

注:

  1. byte不管在什么系统下都是1字节
  2. byte的范围是:-128 ~ 127

2.浮点型变量

2.1 定义单精度浮点型

        float a = 0.1f;
        float b = 0.1F;
        //输出结果 0.1

注:

  1. float变量的初始值后加f或者F 推荐加f
  2. float表示的精度范围较小,因此一般用到浮点数都会使用double

2.2 定义双精度浮点型

        double a = 1.1;
        System.out.println(a*a);
        //输出的结果是 1.21?
        //输出结果:1.2100000000000002

注:

  1. 浮点数与整数在内存中的存储规则不同,不能单纯使用2^n来计算
  2. double类型的内存布局遵守IEEE 754标准(准确定义了单精度和双精度浮点格式),要求在有限的内存空间内表示可能无限的小数,势必会存在一定的精度误差,因此浮点数是个近似值,并不是准确值。

3.字符型变量

        char a = 'A';
        char b = 'a';
        char c = '1';
        char d = '啊';

注: 计算机中字符本质上是一个整数。在C语言中使用ASCII表示字符 而在Java中用Unicode表示字符

4.布尔类型变量

        boolean a = true;
        boolean b = false;

注:

  1. boolean类型的变量只有俩种取值,true表示真 false表示假
  2. Java的boolean类型和int不能转换,不存在1表示真、0表示假这样的用法

类型转换

Java 作为一个强类型编程语言, 当不同类型之间的变量相互赋值的时候, 会有教严格的校验。当参与运算数据类型不一致时,就会进行类型转换。Java中类型转换主要分为两类:自动类型转换(隐式) 和 强制类型转换(显式)。

自动类型转换(隐式)

自动类型转换:代码不需要经过任何处理,编译器会自动进行处理。

特点:数据范围小的类型转为数据范围大的类型时会自动进行。

//示例一:
        int a = 10;
        long b = 10L;
        b = a;   //a的范围小 b的范围大  先将a的类型转换为long 然后进行赋值
        a = b    //a的范围小 b的范围大  将大数存储在小的内存空间会有数据丢失  不安全
//示例二:
        float a = 3.14f;
        double b = 3.14;
        b = a;    //a的范围小 b的范围大  先将a的类型转换为double 然后进行赋值
        a = b;    //a的范围小 b的范围大  将大数存储在小的内存空间会有数据丢失  不安全

强制类型转换(显式)

强制类型转换:当进行操作时,代码需要经过一定的格式处理,不能自动完成。

特点:数据范围大的到数据范围小的。

		int a = 10;
        long b = 100L;
        b = a; // int-->long,数据范围由小到大,隐式转换
        a = (int)b; // long-->int, 数据范围由大到小,需要强转  否则编译失败

注:

  1. 不同的数字类型的变量之间赋值,表示范围较小的类型能隐式转换成表示范围较大的类型
  2. 如果需要把表示范围较大的类型转换成表示范围较小的类型,需要强制类型转换 但是可能会丢失数据、丢失精度;
  3. 强制类型转换不一定能成功,不相干的类型不能互相转换。

类型提升

不同类型的数据之间相互运算时,数据类型小的会被提升到数据类型大的。

		int a = 10;
        long b = 20;
        int c = a + b; //  编译出错: a + b -->int + long--> long + long 赋值给int时会丢失数据
        long d = a + b; // 编译成功: a + b --> int + long--->long + long 赋值给long

注:

  1. 不同类型的数据混合运算,范围小的会提升为范围大的
  2. 对于short、byte这种比4个字节小的类型,会先提升为4个字节的int 再参与运算

字符串类型

在Java中使用String类定义字符串类型。(在这里做简单介绍,后面详细介绍)

		String s1 = "hello";
        String s2 = "world";

常用的三个字符串操作:

		//一.字符串拼接
        String s3 = s1 + s2;
 		//二.将int转为String
        int num = 10;
        String s1 = String.valueOf(num);
		//三. 将String转为int
        String s1 = "10";
        int a = Integer.parseInt(s1);

你可能感兴趣的:(JavaSE,java,开发语言)