Java - 数据类型、常量与变量

一、数据类型

Java中有两种数据类型:基本数据类型引用数据类型在这里插入图片描述

1. 基本数据类型:

  • 整数型:byte[1字节],short[2字节],int[4字节],long[8字节]
  • 浮点型:float[4字节],double[8字节]
  • 字符型:char[2字节]
  • 布尔型:boolean[1字节]

TIPS:

  1. 1字节包含8个二进制位
  2. 字符串不是基本数据类型,而是引用数据类型
  3. 浮点型可能只是一个近似值,并非精确值
  4. 数据范围与字节数不一定相关,例如float数据范围比long更加广泛,但是float是4字节,long是8字节
  5. Java中,整数默认是int类型,浮点数默认是double类型

2. 引用数据类型:

字符串(String)、数组(Array)、类(Class)、接口(Interface)、Lambda等除去基本数据类型以外的全部数据类型

二、常量

程序运行期间,固定不变的量称为常量

常量的分类:

  1. 字符串常量:凡是用双引号引起来的部分,叫做字符串常量。例如:“abc”,“Hello”,“123”
  2. 整数常量:直接写上的数字,没有小数点。例如:100,200,0,-240
  3. 浮点数常量:直接写上的数字,有小数点。例如:2.5,3.14,0.0
  4. 字符常量:凡是用单引号引来的单个字符,叫做字符常量。例如:‘A’,‘b’,‘9’,‘中’
  5. 布尔常量:表示正反概念的两种取值。true,false
  6. 空常量:null。一块固定的内存地址,代表没有任何数据

三、变量

程序运行中内容可以变化的量称为变量。Java中,变量分为局部变量成员变量

1. 变量的创建方式

	// 第一种:先声明数据类型,再赋值
	[数据类型] [变量名称];
	[变量名称] = [数据值];
	// 第二种:声明数据类型的同时赋值
	[数据类型] [变量名称] = [数据值]

2. 局部变量与成员变量的区别

  1. 定义位置
    局部变量:在方法内部
    成员变量:在方法外部,直接写在类中
  2. 作用范围
    局部变量:只适用于方法内部
    成员变量:整个类内都可以使用
  3. 默认值不一样
    局部变量:没有默认值,如果想要使用,必须手动赋值
    成员变量:有默认值,规则参考不同类型数组内元素的初始化
  4. 在内存中的位置
    局部变量:位于栈内存
    成员变量:位于堆内存
  5. 生命周期
    局部变量:随着方法压栈而诞生,随着方法弹栈而消失
    成员变量:随着对象创建而诞生,随着对象被GC回收而消失

三、强制类型转换

1. 强制类型转换的格式

	[范围小的类型] 范围小的变量名 = (范围小的类型) 原本范围大的数据;

2. 强制类型转换的几点注意:

  1. 强制类型转换一般不推荐使用,有可能发生精度损失、数据溢出。
  2. byte/short/char这三种数据类型都可以进行数学运算,例如加法“+”。
  3. byte/short/char这三种类型在运算的时候,都会被先提升成为int类型,然后再计算。
  4. boolean类型不能发生数据类型转换。

另外,对于byte/short/char三种数据类型的赋值操作:

  1. 如果右侧赋值没有超过左侧范围,那么编译器将自动补充强制类型转换语法(byte)/(short)/(char)
  2. 如果右侧赋值超过左侧范围,那么编译器会报错

3. 表达式赋值

在给表达式进行赋值时,如果右侧表达式中全是常量,那么编译器会直接将若干常量表达式直接计算结果。例如

	short result = 5 + 8; 

等号右边全是常量,没有变量参与运算,编译后得到的.class字节码文件中直接就是:

	short result = 13// 右侧的常量结果没有超过左侧范围,所以正确。

这成为编译器的常量优化。注意:一旦表达式中有变量参与,那么就不能进行这种优化了。

相关推荐
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页