【Java基础】数据类型与变量

数据类型与变量

  • 数据类型
    • 基本数据类型
    • 引用数据类型
  • 常量与变量
    • 常量
      • 字面常量
      • 标识符常量
    • 变量
      • 变量的概念
        • 变量引出的起名-标识符规则
      • 整型变量
      • 长整型变量
      • 短整型变量
      • 字节型变量
      • 浮点型变量
        • 双精度浮点型double
        • 单精度浮点型float
      • 字符型变量
      • 布尔型变量
  • 类型转换与类型提升
    • 类型转换
    • 类型提升
  • 最后

大家好,我是路不停_。
今天分享的是Java基础中的数据类型与变量,我也还在持续学习中,希望对在看的小伙伴们也有所帮助!
希望大家一起不断成长。

数据类型

Java中的数据类型分为两种:基本数据类型和引用数据类型。

基本数据类型

基本数据类型有8种!

布尔类型、字符类型、字节类型、短整型、整数、长整型、双精度浮点型、单精度浮点型

一些注意点

  • 在任意系统上,int都是四个字节,long都是8个字节
  • 整型和浮点型都是有符号的
  • 整型默认是int型,浮点型默认为double

引用数据类型

引用这个词,如果对于学习C++的同学,并不陌生,引用即是别名,其实本质就是一种指针的表现。

在Java中引用数据类型与c++中的指针类似。
可以看一下下面的代码:

    public static void main(String[] args) {
        String a = "Hello World!";
        String b = a;
        a = "Hello Java";
        String c = a;
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
    }

这段代码经历了两个阶段:
第一阶段,创建出a和b变量,a和b变量并不是保留了Hello World!这串字符串,而是以一种方式可以找到位于栈空间的这串字符串。就像指针一样。

第二个阶段,a改变了指向,c和a将指向一个空间,但是b仍然保留。

对于引用类型,我们现今作简单的了解,后续会加深对其的解释和理解的~~~

常量与变量

常量

常量:在程序中保持不变的量我们称之为常量,强制性更改常量是会报错的。

在Java中,常量又分为两种,一种是字面常量,另一种是标识符常量

字面常量

字母常量:直接以数字或者字符串的形式或是字符等等给出的,就称之为字母常量
例如:

  • 直接给出的10,20,100
  • “Hello World”
  • ‘c’
  • 布尔值:true,false
  • 空常量:null

标识符常量

标识符常量是通过关键字final定义的。它的使用和变量一样,必须要先声明后使用。

标识符常量也称符号常量~

举个例子:

此处我们只写main函数

    public static void main(String[] args) {
        final int A = 10;
//        a = 12;报错
    }

【Java基础】数据类型与变量_第1张图片
Java中约定常量标识符一般使用大写字母。和变量进行区分。
使用常量的优点:

  1. 增加可读性。尽量见名知意的起名方式
  2. 增加可维护性,只要在常量声明的地方更改常量值就可以了,其他地方使用到就会自动改变

这一点感觉和c语言中define很像

变量

变量的概念

变量的基本属性:变量名,数据类型,存储单元,变量值。
变量名是我们自己起的名字
存储单元是在内存中的分布,有栈堆静态区等等存储
变量值是我们自动赋值的值

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

变量引出的起名-标识符规则

Java 对各种变量、方法和类等要素命名时使用的字符序列称为标识符。我们起的类名,方法名或者变量名都叫标识符

【标识符规则】:

  1. 由 26 个英文字母大小写,0-9,_或$ 组成
  2. 数字不可以开头。
  3. 标识符不能包含空格。
  4. 不可以使用关键字和保留字,但能包含关键字和保留字。
  5. Java 中严格区分大小写,长度无限制。

【起名建议】:

  1. 类名:每个单词首字母大写
  2. 方法名:首字母小写,以后的每一个单词首字母大写
  3. 变量名:与方法名规则相同

整型变量

int类型占4字节

对于变量的使用:

  1. 在定义的时候给出初始值
  2. 在定义的时候没有给初始值,但是在使用之前一定要进行初始化
    public static void main(String[] args) {
        int a = 10;

        int b;
        b = 10;
    }

注意事项:

  • 我们尽量在定义变量的时候就初始化,不知道初始化成什么的时候可以设置成0
  • 如果使用之前没有给变量初始化,java的编译器会直接报错,不会像c语言一样出现随机值
  • int类型表示范围是:-2^31~ 2^31-1
  • int在任意系统下都是4个字节

【Java基础】数据类型与变量_第2张图片

长整型变量

long类型占8个字节
对于long类型,推荐初始化后面加L或者l

    public static void main(String[] args) {
        int a = 10;
        long b = 10L;
        System.out.println(Long.MAX_VALUE);//查看Long表示的最大整数范围
        System.out.println(Long.MIN_VALUE);//这个是最小
    }

注意事项:

  • 长整型变量初始化一般加L,也可以加小写l但是不好区分。
  • 长整型在所有系统下都是8个字节,这里跟c语言就不同了。注意java中没有区分32位和64位系统了。
  • 长整型表示的数值范围是:-2^63~ 2^63-1

