> 文档中心 > 【Java基础】数据类型与变量

【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. 增加可读性。尽量见名知意的起名方式
  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基础】数据类型与变量

长整型变量

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基础】数据类型与变量

注意事项:

  • 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基础】数据类型与变量

注意事项:

  • 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基础】数据类型与变量

单精度浮点型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基础】数据类型与变量

注意事项:

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

🍭类型转换与类型提升

🍵类型转换

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

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

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

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

自动类型转换(隐式)

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

例如上面的例子: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基础】数据类型与变量

注意事项:

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

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

🍵类型提升

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

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

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

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

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

如下是short转成了int。

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

如下是int转成了double。

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

扩展:字符串类型

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基础】数据类型与变量

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

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

🍭最后

补博客补博客补博客。重要的事情说三遍!
文章如果有错误,还请小伙伴们多多指正哟!
在这里插入图片描述

海量搞笑GIF动态图片