短整型变量

short类型占2个字节

    public static void main(String[] args) {
        short a = 10;
        System.out.println(a);
        System.out.println(Short.MAX_VALUE);
        System.out.println(Short.MIN_VALUE);
    }

【Java基础】数据类型与变量_第3张图片

注意事项:

  • short的表示范围为:-32768 ~ 32767

字节型变量

byte类型占1个字节

    public static void main(String[] args) {
        byte b = 10;
        System.out.println(b);

        System.out.println(Byte.MAX_VALUE);
        System.out.println(Byte.MIN_VALUE);
    }

【Java基础】数据类型与变量_第4张图片

注意事项:

  • byte占用一个字节,表示类型范围是:-128~127

浮点型变量

注意事项:

  • double占用字节为8字节,float占用字节为4字节
  • 浮点型和整型在内存中存储的方式是不同的,所以表示的范围不能单纯的以2^n这种形式表示
  • 浮点数是不可能一定精确的,会存在一定的精度误差,所以浮点数是一个近似值
  • 通常情况下我们使用double会更多,因为比float表示的精度范围广。
双精度浮点型double
    public static void main(String[] args) {
        double d = 1.22;
        System.out.println(d);
        double num = 1.1;
        System.out.println(num * num);
    }

【Java基础】数据类型与变量_第5张图片

单精度浮点型float

float类型在定义的时候最好加上F,或者f,用来和double类型作区分

    public static void main(String[] args) {
        float num = 1.12f;
        System.out.println(num);

    }

字符型变量

字符类型占用2字节

    public static void main(String[] args) {
        char a = 'A';
        char b = '9';
        char s = '好';
        System.out.println(a);
        System.out.println(b);
        System.out.println(s);
    }

注意事项:

  • java中使用单引号+单个字母的形式表示字符字母量
  • java中使用Unicode表示字符,所以一个字符占用两个字节。

布尔型变量

布尔类型占用1个字节(这句话并不普遍适用====>java虚拟机规范中没有规定boolean占用多少字节,但是在Oracle公司的虚拟机实现中,boolean占用1个字节)

    public static void main(String[] args) {
        boolean value = true;
        System.out.println(value);
    }

【Java基础】数据类型与变量_第6张图片

注意事项:

  • 布尔类型是没办法和int类型转化的====> java中没有1表示true,0表示false这种说法

类型转换与类型提升

类型转换

类型转换是当不同类型变量相互赋值的时候,发生的操作。

java在类型检查这方便十分严格,不同类型相互赋值有时候是不可行的。

【Java基础】数据类型与变量_第7张图片

当类型不同时,就会发生类型转换了。

自动类型转换(隐式)

编译器自行处理的类型转换。直接将数据范围小的转换为数据范围大的。

例如上面的例子:a是整型变量,b是长整型,a赋值给b的时候会自动提升为long类型,然后赋值过去。但是龙类型比int类型范围大,赋值的时候会有数据丢失不安全,所以编译器报错了。

再看几个例子:

    public static void main(String[] args) {
        float f = 123.12f;
        double d = 123.1212;
        d = f;
//        f = d;报错,double类型比float范围大,会丢失数据,不安全
        byte b = 100;
//        byte b2 = 128;报错,byte类型是-128~127,128超过其表示范围,会丢失数据
    }

强制类型转换(显示)

强制类型转换是人为手动强转类型的。这种情况下我们就可以完成从范围大的数据赋值给范围小的数据了。

    public static void main(String[] args) {
        float f = 123.12f;
        double d = 123.1212;
        f = (float)d;
        byte b = 100;
        byte b2 = (byte)128;
        System.out.println(f);
        System.out.println(b2);
    }

【Java基础】数据类型与变量_第8张图片

注意事项:

  • 强转不一定可以成功,不相干类型之间是不能互相转换的

【Java基础】数据类型与变量_第9张图片

类型提升

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

比如int和long之间运算结果提升成long

【Java基础】数据类型与变量_第10张图片

此时想要用一个int类型来装载运算结果是不行的,因为结果已经提升为long了。

一般进行整型运算的时候,如果类型比int小,那么结果会转成int。如果类型中有long或是double类型的,结果就是long或double

如下是short转成了int。

【Java基础】数据类型与变量_第11张图片

如下是int转成了double。

【Java基础】数据类型与变量_第12张图片

扩展:字符串类型

Java中引入了String类型表示字符串

有时候我们需要将字符串和int类型进行转换

  • int转String
    public static void main(String[] args) {
        int num = 100;
        String str = num + "";
        String str2 = String.valueOf(num);
        System.out.println(str);
        System.out.println(str2);
    }

【Java基础】数据类型与变量_第13张图片

  • String转int
    public static void main(String[] args) {
        String str = "100";
        int num = Integer.parseInt(str);
        System.out.println(str);
    }

【Java基础】数据类型与变量_第14张图片

最后

补博客补博客补博客。重要的事情说三遍!
文章如果有错误,还请小伙伴们多多指正哟!
【Java基础】数据类型与变量_第15张图片

你可能感兴趣的:(Java基础,java)